Skip to content

Server-side events · Platform reference

X Conversion API checker

X's Conversion API posts web conversions to an X Pixel (event source) ID. Each conversion names an Events Manager event_id and carries identifiers such as twclid, hashed email or hashed phone. When the X Pixel sends the same conversion, it needs a shared conversion_id. Conversions most often fail to attribute because there is no usable identifier (twclid wasn't captured, or only IP/user agent was sent), the event_id belongs to a different pixel, or Pixel and API used different conversion_id values.

Read from the official documentation on 9 November 2026. Sources are listed at the end.

Check your own setup

twclid rides on your landing URL. Paste the curl -sIL output of your ad's tracking link into our redirect chain checker and it shows whether twclid survives every hop, because a stripped twclid is a common reason server conversions don't match. It doesn't validate the X Conversion API JSON, the event_id-to-pixel mapping or the hashing. Our CAPI event checker reads Meta payloads only.

Open the Redirect Chain Checker

Endpoint and authentication

POST https://ads-api.x.com/12/measurement/conversions/{pixel_id}

X Ads API user access token for a handle with AD_MANAGER or ACCOUNT_ADMIN access (3-legged OAuth for other handles). The server-side GTM tag instead sends a Conversion API token generated in Events Manager in the X-Pixel-Token header

Conversion types

The API doesn't take an event name: each conversion carries the Event ID of a conversion event you create in Events Manager. X's server-side GTM guide lists these common conversions, with the GA4 event name that maps to each.

NameWhat it is
PurchaseGA4 event name: purchase
Add to cartGA4 event name: add_to_cart
Begin checkoutGA4 event name: begin_checkout
LeadGA4 event name: generate_lead
Sign upGA4 event name: sign_up
SearchGA4 event name: search
View contentGA4 event name: view_item
Add payment infoGA4 event name: add_payment_info
Page viewGA4 event name: page_view

Required and recommended fields

FieldWhat it needs
conversions[]Array of conversion objects
conversion_timeISO 8601 UTC timestamp, e.g. 2022-02-18T01:14:00.603Z
event_idThe Events Manager Event ID for the conversion type (it identifies the type, not the occurrence). It must belong to the pixel in the URL
identifiers[]At least one of twclid, hashed_email or hashed_phone_number. ip_address and user_agent count only alongside another identifier
conversion_idPer-occurrence dedup key (order ID or UUID), the same value the Pixel sends
value / price_currency / number_items / contents[]Optional commerce fields. contents items take content_id, content_name, content_type, content_price, num_items, content_group_id

Match keys and hashing

KeyNormalise and hash
hashed_emailSHA-256 with no salt. X's server-side GTM guide says to trim whitespace and lowercase before hashing (the X tag does both for plain values)
hashed_phone_numberNormalise to E.164, then SHA-256 with no salt
ip_addressDotted-decimal, not hashed. Can't be the only identifier
user_agentTrim leading and trailing spaces, not hashed. Can't be the only identifier

Click ids

Click idWhere it comes from
twclidX adds twclid to the landing URL after an ad click. Parse it from the query string and send it unhashed in identifiers. The server-side GTM tag stores it in a first-party _twclid cookie, which lasts about 390 days
_twpidFirst-party cookie usually set by the X Pixel. The server-side GTM tag reads it. Not hashed

Deduplication

Time limits and batch sizes

How to test before you trust it

Why events arrive but don't attribute

Sources

Platforms change these rules without notice. If a source says something different from this page, the source wins.

Other platforms

All platforms