ValidVisit scores every click 0–100, then rolls that score up using each ad network’s own tokens — so you can see exactly which publishers, placements and widget zones send bots and invalid traffic. The network isn’t the problem; a handful of its sub-sources usually are.
Illustrative example — the same 0–100 score, per source, worst first.
Every click is weighed against more than a hundred independent data points and reduced to a single, sortable 0–100 quality score.
Each data point is combined rather than checked in isolation, so a genuine human almost never trips enough of them to be flagged — and bots that beat one rarely beat the rest.
The detection model is ours and stays that way. What you get is a clear verdict on every click — not a single brittle rule you can game, and not an unexplained number you can't act on.
Every verdict maps to the campaign, publisher and placement that sent the click — so you know exactly which source to cut.
A campaign-level invalid rate tells you something is wrong; it doesn’t tell you what to cut. Bots and click farms concentrate on specific publishers, placements and widget zones — the sub-sources you actually buy inside a network. So that’s where we roll the score up. Creative- and ad-level dimensions describe what the ad looked like, which says nothing about whether a click was human.
Each network exposes different tokens. Here’s the bot- and invalid-traffic granularity we get from each — and every per-click id lets us run velocity and repeat-source checks.
| Network | Bot / invalid-traffic breakdown | Per-click |
|---|---|---|
| Taboola | Site (Publisher) | |
| Outbrain | Publisher ID | |
| MGID | Widget (Publisher) | |
| Revcontent | Widget IDAdvertiser Targets | |
| MediaGo | Site ID | |
| Yahoo Native (DSP / Gemini) | Campaign + per-click level | |
| Content.ad | Domain ID | — |
| Adsterra | Zone IDPlacement ID | |
| Kadam | Site ID | |
| Adskeeper | Widget (Publisher) |
| Network | Bot / invalid-traffic breakdown | Per-click |
|---|---|---|
| PropellerAds | Zone IDSubzone ID | |
| Adsterra | Zone IDPlacement ID | |
| RichAds | Publisher IDSite ID | |
| EvaDav | Zone ID | |
| Pushground | Supply Source | |
| RollerAds | Zone IDFeed ID | |
| Mondiad | Zone IDSub ID | |
| EZmob | Publisher IDZone ID | |
| Push.House | Traffic SourceFeed ID | |
| OnClickA | Source Domain | |
| MegaPush | Feed ID | |
| DatsPush | Site ID |
| Network | Bot / invalid-traffic breakdown | Per-click |
|---|---|---|
| PropellerAds | Zone IDSubzone ID | |
| PopAds | Website IDCategory ID | |
| PopCash | Site ID | |
| Adsterra | Zone IDPlacement ID | |
| RichAds | Publisher IDSite ID | |
| Adcash | Zone (traffic source) | |
| Clickadu | Zone ID | |
| Zeropark | Source IDTarget ID | |
| ExoClick | Site IDZone ID | |
| TrafficStars | Site IDAd Spot ID | |
| AdMaven | Sub-source / Site ID | |
| HilltopAds | Zone ID | |
| ClickAdilla | Spot / Zone ID |
| Network | Bot / invalid-traffic breakdown | Per-click |
|---|---|---|
| ExoClick | Site IDZone ID | |
| TrafficJunky | Publisher Site NameSpot / Placement ID | |
| JuicyAds | Site IDAdZone ID | |
| Bidvertiser | Source ID | |
| TrafficFactory | Zone ID |
| Network | Bot / invalid-traffic breakdown | Per-click |
|---|---|---|
| Meta Ads | Placement | |
| TikTok Ads | Placement | |
| Snapchat Ads | Site Source Name | |
| Pinterest Ads | Campaign + per-click level | — |
| Reddit Ads | Campaign + per-click level | |
| LinkedIn Ads | Account ID | — |
| Quora Ads | Campaign + per-click level | — |
| Network | Bot / invalid-traffic breakdown | Per-click |
|---|---|---|
| Google Ads | Campaign + per-click level | |
| Microsoft Ads (Bing) | Campaign + per-click level | |
| Yandex Direct | Placement / SourcePosition | |
| Baidu Ads (Search) | Ad Position / Rank |
Install one script and watch the bot sources surface — every click scored 0–100.
Free trial at launch · lock in early-access pricing
One script · raw IP never stored · GDPR legitimate-interest basis