X (Twitter) Ads UTM tracking
X Ads (formerly Twitter Ads) sends paid clicks through the t.co wrapper, which obscures the originating campaign. Tagging destination URLs with UTM parameters is the reliable way to attribute paid X traffic. This page gives a recommended structure and explains how to keep paid X distinct from organic posts.
Recommended structure
X Ads Manager lets you set a destination URL per ad; append UTMs there. Keep utm_source stable (many teams standardize on twitter for historical continuity, some switch to x — pick one and document it).
- utm_source=twitter (or x — choose one consistently)
- utm_medium=paid-social
- utm_campaign=<campaign-name>
- utm_content=<creative/tweet-variant label>
The t.co wrapper
X wraps outbound links in t.co for measurement and safety. The wrapper means the referrer alone cannot tell you which ad or which paid vs organic context produced the click. UTM parameters travel through the redirect to your landing page, so attribution survives the wrapper.
Worked example:
https://example.com/?utm_source=twitter&utm_medium=paid-social&utm_campaign=spring-promo&utm_content=video-a
Paid vs organic on X
Reserve utm_medium=paid-social for ads. Organic tweets you tag (for example in your bio link) should use a different medium such as social, so promoted spend is never mixed with free reach in your reports.
How it appears in analytics and logs
A visit with utm_source=twitter (or x) and utm_medium=paid-social confirms a paid X ad click. Untagged paid clicks arrive via t.co and blur into a single 'twitter' referral with organic posts.
Diagnostic use case
Attribute paid X (Twitter) ad clicks distinctly from organic tweets and from t.co-wrapped links that hide the campaign.
What WebmasterID can help detect
WebmasterID attributes utm_source=twitter paid visits to your X campaigns server-side, separating paid X spend from organic post traffic even behind the t.co wrapper.
Common mistakes
- Relying on the t.co referrer instead of UTM tags.
- Switching between utm_source=twitter and x mid-campaign.
- Using the paid medium on organic tweets.
- Encoding a handle or username into UTM values.
Privacy and accuracy notes
Keep X Ads UTM values to campaign and creative labels only. Never encode a handle or any individual. UTM values are public in the address bar.
Related pages
- X (Twitter) campaign tracking with UTM
X wraps outbound links in its t.co shortener, which commonly strips the web referrer — so without UTM tags, X clicks often land in direct. This page gives a recommended structure, explains why t.co makes tagging essential, and advises picking one utm_source convention (x or twitter) and never mixing them.
- Meta Ads UTM tracking (Facebook & Instagram ads)
Meta Ads (Facebook and Instagram paid placements) lets you attach UTM parameters at the ad level through the URL Parameters field or the destination URL. This page gives a recommended utm_source/utm_medium/utm_campaign structure, shows Meta's dynamic URL parameters such as {{campaign.name}}, and flags the cross-network pitfalls that blur Facebook and Instagram in your reports.
- UTM casing and consistency
Casing is the single most common UTM data bug. Because tools match values as exact strings, utm_source=Reddit and reddit are two separate rows, so one campaign quietly fragments. This page makes the lowercase rule concrete and shows how to deepen it into real consistency.
- Attribution analytics
Credit paid X clicks correctly even behind the t.co wrapper.
Sources and verification notes
- X Business — About link tracking and t.coHow X wraps links and supports destination URL tracking.
Last reviewed 2026-06-24. Facts are checked against primary/official sources where available; uncertain specifics are marked “Data not yet verified” rather than guessed.