All networks
TikTok Ads logo
Tracking reference · Social

TikTok Ads tracking tokens & macros

Tracking on TikTok Ads runs on dynamic macros you drop into your landing-page URL, which TikTok fills in at click time, plus an auto-tagged ttclid that rides along on every click. Appending these macros lets ValidVisit attribute each visit back to its exact sub-source inside TikTok and judge it Valid or Invalid, so you can see which placements actually send real people. The verdict is a report: it judges each visit after it arrives and changes nothing in TikTok Ads Manager.

Cross-check any macro against the network’s official documentation. TikTok Ads official docs →

5
TikTok Ads macros mapped to attribution
2
required for attribution
no-hop
one script, no link rewriting
Valid / Invalid
a verdict on every visit

On TikTok, attribution starts with __CAMPAIGN_ID__ (the one required macro) and narrows down through the optional __AID__ (ad group) and __CID__ (creative) tokens, so you can tell which specific creative and ad group a click came from. The piece most buyers care about is __PLACEMENT__, which separates TikTok's own inventory from TikTok Pangle, the ad network TikTok now calls TikTok Ad Network, and the auto-tagged ttclid click ID, which TikTok stamps onto the URL by itself with no macro to add. Note the distinctive all-caps, double-underscore format (__CAMPAIGN_ID__, __AID__, __CID__) TikTok uses for its placeholders.

Once every click is tied to its placement and campaign, the per-sub-source view tells you where invalid traffic and bots are concentrating. __PLACEMENT__ stops at the placement type and does not identify the app, so the levers are the ones TikTok gives you: add the offending apps' bundle IDs to the block list under Tools (up to 10,000), leave Pangle out under Select Placement when you build the next ad group, since TikTok does not let you change the placement of an existing one, and shift budget toward what is judged valid. ValidVisit never edits your TikTok campaigns; you make every one of those changes manually in TikTok Ads Manager.

MACRO MAP

TikTok Ads macro → ValidVisit param

Campaign ID *campaign
TikTok Ads macro
__CAMPAIGN_ID__
ValidVisit param
vv_campaign_id
Example
1700000001
Ad Group IDadset
TikTok Ads macro
__AID__
ValidVisit param
vv_adset_id
Example
1700000002
Creative IDcreative
TikTok Ads macro
__CID__
ValidVisit param
vv_creative_id
Example
1700000003
Placementplacement
TikTok Ads macro
__PLACEMENT__
ValidVisit param
vv_placement_id
Example
TikTok
Click ID (ttclid) *click
TikTok Ads macro
(auto-tagging)
ValidVisit param
ttclid
Example
EhZ…

* required for TikTok Ads attribution.

TRACKING URL

Ready-to-use TikTok Ads tracking URL

tiktok-ads tracking URL
https://yoursite.com/landing
?utm_source=tiktok-ads
&utm_medium=social
&vv_campaign_id=__CAMPAIGN_ID__
&vv_adset_id=__AID__
&vv_creative_id=__CID__
&vv_placement_id=__PLACEMENT__

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

Using TikTok Ads tokens?

See which TikTok Ads sources send bots.

  • Every visit judged Valid or Invalid, worst source first.
  • Attributed through the TikTok Ads 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

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

What TikTok Ads tokens let you break bots down by

Breakdown the tokens allow
  • Placement

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

Where you can act, in TikTok Ads
  • IP exclusionnot offered
  • Device targetingdocumented
  • OS targetingdocumented
  • Browser targetingnot offered
  • Connection typedocumented
  • Languagedocumented

Tokens last verified against TikTok Ads’s docs on 2026-10-02.

Found a bad Pangle bundle ID? Exclude it in TikTok Ads

The buyer adds bad bundle IDs individually or bulk-uploads an .xlsx (one bundle ID per row, up to 10,000) to the TikTok Ad Network (formerly Pangle) block list, which stops their ads serving on those apps for any ad group with the block list enabled.

Ads Manager > Tools > TikTok Ad Network (or Pangle for some advertisers) brand safety > Block List; activated per ad group via the "Use TikTok Ad Network (or Pangle) block list" toggle under Placements > Advanced Settings
FAQ

TikTok Ads tracking token FAQs

Which token identifies the sub-source I should watch on TikTok?+

__PLACEMENT__ is the key one, because it distinguishes TikTok's own inventory from TikTok Pangle, its third-party app network. Pair it with the required __CAMPAIGN_ID__ and the optional __AID__ and __CID__ to pin a click to a specific ad group and creative.

Do I need a funnel hop or tracking script to use these macros?+

No. These are plain URL parameters appended to your landing-page link, and TikTok substitutes the real values at click time. The ttclid click ID is auto-tagged by TikTok on its own, so there's nothing extra to install.

Where do I add these macros in TikTok?+

Add them to your destination URL when building or editing the ad in TikTok Ads Manager. Once clicks start arriving with the macros populated, ValidVisit attributes and judges each visit, and you act on the results manually in Ads Manager.

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

Judge every TikTok Ads visit — and find the fake ones.

See which TikTok Ads 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