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 score it 0-100 for traffic quality, so you can see which placements actually send real people. ValidVisit reports and scores only after the click arrives; it never blocks anything.
Cross-check any macro against the network’s official documentation. TikTok Ads official docs →
On TikTok, attribution starts with __CAMPAIGN_ID__ (the one required macro) and narrows down through the optional __AID__ (ad group) and __CID__ (ad) tokens, so you can tell which specific ad and ad group a click came from. The piece most buyers care about is __PLACEMENT__, which separates TikTok's own in-feed inventory from its Pangle audience 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. TikTok is a walled platform, so you can't blacklist individual publishers, but ValidVisit's scores point you to the honest levers: deselect Pangle when its inventory scores worst, turn off the weak placement controls, shift budget toward what scores valid, and file refund claims on the spend that delivered IVT. ValidVisit only reports the scores; you make every one of those changes manually in TikTok Ads Manager.
| Token | TikTok Ads macro | ValidVisit param | Example |
|---|---|---|---|
| Campaign ID *campaign | __CAMPAIGN_ID__ | vv_campaign_id | 1700000001 |
| Ad Group IDadset | __AID__ | vv_adset_id | 1700000002 |
| Ad IDad | __CID__ | vv_ad_id | 1700000003 |
| Placementplacement | __PLACEMENT__ | vv_placement_id | fyp |
| Click ID (ttclid) *click | (auto-tagging) | ttclid | EhZ… |
__CAMPAIGN_ID__vv_campaign_id__AID__vv_adset_id__CID__vv_ad_id__PLACEMENT__vv_placement_id(auto-tagging)ttclid* required for TikTok Ads attribution.
https://yoursite.com/landing?utm_source=tiktok-ads&utm_medium=social&vv_campaign_id=__CAMPAIGN_ID__&vv_adset_id=__AID__&vv_ad_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 score. No funnel hop.
The buyer adds bad bundle IDs individually or bulk-uploads an .xlsx (one bundle ID per row, up to 10,000) to the Pangle Block List, which stops their ads serving on those apps for any ad group with the block list enabled.
__PLACEMENT__ is the key one, because it distinguishes TikTok's in-feed inventory from its Pangle audience network, where most IVT concentrates. Pair it with the required __CAMPAIGN_ID__ and the optional __AID__ and __CID__ to pin a click to a specific ad group and ad.
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.
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 scores each visit 0-100, and you act on the results manually in Ads Manager.
See which TikTok Ads publishers and placements send real buyers vs. bots.
Free trial at launch · just your email
One script · no cookies · no fingerprinting · raw IP never stored