adstage
TrackingIntegrations

X Ads Integration

In adstage, you can collect cost data from X (formerly Twitter) Ads and send conversions such as purchases and checkouts back to X. X Ads integration is performed in the Conversion API tab.

1. Integration Overview

When you connect an X account in Integrations > Ad Channel Integration > X Ads, three capabilities work together.

FeatureDescription
Cost collectionSpend, impressions, and clicks per campaign, collected automatically every 4 hours
Conversion sendingConversions collected by adstage (such as purchases) are sent to X for campaign optimization
Click attributionClicks and conversions arriving through a tracking link are reported under the twitter.ads channel

2. Connecting Your Account

  1. Click Integrate in the Conversion API tab. An X login window opens in a new window.

  2. Sign in with an X account that manages the ad account and approve the requested permissions.

  3. Once approved, the ad accounts you can access are listed. Select the ad account you want to collect cost data for.

Please note

You must approve with an X account that has permission to manage the ad account. If the account lacks permission, the ad account list will be empty.

3. Setting Up Conversion Sending

When conversion sending is enabled, events such as purchases and checkouts are forwarded to X and used for campaign optimization.

  1. Turn on the Send conversions to X switch.

  2. Enter the Pixel ID. You can find it under Events Manager > X Pixel in X Ads Manager.

  3. Add event mappings. On the left, enter the adstage event name (for example purchase); on the right, enter the X event ID.

X event IDs follow the format tw-{pixel}-{code} and differ per event. In X Ads Manager, open Events Manager > Events, select the event, and check the Conversion API tab.

Please note

When creating a new event on X, choose Define with code so that the Conversion API can be used. Choosing Define with URL rules will prevent conversion sending from working. You do not need to add any code to your site — adstage sends the events from its servers.

Recommended mappings:

adstage eventX event typeDescription
purchasePurchaseCompleted purchase
begin_checkoutAdd to cartCheckout started. Helps optimization learn when purchase volume is low

Unlike Meta or TikTok, X does not provide URL macros. Only the click ID (twclid) is appended automatically to the landing URL on click. Campaign information must therefore be included in the link itself.

In Deep Links > Create, select X Ads (Twitter) as the ad channel to choose a campaign. Use one of the three approaches below depending on your needs.

If you do not need per-campaign breakdown

Leave the campaign field empty and reuse a single link across all X ads. Cost is still collected per campaign, and channel-level reporting (twitter.ads) aggregates spend, clicks, conversions, and ROAS correctly. This is the simplest approach.

If the campaign already exists

Select it from the campaign dropdown. Campaigns saved as drafts on X also appear, marked as drafts.

If the campaign does not exist yet

Click Enter campaign name manually and decide the name in advance. Then create the campaign on X with exactly the same name and paste the link while creating it.

Put the generated link in the website URL field of your X ad.

Please note

The campaign name must match X exactly for cost and conversions to be combined into a single row. Even a one-character difference splits them into two rows in reports. Renaming a campaign on X after publishing will break alignment with existing data, so create a new link if you rename it.

What about ad group, creative, and keyword fields?

Leave them empty. X cost data is collected at the campaign level only, so adding ad group or creative values splits conversions into finer rows while cost stays at the campaign level, making reports look inconsistent. The keyword field does not apply to X.

Fill in Creative and create one link per creative only if you specifically want to compare conversions by creative.

5. What to Check When Creating a Campaign

Depending on the campaign objective, the website URL field may not be available.

  • Website traffic / Conversions objectives: a website URL field is available for the tracking link.
  • Reach (impressions) objective: there is no URL field. The campaign promotes a post as-is, so the tracking link must be placed in the post body to measure clicks.

To use conversion sending for optimization, set the objective to Conversions. Reach campaigns do not use conversion signals for optimization.

6. Collected Data

ItemDescription
Collection intervalAutomatically every 4 hours
Data levelCampaign level
MetricsSpend, impressions, clicks
Channel nametwitter.ads

7. Cautions

Please note the following.

  • Numbers may differ between X Ads and adstage due to differences in aggregation timing and timezone.
  • Revoking permissions on the X account stops both cost collection and conversion sending.
  • If an ad is in the Halted state, no impressions occur and no cost data accumulates. Check the budget and payment method settings.
  • Draft campaigns are not collected. Data accumulates only after publishing.

Table of Contents