Not all ROIads traffic is equal. ValidVisit scores every visit 0–100 and pins it to the exact zone that sent it — so you can tell real humans from bots and invalid clicks, worst zones first.
source in ROIadsThe buyer pastes the bad source IDs into the campaign’s Sources Blacklist field in Advanced Settings (or restricts delivery to a whitelist of good ones), optionally using per-source micro bidding to down-bid instead of fully cutting a source.
ValidVisit reports the device, OS, browser — down to the version — plus the language and ISP behind every flagged visit, and ROIads supports OS version, browser version, language, device type and connection type targeting. The segments we flag are segments you can exclude.
ROIads sells push and pop inventory and reports it at two levels: a {publisher_id} naming the supply partner behind a click and a {site_id} naming the individual placement inside it, alongside a {click_id}, a {campaign_id}, a {campaign_name} and a {creative_id}. That second level is what makes the network tractable, because push volume is rarely uniformly good or bad across a partner — subscriber lists are assembled placement by placement, and the quality of each follows how it was collected. A list built from genuine opt-ins on a real site behaves nothing like one seeded through incentivised prompts or automated subscription, yet both deliver under the same partner and the same reporting line. The complication is that push clicks give you very little to judge them by on the surface: the visitor did not go looking for your offer, arrived from a notification rather than a page, and a short session is the norm rather than the warning sign. ValidVisit scores each visit against 100+ data points covering the network the click came from, the device behind it, and how the session behaves once it lands, resolving to a single 0–100 quality score attributed down to the {site_id}. That is what lets a genuinely low-intent push subscriber score differently from an automated click that arrived the same way.
On push inventory the root variable is how a subscriber list was built, and it propagates into everything downstream. Lists assembled from genuine opt-ins on real sites produce people who are uninterested more often than not but who are unambiguously people. Lists seeded through incentivised prompts, deceptive permission dialogs or outright automated subscription produce volume that looks identical in the platform’s reporting — same partner, same format, same delivery numbers — and behaves nothing alike on arrival. Because a placement’s collection method tends to be consistent over time, this is one of the few invalid-traffic patterns that is genuinely stable: a {site_id} that scores badly usually keeps scoring badly, which makes the decision to cut it unusually safe compared with formats where quality swings week to week.
The second pattern is partner averages concealing placement problems. A {publisher_id} bundles many placements, and a supply partner whose aggregate score sits near your baseline will frequently turn out to hold one or two {site_id} values carrying nearly all of its invalid volume, offset by placements that are fine. Acting at the partner level in that situation is a choice between losing good inventory and keeping bad — which is why the placement tier, not the partner tier, is where the useful decisions live on this network.
The third is automation presenting itself as a real browser, which is the pattern the pop side of ROIads contributes most. Click volume generated by tooling and stripped-down browser builds fails to hold together across the signals: the connection characteristics, the device profile and the on-page activity do not agree with the operating system and browser the session claims. Pop clicks already travel an extra hop before landing on your page, and the longer that path, the more places an inconsistency has to surface. ROIads reports the device, OS, OS version, browser, browser version, language and carrier behind its clicks, which is an unusually complete set — so a placement whose declared population disagrees with how those visits actually behave is something you can read directly rather than infer.
{site_id} within one {publisher_id}Group your ValidVisit report by {publisher_id}, then break each partner down by {site_id}. This is the first cut to make on ROIads and usually the most productive: a partner whose overall score looks acceptable while its volume concentrates in a few very weak placements is the standard shape, and it argues for placement-level entries in the Sources Blacklist rather than cutting the partner.
Because a push placement’s subscriber list is collected the same way week after week, its score profile should be steady. A {site_id} that has scored poorly across several weeks is showing you a structural collection problem rather than a bad run, and it is safe to cut. One that degrades suddenly is worth a closer look before acting — the list may have been topped up from a different source, which is a different decision.
ROIads reports device, OS and version, browser and version, language and carrier — more than most push networks. Use it. A {site_id} whose declared population disagrees with what the visits actually do on the page, such as a stated mobile audience whose sessions never register touch interaction, is a direct reading rather than an inference, and it is among the fastest routes to a placement worth blocking.
ROIads supports per-source micro bidding alongside the blacklist, which gives you a middle option the score profile can choose between. A placement whose visits cluster at moderate scores is sending real subscribers with weak intent, and down-bidding keeps the reach at a price that reflects it. A placement with a heavy tail of very low scores is sending automation, where a lower bid simply buys the same thing cheaper and the blacklist is the right lever.
ROIads itself isn’t the problem — bots and invalid traffic concentrate in a handful of its sub-sources: the publisher, site or zone, and the placement or widget within it. So we roll the score up by those ROIads tokens, not by creative (which says nothing about whether a click was human).
Bought as one ROIads line, a buy reads as a single number. Scored per sub-source, a spread like this illustration runs from 93 down to 22 — the worst is nearly all bots. That’s the leak a blended average hides.
Illustrative: ROIads traffic scored 0–100 per sub-source, worst first — down to the placement you buy.
Bot / invalid-traffic score broken down by:
{publisher_id}Bot / invalid-traffic score broken down by:
{site_id}Per-click id: ROIads passes a unique click id, so we also run velocity, deduplication and repeat-source checks on every visit.
Compare bot & invalid-traffic breakdown across every ad network →See your own ROIads sub-sources scored this way.
Each ROIads macro maps to a normalized parameter, so every scored click is pinned to the right campaign, creative and publisher.
https://yoursite.com/landing?utm_source=roiads&utm_medium=push&vv_click_id={click_id}&vv_campaign_id={campaign_id}&vv_campaign_name={campaign_name}&vv_publisher_id={publisher_id}&vv_placement_id={site_id}&vv_creative_id={creative_id}| Token | ROIads macro | Maps to | Identifies |
|---|---|---|---|
| Click ID | {click_id} | click_id | click |
| Campaign ID | {campaign_id} | campaign_id | campaign |
| Campaign Name | {campaign_name} | campaign_name | campaign |
| Publisher ID | {publisher_id} | publisher_id | publisher |
| Site ID | {site_id} | placement_id | placement |
| Creative ID | {creative_id} | creative_id | creative |
{click_id}{campaign_id}{campaign_name}{publisher_id}{site_id}{creative_id}Every visit 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 visit — 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.
Scoring and attribution are the means — the point is cutting the ROIads traffic that wastes your spend. Here’s how ValidVisit gets you a list you can act on.
You buy ROIads clicks; what arrives are visits. ValidVisit scores each one 0–100 so real humans stand out from bots and invalid traffic — one script, no funnel hop, no fingerprinting.
Every scored visit is tied to the exact ROIads source and zone via the network’s own tokens — so the bad traffic has an address, not just a headline percentage.
You get the worst offenders as a ready-to-use list plus postbacks to your tracker — so you can exclude them in ROIads and put your next dollar behind the traffic that converts.
It is manual. ValidVisit scores every visit and surfaces the {publisher_id} and {site_id} values carrying weak quality scores. You then paste those source IDs into the campaign’s Sources Blacklist under Advanced Settings, or restrict delivery to a whitelist of the good ones. One practical note that catches people out: Advanced Settings only unlocks in campaign edit mode after the campaign has been created, so the field is not there while you are setting a campaign up for the first time — create it, then edit it. There is no automated push from ValidVisit into ROIads.
Yes, and keeping those two ideas apart is the point. ValidVisit scores whether a visit came from a real person on a real device through a legitimate network path — not whether that person wanted your offer. A genuine subscriber who opted in on a real site, taps a notification out of mild curiosity and leaves after ten seconds is a valid visit that did not convert; that is a targeting and offer question. An automated click from a seeded list is an invalid visit, and no amount of creative work will fix it. Push campaigns fail for both reasons, and the remedies are opposite, which is why a scoring model that keyed on engagement depth would be useless here — it would condemn the entire channel and tell you nothing about which placements to cut.
The pairing of {publisher_id} and {site_id} carries the most weight: the first names the supply partner and the second the individual placement, and it is almost always the placement that isolates something worth acting on. Both are dimensions the Sources Blacklist and micro bidding operate on, so the scores line up with the controls without a translation step. The {click_id} gives per-click identity, ties a scored visit back to the ROIads click record, and is what a server-to-server conversion postback rides on. Adding {creative_id} lets you rule out the creative before blocking a placement, and {campaign_name} is worth passing simply because it makes reports readable without a lookup.
See which publishers and placements send real buyers vs bots — every visit scored 0–100, worst first.
Free trial at launch · just your email
One script · no cookies · no fingerprinting · raw IP never stored