Adsterra sends traffic through its own click URLs, and the network exposes a set of double-hash macros you drop straight into your landing-page link. Append the macros below and every click arrives at ValidVisit already stamped with the exact placement it came from, so we can attribute the visit to the right Adsterra placement and score it 0-100 for traffic quality.
Cross-check any macro against the network’s official documentation. Adsterra official docs →
On Adsterra the macro that ties a click back to the source you actually care about is ##PLACEMENT_ID##, which identifies the specific placement serving your ad; ##ZONE_ID## and ##BANNER_ID## narrow it further down to the zone and the creative, while ##CAMPAIGN_ID## keeps everything grouped by campaign. The required ##SUB_ID_SHORT(action)## macro carries Adsterra's own click identifier, so each visit lands with a unique click id plus its placement attached. Note the format quirk: every Adsterra macro is wrapped in double hashes (##...##) in all-caps, and these are plain URL parameters, so nothing here needs a funnel hop or an extra hop.
Once each click is tied to its ##PLACEMENT_ID##, the data stops being a vague campaign-level average and becomes per-placement. ValidVisit reports and scores only, after the click arrives, so when a placement keeps sending invalid traffic or bots, you see exactly which placement / domain is responsible and can act on it yourself: open the campaign, go to block placements, and add the offending placement IDs to your block list in Adsterra's campaign settings. ValidVisit flags them, but the exclusion is always a manual step you take in Adsterra's own dashboard.
| Token | Adsterra macro | ValidVisit param | Example |
|---|---|---|---|
| Click ID (Sub ID) *click | ##SUB_ID_SHORT(action)## | vv_click_id | a1b2c3d4e5f6 |
| Campaign ID *campaign | ##CAMPAIGN_ID## | vv_campaign_id | 1843217 |
| Placement IDplacement | ##PLACEMENT_ID## | vv_placement_id | 5582910 |
| Zone IDpublisher | ##ZONE_ID## | vv_publisher_id | 4471203 |
| Banner ID (Creative)creative | ##BANNER_ID## | vv_creative_id | 990321 |
##SUB_ID_SHORT(action)##vv_click_id##CAMPAIGN_ID##vv_campaign_id##PLACEMENT_ID##vv_placement_id##ZONE_ID##vv_publisher_id##BANNER_ID##vv_creative_id* required for Adsterra attribution.
https://yoursite.com/landing?utm_source=adsterra&utm_medium=push&vv_click_id=##SUB_ID_SHORT(action)##&vv_campaign_id=##CAMPAIGN_ID##&vv_placement_id=##PLACEMENT_ID##&vv_publisher_id=##ZONE_ID##&vv_creative_id=##BANNER_ID##Append these params to your landing-page URL — Adsterra fills the macros at click time, so every visit arrives attributed and ready to score. No funnel hop.
The buyer either toggles the State switch OFF next to underperforming placement IDs on the Statistics page (bulk actions supported), or pastes the comma-separated placement IDs into the Blacklist field in the campaign’s Advanced Settings (also possible in bulk via API v3).
##PLACEMENT_ID## is the one that names the specific placement serving your ad. Pair it with ##ZONE_ID## and ##BANNER_ID## if you want to drill down to the zone or creative level, and keep ##CAMPAIGN_ID## so everything stays grouped by campaign.
No. The Adsterra macros (##SUB_ID_SHORT(action)##, ##CAMPAIGN_ID##, ##PLACEMENT_ID## and the rest) are plain URL parameters appended to your destination link. There is no funnel hop, no extra hop, and no script to install.
Add the macros to your campaign's target URL when you set up or edit the campaign in Adsterra. When ValidVisit flags a placement / domain sending invalid traffic, go to your campaign, open block placements, and add those placement IDs to the block list in Adsterra's campaign settings.
See which Adsterra 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