All networks
Adskeeper
Tracking reference · Native

Adskeeper tracking tokens & macros

Adskeeper buys clicks across a wide pool of native widgets, so two clicks from the same campaign can come from very different publishers. Appending these macros to your landing-page URL lets ValidVisit attribute every visit back to its exact widget, then judge each visit Valid or Invalid, with its evidence so you can see which widgets are sending real readers and which are sending invalid traffic.

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

4
Adskeeper macros mapped to attribution
1
required for attribution
no-hop
one script, no link rewriting
Valid / Invalid
a verdict on every visit

On Adskeeper, attribution rides on a handful of URL parameters the platform fills in at click time. The one that matters most for sourcing is {widget_id}, the publisher widget the click came from, and you'll usually pair it with {campaign_id} and {teaser_id} so you can split performance by campaign and creative too. The required token is {click_id}, Adskeeper's auto-generated unique id for each click, which gives ValidVisit a stable key to tie a click to its widget even when everything else looks identical. These are plain query parameters in curly-brace format, no funnel hop or extra hop needed; Adskeeper substitutes the real values as the visitor lands.

Per-widget granularity is the whole point, because Adskeeper's value lives at the widget level, not the campaign level. Once every click is tied to its {widget_id}, ValidVisit reports an invalid share for each widget so you can see exactly which publishers are padding your numbers with bots and IVT. The verdict comes after the visit has landed and never stops a widget from serving. Acting on it is a manual step you take in Adskeeper: open the campaign's Widgets tab and Stop / Block the widgets with a high invalid share, or blacklist the whole site if it's a repeat offender.

MACRO MAP

Adskeeper macro → ValidVisit param

Campaign IDcampaign
Adskeeper macro
{campaign_id}
ValidVisit param
vv_campaign_id
Example
55501
Teaser (Creative)creative
Adskeeper macro
{teaser_id}
ValidVisit param
vv_creative_id
Example
99012
Widget (Publisher)publisher
Adskeeper macro
{widget_id}
ValidVisit param
vv_publisher_id
Example
33044
Click ID *click
Adskeeper macro
{click_id}
ValidVisit param
vv_click_id
Example
ck_77

* required for Adskeeper attribution.

TRACKING URL

Ready-to-use Adskeeper tracking URL

adskeeper tracking URL
https://yoursite.com/landing
?utm_source=adskeeper
&utm_medium=native
&vv_campaign_id={campaign_id}
&vv_creative_id={teaser_id}
&vv_publisher_id={widget_id}
&vv_click_id={click_id}

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

Using Adskeeper tokens?

See which Adskeeper sources send bots.

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

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

What Adskeeper tokens let you break bots down by

Breakdown the tokens allow
  • Widget (Publisher) — The widget / site the click came from — the unit you block in the campaign Widgets tab.

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

Where you can act, in Adskeeper
  • IP exclusiondocumented
  • Device targetingdocumented
  • OS targetingdocumented
  • Browser targetingdocumented
  • Connection typedocumented
  • Languagedocumented

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

Found a bad widget? Exclude it in Adskeeper

The buyer pastes/sets bad widget UIDs into the campaign’s widget filter (block/stop the widget in the Widget Optimization interface, or set widgetsFilterUid="except" + the UID list via API), or creates an auto-blocking rule that disables widgets/sub-sources meeting loss thresholds.

Campaign → Widget Optimization (Selective Bidding) tab; also rule-based auto-blocking (Create Rule) at widget or sub-source level, and API campaign field widgetsFilterUid with filter type "except"
FAQ

Adskeeper tracking token FAQs

Which Adskeeper token identifies the sub-source I should be watching?+

{widget_id}. It maps each click to the specific publisher widget that served your teaser, which is the unit you can actually act on in Adskeeper. {campaign_id} and {teaser_id} add campaign- and creative-level context, but {widget_id} is what ties a verdict to a sub-source you can stop.

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

No. These are ordinary URL query parameters in Adskeeper's curly-brace format, like {widget_id} and {click_id}. You add them to your destination URL and Adskeeper replaces them with the real values on each click. There's no funnel hop, no extra hop, and {click_id} is required so every click carries a unique id.

Does ValidVisit block bad widgets automatically?+

No. ValidVisit attributes each visit to its {widget_id} and reports a verdict after the click arrives. Excluding traffic stays in your hands: open the campaign's Widgets tab in Adskeeper and Stop / Block the widgets with a high invalid share, or blacklist the whole site if needed.

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

Judge every Adskeeper visit — and find the fake ones.

See which Adskeeper 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