Tracking on Yandex Direct runs on curly-brace URL tags that Yandex fills in at click time, spanning everything from {campaign_id} and {ad_id} down to the placement that actually served the impression. Appending these macros to your landing URL lets ValidVisit attribute every visit to its exact YAN site and judge it Valid or Invalid, with the evidence in your dashboard, so search and network clicks are never lumped together.
Cross-check any macro against the network’s official documentation. Yandex Direct official docs →
On Yandex Direct, attribution starts with the required identifiers {campaign_id}, {ad_id} and the auto-tagged {yclid} (the Yandex Click ID Yandex stamps on every paid click), but the token that matters for sub-source visibility is {source} — it reports the ad network publisher domain that served your ad, and none on Yandex search. Yandex uses the same lowercase-with-curly-braces format across all of its tags, so {source} drops the serving placement straight into your URL with no extra step: these are plain URL parameters, not an extra hop. Add {gbid}, {creative_id}, {keyword} and {position} alongside them and each click arrives carrying its full lineage from campaign down to the specific placement.
Per-sub-source granularity is what turns a verdict into an action you can take. Once each click is tied to its {source} domain, ValidVisit judges the traffic after it arrives and flags the YAN sites sending invalid traffic or bots — then you add that domain to your campaign's Sites with disabled impressions list yourself. The verdict blocks nothing and ValidVisit never edits your Yandex Direct campaigns, so the exclusion is always a manual change you make in Yandex Direct. Note that this lever exists for the Yandex Advertising Network and ad exchanges — Yandex's own search projects have no per-placement exclusion — so the blame and the fix sit with the underperforming placement, not with Yandex.
| Token | Yandex Direct macro | ValidVisit param | Example |
|---|---|---|---|
| Campaign ID *campaign | {campaign_id} | vv_campaign_id | 58392011 |
| Campaign Namecampaign | {campaign_name} | vv_campaign_name | summer_sale_search |
| Ad Group IDadset | {gbid} | vv_adset_id | 4910233 |
| Ad ID *ad | {ad_id} | vv_ad_id | 1029384756 |
| Creative IDcreative | {creative_id} | vv_creative_id | 77123 |
| Keywordkeyword | {keyword} | vv_keyword | buy running shoes |
| Placement / Sourcepublisher | {source} | vv_publisher_id | example-site.ru |
| Positionplacement | {position} | vv_placement_id | 1 |
| Yandex Click ID *click | {yclid} | vv_click_id | 1234567890123456789 |
{campaign_id}vv_campaign_id{campaign_name}vv_campaign_name{gbid}vv_adset_id{ad_id}vv_ad_id{creative_id}vv_creative_id{keyword}vv_keyword{source}vv_publisher_id{position}vv_placement_id{yclid}vv_click_id* required for Yandex Direct attribution.
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}In Yandex Direct, paste these into the campaign’s URL parameters section, and keep the ad’s own URL as your plain landing page. Yandex Direct adds them to every click and fills the macros, so every visit arrives attributed and ready to judge.
Carries a per-click id, stored with each visit so a verdict traces back to the click.
Tokens last verified against Yandex Direct’s docs on 2026-10-02.
The 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.
{source} is the one to watch — it carries the YAN publisher domain that served your ad, which is the sub-source ValidVisit reports on. The required {campaign_id}, {ad_id} and {yclid} tags pin down the campaign, ad and individual click, while {source} tells you where the network actually showed it.
No. They are standard URL parameters — Yandex substitutes the real values into your landing URL at click time, so there is no funnel hop or intermediate hop. The click goes straight to your page with {source}, {yclid} and the rest already filled in.
ValidVisit reports the offending {source} domain; you exclude it manually under campaign settings → Advanced settings → Sites with disabled impressions in Yandex Direct. That lever applies to YAN sites and ad exchanges only — Yandex's own search projects have no per-publisher exclusion.
See which Yandex Direct publishers and placements send real buyers vs. bots.
Join the waitlist with just your email · 7-day trial at launch
One script · no cookies · no device IDs · raw IP never stored