The X Pixel and the X Conversions API
The X Pixel (still loaded from static.ads-twitter.com, from the Twitter days) is a script on your store that reports page views and conversion events to X Ads. Conversion campaigns, audiences and bidding all lean on those events.
Shopify has no X sales channel that sends conversions for you, so the pixel usually goes in through a custom pixel under Settings → Customer events, or through an app. Either way it runs in the shopper's browser.
The X Conversions API is the server-side route: your server posts conversions to X's Ads API. X's own docs say it requires a developer account with Ads API access, and tokens from a user with Ad manager or Account administrator access to the ad account (checked October 2026). That extra step is why many tracking apps leave X out.
Where X conversions get lost
- Ad blockers and privacy browsers that block the X Pixel script. When it doesn't load, the purchase never reaches X.
- Shoppers who tap an ad inside the X app, browse in its in-app browser, and buy later in Safari or Chrome, so click and sale sit in different browsers.
- A missing click id: if the twclid isn't on the landing URL, or a redirect drops it, X has less to match the sale on.
- Cookie banners: depending on your consent setup, the pixel may wait for consent before it loads.
What X uses to match a purchase
X asks for at least one identifier: the click id (twclid), an email address or a phone number. IP address and user agent only count next to one of those, never on their own. The more identifiers you send, the better X can match.
- twclid: the X click id on your landing URL. Settl saves it at landing and sends it with the order, unhashed, as X asks.
- Email, hashed with SHA-256 after trimming spaces (Settl also lowercases it).
- Phone number in E.164 format (+31612345678), hashed with SHA-256.
- IP address and user agent from the visit, alongside the identifiers above.
- Order value, currency, number of items and the products in the order.
Counting each event once
X deduplicates on conversion_id: when the pixel and the Conversions API report the same event with the same conversion_id, X keeps one. X's docs also say to use the same event you created for the pixel, not a separate one.
Settl sends product views, add-to-carts and searches from the X Pixel with a conversion_id, and the server copy carries that same id. The purchase goes to X from the server only, once per paid order. If another app or a hand-made custom pixel also sends a purchase event to the same pixel, you can count sales twice: keep one purchase source, and compare X's totals with your Shopify orders.
How to check it in X Ads
In X Ads Manager, open Tools → Events Manager, select your pixel and look at the Purchase event's activity. Place a test order after clicking one of your ads and check that it shows up with the right value.
Then compare a week of X conversions with the Shopify orders that came from X. A large gap usually means the click id isn't reaching your store. Settl's hourly tracking health check flags ad visits that land with an empty or template click id, per platform.
Common mistakes
- Creating a new Conversion API event instead of reusing the pixel's event, so pixel and server never deduplicate.
- Tokens from a user without Ad manager or Account administrator access, so X rejects the requests.
- Sending server events with only IP and user agent; X needs a click id, email or phone with them.
- Leaving value and currency off the purchase, so X can't report revenue or ROAS.