Judge every Yandex Direct and YAN visit for IVT. Isolate which partner placements and search keywords skew your conversion data.
YAN site/app in Yandex DirectThe advertiser pastes a comma-separated list of sites and apps (up to 1,000 domains for banners and 100 for video ads; on ad exchanges only specific sites, not the whole exchange) into the campaign’s disabled-sites field, which blocks impressions on those YAN placements.
Yandex Direct serves ads on Yandex Search and distributes budgets across the Yandex Advertising Network (YAN): partner sites, apps and ad exchanges. Yandex says a site must have a Russian-speaking audience to join YAN. That two-channel structure means two places to look: on Yandex Search, the keyword and the section and position the ad showed in; across YAN, the partner domain that showed it. Mapping each visit’s verdict to the Yandex tracking tokens you pass shows which YAN publisher domains and which keyword-campaign combinations are skewing your conversion data.
Yandex splits invalid traffic into two types. Fraudulent traffic covers clicks made by bots or fraudulent software, and clicks made by real users for a reward rather than out of genuine interest. Random traffic covers unintentional clicks with no value to the advertiser, such as repeated clicks on the same banner. Yandex excludes both from Yandex Direct statistics and does not charge for them, but its help notes that all site sessions, including fraudulent ones, are still recorded in your own analytics. ValidVisit judges those arriving visits one by one on your page, so some it judges Invalid will be sessions Yandex has already filtered.
On YAN the useful cut is the placement. Because the {source} placement token is captured on every visit, you can rank YAN partner domains by IVT and use that list for Yandex Direct’s “Sites with disabled impressions” setting (Площадки, на которых запрещены показы). On Yandex Search {source} returns “none”, so the cut there is {keyword} together with {position_type} and {position}.
{source})The {source} token maps each click to the specific partner domain, so group your verdicts by it and look for domains whose invalid share runs well above your campaign baseline. Yandex’s Report Wizard lists the sites your ads were served on under the Platform name dimension, which gives you the volume to set beside each domain before you disable it.
{keyword}){keyword} returns the keyword the ad was displayed for, without negative keywords. Group your Yandex Search verdicts by it to see which terms carry the invalid share, and pass {source_type}, which returns “search” or “context”, to keep search-site and network-site visits apart before you change bids or keywords.
{position_type}, {position}){position} is the ad’s exact position within its section and returns 0 when the ad was displayed in the ad networks. {position_type} names the section on a Yandex search results page: premium, dynamic_places or other. Pass both, because position 1 means something different in each section. A concentration of Invalid verdicts in one section and position is worth investigating before you adjust bids.
Invalid share broken down by:
{source}Placement: the publisher domain where the ad was shown in the Ad Network, or 'none' for search.Invalid share broken down by:
{position}Exact position of the ad within its section.Per-click id: Yandex Direct passes a unique click id, and ValidVisit stores it with each visit, so a verdict traces back to the click in Yandex Direct’s own reports.
Compare bot & invalid-traffic breakdown across every ad network →See your own Yandex Direct sub-sources judged this way.
Each Yandex Direct 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=yandex-direct&utm_medium=search&vv_campaign_id={campaign_id}&vv_campaign_name={campaign_name}&vv_adset_id={gbid}&vv_ad_id={ad_id}&vv_creative_id={creative_id}&vv_keyword={keyword}&vv_publisher_id={source}&vv_placement_id={position}&vv_click_id={yclid}| Token | Yandex Direct macro | Maps to | Identifies |
|---|---|---|---|
| Campaign ID | {campaign_id} | campaign_id | campaign |
| Campaign Name | {campaign_name} | campaign_name | campaign |
| Ad Group ID | {gbid} | adset_id | adset |
| Ad ID | {ad_id} | ad_id | ad |
| Creative ID | {creative_id} | creative_id | creative |
| Keyword | {keyword} | keyword | keyword |
| Placement / Source | {source} | publisher_id | publisher |
| Position | {position} | placement_id | placement |
| Yandex Click ID | {yclid} | click_id | click |
{campaign_id}{campaign_name}{gbid}{ad_id}{creative_id}{keyword}{source}{position}{yclid}Macros checked against Yandex Direct’s own documentation on 2026-10-02. Yandex Direct docs
The verdict works the same way on every network. ValidVisit never changes your Yandex Direct account: you make the exclusion there yourself. How the verdict works →
Yes. Add the tags once under URL parameters in the campaign settings and Yandex adds them to every link in every ad of that campaign. The {source} token differentiates Yandex Search clicks from YAN partner placements — on search, {source} returns “none”; on YAN it returns the partner domain. Both are judged together in a single dashboard, so you can compare channel quality side by side without separate tracking configurations.
In campaign settings → advanced settings → “Sites with disabled impressions”. Paste a comma-separated list of sites and apps — up to 1,000 domains for banners and 100 for video ads — to block impressions on those YAN placements. On ad exchanges you can disable specific sites but not the whole exchange, and impressions in Yandex’s own search-related projects cannot be disabled. To build the list, group your visits by {source} and take the YAN domains whose invalid share runs consistently above your campaign baseline. The same advanced settings can disable impressions for up to 25 IP addresses.
{source} (the YAN publisher domain, or “none” for search), {source_type} (search or context), {keyword}, {position} (the exact position of the ad within its section) with {position_type}, {campaign_id}, {campaign_name}, {gbid} (ad group), {ad_id} (also available as {banner_id}), {creative_id} and {yclid}, Yandex’s unique click identifier, which Yandex also adds to the links in your ads automatically.
Yandex filters in stages: it shows no ads to a visitor it is confident is a bot, may ask for a CAPTCHA on a suspicious click, and filters again after the click. Filtered clicks leave Yandex Direct statistics, the money is refunded to the shared account automatically, and the Invalid activity metrics report in the Report library shows the totals. Judging your own visits by {source} and {keyword} shows where the invalid share concentrates, so you know which sites to disable. If you believe a campaign was affected, Yandex asks you to contact its support with the ad number, the period and your Yandex Metrica tag number; that request is yours to send, and ValidVisit does not send it for you.
Weighing a blocker for search traffic? How ValidVisit compares to ClickCease, ClickGUARD, Fraud Blocker and Lunio.
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