All networks
X Ads (Twitter)
Tracking reference · Social

X Ads (Twitter) tracking tokens & macros

X Ads is the most minimal network in this entire directory: it has exactly one token, an auto-appended click identifier called twclid, and nothing else. Where Google, Meta, and most other platforms give you a stack of campaign, ad group, and creative macros to type in, X provides none of that — twclid attaches itself automatically, full stop. ValidVisit still attributes and judges each visit Valid or Invalid, but the campaign- and ad-level breakdown has to come from your own UTM parameters rather than anything X supplies.

Cross-check any macro against the network’s official documentation. X Ads (Twitter) official docs →

1
X Ads (Twitter) macros mapped to attribution
1
required for attribution
no-hop
one script, no link rewriting
Valid / Invalid
a verdict on every visit

There's genuinely nothing else to configure here. twclid is required, and it isn't a macro you place in a tracking template the way {campaign_id} or {{AD_ID}} work on other networks — X appends it to the destination URL automatically, the same underlying pattern as Google's gclid or Meta's fbclid. X documents no campaign ID, ad group ID, ad ID, or creative ID macro at all, so if you want that level of detail in your own reporting you have to build it yourself, typically by appending your own UTM parameters (utm_campaign, utm_content, and so on) alongside twclid on the same destination URL. ValidVisit reads whatever's present — twclid for the click-level identity, your own UTM values for the sub-source breakdown — and combines them into the attribution and the verdict.

Because X itself doesn't hand you a campaign or ad identifier, the sub-source picture only exists if you build it into your own UTM structure before launch — skip that step and every visit collapses into one undifferentiated X number no matter how many campaigns are actually running. ValidVisit will judge whatever granularity you give it, but it has no reach into X's own ad platform and can't pause a campaign or reallocate spend on its own; it only ever detects, judges, and reports. If your UTM-tagged breakdown shows a specific campaign or ad group with a consistently higher invalid share, the fix is manual: pause that campaign, tighten its targeting, or shift budget toward the ones whose traffic holds up, all from inside X Ads Manager itself.

MACRO MAP

X Ads (Twitter) macro → ValidVisit param

Click ID (twclid) *click
X Ads (Twitter) macro
(auto-tagging)
ValidVisit param
twclid
Example
abc123xyz

* required for X Ads (Twitter) attribution.

TRACKING URL

Ready-to-use X Ads (Twitter) tracking URL

x-ads tracking URL
https://yoursite.com/landing
?utm_source=x-ads
&utm_medium=social

Append these params to your landing-page URL — X Ads (Twitter) fills the macros at click time, so every visit arrives attributed and ready to judge. No funnel hop.

Using X Ads (Twitter) tokens?

See which X Ads (Twitter) sources send bots.

  • Every visit judged Valid or Invalid, worst source first.
  • Attributed through the X Ads (Twitter) tokens above, down to the placement.
  • Works beside your tracker, with nothing added to the click path.

Just your email · no card · unsubscribe anytime · privacy policy

X Ads (Twitter) traffic quality →
deal-alerts.example71% invalid
zone 447123% invalid
premium-news.example2% invalid
WHAT IT JUDGES BY

What X Ads (Twitter) tokens let you break bots down by

Breakdown the tokens allow

Campaign level only: X Ads (Twitter) passes no publisher, zone or placement token, so invalid traffic is attributed to the campaign and, where a click id exists, to the click.

Carries a per-click id, stored with each visit so a verdict traces back to the click.

Where you can act, in X Ads (Twitter)
  • IP exclusionnot offered
  • Device targetingdocumented
  • OS targetingdocumented
  • Browser targetingnot offered
  • Connection typedocumented
  • Languagedocumented

Tokens last verified against X Ads (Twitter)’s docs on 2026-10-02.

Found a bad placement? Exclude it in X Ads (Twitter)

The buyer deselects the optional placements (profiles, search results, replies) in the ad group, or, in a pre-roll views campaign, types the bad publishers’ @handles under Excluded X accounts on the Targeting page (max 50 handles for standard categories, 5 for Curated Categories) — X documents no bulk list upload

Both live in the Ads Manager campaign-creation flow: in a website traffic campaign the ad group step lists the placements (Home timelines, Profiles, Search Results, Replies), and all but Home timelines can be deselected; for pre-roll views campaigns the Targeting page has an "Excluded X accounts" section for blocking specific @handles
FAQ

X Ads (Twitter) tracking token FAQs

Why does X only have one token?+

X's ad platform simply doesn't document campaign, ad group, or creative macros the way most networks do. twclid, the auto-appended click ID, is the only one it provides — everything else has to come from your own tagging.

How do I get campaign-level detail if X doesn't provide a macro for it?+

Append your own UTM parameters (utm_campaign, utm_content, etc.) to the same destination URL alongside twclid. ValidVisit reads both together, using twclid for click identity and your UTM values for the sub-source breakdown.

Do I need to add twclid manually?+

No — X appends it automatically, the same pattern as Google's gclid or Meta's fbclid; its help centre describes Click ID as automatically appended in the URL. There's no macro to type in for it. Point the ad straight at your landing page, because X warns that an intermediate hop strips twclid off the URL.

Is X Ads (Twitter) traffic real? See how ValidVisit judges every X Ads (Twitter) visit for bot traffic.
deal-alerts.example71% invalid
zone 447123% invalid
premium-news.example2% invalid

Judge every X Ads (Twitter) visit — and find the fake ones.

See which X Ads (Twitter) publishers and placements send real buyers vs. bots.

Just your email · no card · unsubscribe anytime · privacy policy

Join the waitlist with just your email · 7-day trial at launch

One script · no cookies · no device IDs · raw IP never stored