Judge every Adskeeper native visit by widget_id, find the widgets sending invalid traffic, and block them in the Widget Optimization tab.
widget in AdskeeperThe 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.
Adskeeper is a self-serve native advertising platform that sells clicks through a CPC auction, with campaign types for product promotion, content promotion, push notifications and search feed. Its unit of optimization is the widget: the campaign’s Widget Optimization tab, also called Selective Bidding, lists each widget and the sources under it, and lets you change a widget’s CPC multiplier or block it. Adskeeper passes {widget_id} on every click, plus {teaser_id}, {campaign_id} and a {click_id} for postback matching. ValidVisit captures them on arrival and judges every visit Valid or Invalid with its evidence, so you act on the exact widgets rather than the campaign average.
Adskeeper’s own optimization advice runs on conversions: review widgets in selective bidding every day, lower the coefficient where conversion cost runs over plan, and consider disabling a widget once it has spent twice your target conversion cost without the expected results. That catches dead widgets, but only after each one has spent, and a conversion report can’t tell a widget sending automated visits from one sending real people who weren’t interested.
Invalid visits rarely spread evenly across a campaign. They gather in particular widgets, sometimes in one source under a widget that otherwise performs. Because {widget_id} rides on every click, ValidVisit attributes each visit’s verdict to its widget from the first visits, so a widget with a high invalid share can be blocked outright, while one whose visits are valid but don’t convert is often better handled with a lower multiplier.
{widget_id}) invalid shareRank active {widget_id} values by invalid share. Widgets well above your campaign baseline are block candidates in the Widget Optimization tab.
A widget whose visits are judged valid but don’t convert is sending real people. The CPC multiplier, 1.0 by default, lets you pay less for that widget instead of losing it; Adskeeper keeps the result inside the regional minimum and maximum CPC.
Auto-blocking rules wait for a click or spend threshold, with Adskeeper suggesting 2–3× your target CPA for a widget and 1–2× for a source, then judge on conversion metrics such as Conversion Cost or ROI. Check a widget’s invalid share while it is still spending toward that threshold.
Invalid share broken down by:
{widget_id}The widget / site the click came from — the unit you block in the campaign Widgets tab.Per-click id: Adskeeper passes a unique click id, and ValidVisit stores it with each visit, so a verdict traces back to the click in Adskeeper’s own reports.
Compare bot & invalid-traffic breakdown across every ad network →See your own Adskeeper sub-sources judged this way.
Each Adskeeper macro maps to a normalized parameter, so every judged visit is pinned to the right campaign, creative and publisher.
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}| Token | Adskeeper macro | Maps to | Identifies |
|---|---|---|---|
| Campaign ID | {campaign_id} | campaign_id | campaign |
| Teaser (Creative) | {teaser_id} | creative_id | creative |
| Widget (Publisher) | {widget_id} | publisher_id | publisher |
| Click ID | {click_id} | click_id | click |
{campaign_id}{teaser_id}{widget_id}{click_id}Macros checked against Adskeeper’s own documentation on 2026-10-02. Adskeeper docs
The verdict works the same way on every network. ValidVisit never changes your Adskeeper account: you make the exclusion there yourself. How the verdict works →
Open the campaign’s Widget Optimization (Selective Bidding) tab and block the widget, or a single source under it. Through the API, PATCH the campaign’s widgetsFilterUid with an editing method (include or exclude), the filter type "except" and the widget UIDs; a source is sent as the UID, the letter s and its sub-ID.
Yes. Create Rule in the Widget Optimization tab sets up auto-blocking for widgets or sources: a trigger threshold, a conversion metric and condition, a timeframe such as Last 7 Days, and the action Block or Block otherwise unblock. The Rule Set option adds a ready mix of auto-blocking and auto-bidding rules, and deletes any rules already on the campaign.
{click_id} is what the postback returns, so conversions match the click. {widget_id} is the widget, the unit you block; {teaser_id} and {campaign_id} add ad and campaign detail. Adskeeper supports only its own macros in tracking links; others on its list include {geo}, {geo_region}, {click_price} and {title}.
Weighing a blocker for native traffic? How ValidVisit compares to Opticks, PureGuard and Adscore.
See which publishers and placements send real buyers vs bots — every visit judged Valid or Invalid, worst first.
Join the waitlist with just your email · 7-day trial at launch
One script · no cookies · no device IDs · raw IP never stored