Where the script goes
Paste the ValidVisit snippet before </body> on the landing page BeMob sends visitors to:
- Click-through tracking. The ad points at your BeMob campaign URL; BeMob records the visit and sends the visitor to the lander, whose call to action uses BeMob’s click URL.
- Direct tracking. The ad points at the landing page itself, and BeMob’s Landing Page Pixel runs in the page body. The ValidVisit snippet sits on the same page.
In both, add the lander’s domain to Allowed domains in your ValidVisit site; the script only runs on hosts listed there.
The lander URL for a Zeropark campaign
ValidVisit reads network values from the landing-page URL under its vv_* names. In click-through tracking, Zeropark fills its macros into your BeMob campaign URL and BeMob stores them as custom parameters. BeMob documents {custom1} to {custom10} and its click ID {clickId} as tokens for offer URLs, and each lander’s settings show an Available tokens list. The custom tokens appear there; {clickId} doesn’t in BeMob’s docs, so check your list before relying on it.
Say your Zeropark source stores {source} in Custom 1 and {target} in Custom 2. Add to the lander URL:
vv_source=zeropark: names the network.vv_publisher_id={custom1}: the Zeropark source.vv_placement_id={custom2}: the target inside it, the unit you pause.vv_click_id={custom3}: Zeropark’s click ID, if your source stores{cid}in Custom 3.
Start the list with ? and join the pairs with &. With direct tracking the ad URL is the landing page, so put Zeropark’s macros on it directly, such as vv_placement_id={target}, as the Zeropark tracking tokens page lists them. ValidVisit’s Link Wizard builds that list; behind BeMob, swap each macro for the token that holds it.
BeMob’s click ID or Zeropark’s
BeMob assigns its click ID, a 22-character code, when the visit happens. Where the URL carries it as clickid={clickId}, ValidVisit stores it as the visit’s click ID: clickid, click_id and vv_click_id all fill that one field, so a judged visit and BeMob’s record of it share a key. BeMob documents {clickId} for offer URLs; on a lander URL, check the Available tokens list first.
Send one click ID. If clickid and vv_click_id are both on the URL, the one later in the URL fills the field, so choose between BeMob’s ID and Zeropark’s {cid}.
With direct tracking, BeMob’s click ID isn’t on the URL the ad opens. Pass Zeropark’s instead: vv_click_id={cid}.
See your own channel judged the same way — join the early-access waitlist.
Read targets next to BeMob’s reports
BeMob reports by its custom parameters; ValidVisit shows the same IDs under Publisher (the Zeropark source) and Placement (the target). They’re one source seen twice: BeMob counts visits, clicks and conversions, ValidVisit judges each visit that loaded the page Valid or Invalid, with its evidence.
- Targets that convert but are judged invalid. Check the conversions before you raise bids; bot traffic that fires a conversion event looks profitable in any tracker.
- Sources that are bad throughout. When most targets in a source are judged invalid, pause the source rather than target by target.
- Totals that differ. BeMob records the visit before the lander loads; ValidVisit counts visits that loaded the page with the script. Compare shares, not raw counts.
BeMob’s bot filters and ValidVisit
BeMob lets you write bot detection rules (Business and Enterprise plans, or as an add-on) on IP, user agent, ISP, referrer or custom parameters, combined with AND/OR, and choose what happens to a match: mark it as a bot (marked visits can be routed in flows and show in a Bot visits column), send it to another URL, or close the connection. Its Invalid Traffic (IVT) metrics count data-center IPs, blacklisted IPs, frequent events, frequent campaign events and fast clicks, on the Enterprise plan or as an add-on.
These work at the click. ValidVisit grades the visit after it lands, attributed to the source and target that sent it. If you only mark bots and your flow still sends them to the lander, ValidVisit judges those visits too. Tracker bot filters vs ValidVisit compares the approaches.
Pause the targets in Zeropark
ValidVisit never changes your BeMob campaigns or your Zeropark account, and sends nothing into BeMob. It ranks sources and targets worst first and exports the ones worth cutting as a Cut-list CSV. In Zeropark, open the campaign’s Targets tab, pull up the IDs and choose Bulk actions → Pause; excluding sources in Zeropark has the detail, and blocking bad sources by network covers other networks.
BeMob’s API integrations are paid add-ons that pull your costs in automatically; for PropellerAds, BeMob also announced starting and stopping campaigns from its panel.
For visitors you never want on the page, ValidVisit’s traffic rules tag visits by country, data-center hosting or VPN and can send them to another page; whole countries can also be blocked at your own firewall. The verdict itself blocks nothing.
BeMob details to test
- Tokens on the lander URL. Confirm
{custom1},{custom2}and{clickId}appear in the lander’s Available tokens list, then run a test click with sample values and check the address bar shows real IDs rather than tokens. - The double-meta hop. BeMob offers a double meta refresh between pages, which replaces the referrer with your own domain. ValidVisit’s Publisher and Placement columns come from the URL parameters, not the referrer.
- Landing Page Protection. On Business and Enterprise plans, and not with direct tracking. If you switch it on, test through the campaign URL and confirm the visit reaches ValidVisit.