UTM-метки для рекламы: как размечать Яндекс Директ и VK без ошибок
Рабочие шаблоны для Директа и VK Ads, разбор ошибок, которые ломают метки молча, и генерация разметки через ИИ прямо при сборке кампании.
Открываете отчёт Метрики по источникам, а там yandex / cpc / (not set). Клики идут, бюджет тратится, а какое объявление привело заявку — непонятно. Дело почти всегда не в аналитике, а в разметке: UTM-метки либо не проставлены, либо проставлены так, что данные схлопываются в кашу. Разберём, как размечать Директ и VK, чтобы каждый переход был подписан, — и как не наступить на грабли, которые ломают метки без единой ошибки в интерфейсе.
Какие параметры UTM нужны рекламе
UTM-метка — это приписка к ссылке из нескольких параметров, которую системы аналитики (Яндекс Метрика, GA4) раскладывают по колонкам отчёта. Выглядит так:
https://site.ru/?utm_source=yandex&utm_medium=cpc&utm_campaign=summer&utm_content=ad-142&utm_term=dostavka-cvetov
Пять стандартных параметров:
utm_source— источник:yandex,vk,telegram;utm_medium— тип трафика:cpc(за клик),cpm(за показы);utm_campaign— какая кампания;utm_content— что именно кликнули: конкретное объявление или баннер;utm_term— ключевая фраза, по которой показалось объявление.
Первый параметр присоединяется к адресу через ?, все следующие — через &. Первые три (source, medium, campaign) — обязательный минимум. content и term добавляйте, когда нужно принимать решения на уровне объявления и фразы, а не только кампании.
Вывод: без content и term вы знаете «пришли из Директа», но не знаете, из какого объявления и по какой фразе. А именно эта детализация и нужна, чтобы отключать нерентабельное и усиливать рабочее.
Главный принцип: не размечайте каждое объявление руками
Типичная ошибка новичка — вписывать UTM в ссылку каждого объявления по отдельности. При сотне объявлений это сотня шансов на опечатку и сотня мест, где что-то развалится.
Правильно — задать шаблон один раз на уровне кампании, а конкретные значения пусть рекламная система подставит сама. Для этого есть динамические параметры — переменные в фигурных скобках. Вместо того чтобы писать номер кампании руками, вы пишете {campaign_id}, и Яндекс подставит реальный ID в момент клика.
В Директе для этого есть поле «Параметры URL» на кампании и на группе. В VK Ads макросы обычно добавляют в ссылку объявления. Логика одна: шаблон живёт не в голове директолога, а в настройках рекламной системы — и подставляет значения сам. По сути это и есть генератор UTM-меток, только встроенный в кабинет: отдельный онлайн-генератор нужен разве что для разовых ссылок вроде постов в соцсетях. Откуда берутся значения вроде {keyword}, понятнее, если помнить, как устроено семантическое ядро: это те самые фразы, по которым показывается объявление.
UTM для Яндекс Директа: рабочий шаблон и все параметры
Вот шаблон, который закрывает почти любую задачу. Его вставляют в поле «Параметры URL» кампании — без адреса сайта и без ?, только параметры:
utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}&utm_content={ad_id}&utm_term={keyword}
Домен и знак ? Директ подставит сам к ссылке каждого объявления. Полезные динамические параметры Директа:
{campaign_id}— номер кампании,{campaign_name_lat}— её латинское имя;{gbid}— группа объявлений,{ad_id}(он же{banner_id}) — объявление;{keyword}— фраза показа,{phrase_id}— её числовой номер;{source_type}—searchилиcontext(поиск или сети РСЯ),{source}— домен площадки в сетях;{position_type}— тип блока,{device_type}—desktop,mobileилиtablet;{region_id}— регион показа,{retargeting_id}— условие ретаргетинга.
Полный список параметров есть в справке Яндекс Директа. В обычной лидогенерации чаще всего хватает кампании, группы или объявления, фразы, типа площадки и устройства. Всё остальное добавляйте только под конкретный отчёт: длинная метка ломается чаще короткой.
yclid или UTM: честный разбор
У Директа есть собственная автоматическая разметка — параметр yclid. Если в кампании включена разметка ссылок для Метрики, Яндекс сам добавляет к каждому клику уникальный yclid, и Метрика связывает переход с объявлением без единой UTM-метки.
Отсюда неудобная правда: если вам нужна только Яндекс Метрика, UTM для Директа технически избыточны — yclid уже всё связал. Метки становятся обязательными, когда данные уходят в другие системы: GA4, сквозную аналитику, CRM, коллтрекинг. Или когда вы хотите видеть в отчёте читаемое utm_campaign=summer, а не хеш клика.
Не выключайте автоматическую разметку yclid в кампании — даже если ставите UTM. Они не конфликтуют: yclid работает на Метрику, UTM — на всё остальное. Отключите — и часть трафика в Метрике превратится в (not set).
UTM для VK Ads: почему шаблон из Директа нельзя скопировать как есть
В VK Ads разметка устроена иначе, чем в Директе, и на этом спотыкаются даже опытные. Макросы визуально похожи на яндексовские, но и скобки, и имена у них свои — рабочий шаблон Директа в VK просто не раскроется.
Первое отличие — двойные фигурные скобки. В Директе {campaign_id}, в VK — {{campaign_id}}. Перепутаете количество скобок — макрос не раскроется и уедет в отчёт буквальным текстом.
Второе — другие имена макросов. Кампанию VK Ads подставляет по {{campaign_id}}, объявление — по {{banner_id}}, а не по знакомому из Директа {ad_id}.
Рабочий шаблон для ссылки объявления в VK Ads — ровно как в примере из справки VK:
utm_source=vk&utm_medium=cpc&utm_campaign={{campaign_id}}&utm_content={{banner_id}}
Для сверки с системами верификации кликов справка также приводит {{clickid}}. Набор макросов VK со временем меняется, поэтому перед заливкой сверяйтесь с актуальной справкой VK по разметке ссылок, а не со сторонними подборками — в них нередко попадают устаревшие или неподдерживаемые токены.
Важно: логика та же (source / medium / campaign / content), но синтаксис у Директа и VK разный. Не копируйте шаблон Директа в VK один в один — получите в ссылках буквальный текст {campaign_id} вместо номеров.
7 ошибок, из-за которых метки врут
- Двойной
?в ссылке. Если посадочная уже с параметром (site.ru/?promo=1), а вы дописываете?utm_source=..., URL ломается. В поле «Параметры URL» Директа и в шаблоне VK пишите только параметры без?— система склеит правильно. Руками в ссылке — всегда через&, если?уже есть. - Кириллица и пробелы без кодирования.
utm_campaign=летняя распродажаразвалится на пробеле. Либо латиница, либо URL-кодирование (пробел →%20). Динамический{campaign_name}с кириллицей — тот же риск; безопаснее{campaign_name_lat}или числовой{campaign_id}. {keyword}в открытую. Макрос подставляет реальную фразу показа — она бывает длинной, с кириллицей и, по сути, светит поисковый запрос пользователя прямо в URL. Если важна чистота ссылок и приватность — берите{phrase_id}вместо{keyword}, а расшифровку смотрите в отчётах.- Превышение длины. У Директа ссылка с раскрытыми метками не должна выходить за 4096 байт (кириллица в UTF-8 «весит» до трёх байт на символ). Сверх лимита передадутся только
yclidиopenstat— UTM потеряются. Не набивайте шаблон всеми макросами подряд, берите нужные. - Шаблон Директа, вставленный в VK как есть. Одинарные скобки и
{ad_id}в VK Ads не раскроются — там нужны двойные скобки и{{banner_id}}. Скопируете строку из директовой кампании без правок — в отчёт уедет буквальный текст{campaign_id}вместо номера. - Разнобой в значениях.
utm_source=yandexв одной кампании иutm_source=Яндексв другой — это два разных источника в отчёте. Заведите единый словарь (yandex,vk, всегда строчными) и держитесь его во всех кампаниях и площадках. - Потеря меток на редиректе и в форме. Если с рекламы человек попадает на страницу, которая его переадресует (с
httpнаhttps, со старого URL на новый), метки исчезнут, если редирект их не пробрасывает. То же с формой заявки: не сохраняет UTM в скрытые поля — и в лиде источник пропадёт.
Как проверить, что метки живые
Разметка — это то, что стоит проверить до открутки бюджета, а не после.
- Соберите тестовую ссылку с реальными значениями (не макросами), откройте её и посмотрите на адресную строку после загрузки: все параметры на месте, страница открылась?
- В Метрике откройте отчёт «Источники → Метки UTM». Если видите строку
(not set)с заметной долей — часть трафика идёт без меток, ищите незакрытую кампанию или сломанный редирект. - Убедитесь, что автоматическая разметка (
yclid) в Директе включена — это страховка на случай, если UTM где-то потерялись.
Динамику проверяют уже на живом трафике, через день-два после старта: реальные {campaign_id} и {ad_id} раскроются в отчёте, и станет видно, всё ли подставляется. Как вытаскивать такие срезы из Метрики, мы показывали в подборке запросов к Метрике.
Частые вопросы
Нужны ли UTM-метки, если уже стоит Яндекс Метрика?
Для связки только с Метрикой — нет: Директ добавляет к каждому клику автоматический yclid, и Метрика связывает переход с объявлением без единой UTM. Метки нужны, когда данные идут в GA4, сквозную аналитику, CRM или коллтрекинг, либо когда в отчёте нужны читаемые названия, а не идентификатор клика.
Обязательно ли использовать динамические параметры вроде {campaign_id}?
Нет, но с ними метки надёжнее: {campaign_id} и {ad_id} подставляются автоматически и не зависят от опечаток при массовой заливке. Статичные значения проще читать глазами, но их легко перепутать, когда объявлений сотни.
Почему трафик в отчёте идёт как (not set)?
Значит, по этим переходам аналитика не получила ни UTM, ни yclid. Обычные причины: выключена автоматическая разметка ссылок в Директе, метки потерялись на редиректе или посадочная страница обрезала параметры из URL.
Размечать VK теми же метками, что и Директ?
Логика одна (source, medium, campaign, content), но синтаксис разный: у Директа одинарные фигурные скобки, у VK Ads — двойные, и имена макросов свои. В Директе кампания — {campaign_id}, объявление — {ad_id}; в VK Ads — {{campaign_id}} и {{banner_id}}. Один шаблон на обе площадки без правок не подойдёт: скопируете код Директа в VK — макрос не раскроется.
Можно разметить все объявления кампании одной меткой?
Да, если использовать шаблон с динамическими параметрами. В Директе его удобно задавать в поле «Параметры URL» кампании или группы. В VK Ads макросы обычно живут в ссылке конкретного объявления, поэтому шаблон тот же по логике, но вставляется в другое место.
Как это делает LidFly
Всё описанное выше можно делать руками: собрать шаблон, не перепутать скобки, вставить в нужное поле, проверить длину. Но это как раз тот тип рутины, где ИИ полезен: он держит правила площадки в контексте и применяет их во время сборки кампании, а не после запуска, когда отчёты уже испорчены.
LidFly подключается к Яндекс Директу и VK Ads через протокол MCP, и ИИ работает с кабинетами обычными командами. С UTM это выглядит так:
Собери UTM-шаблон для этой кампании в Директе:
source=yandex, medium=cpc, кампанию и объявление — динамическими
параметрами, фразу подставляй по ID, а не текстом.
Проставь шаблон в параметры URL кампании.
ИИ соберёт корректную строку utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}&utm_content={ad_id}&utm_term={phrase_id} и запишет её в поле «Параметры URL» кампании или группы одной операцией — без открывания интерфейса и копирования макросов. Для VK он подготовит ссылку объявления с правильными двойными скобками — {{campaign_id}} и {{banner_id}}; запись зависит от типа доступа к VK и формата объявления, поэтому перед изменением ИИ сначала читает объект и показывает действие на подтверждение. Управление кабинетами таким способом мы подробно разбирали в статье про управление Директом через нейросеть.
А дальше — то, ради чего метки и затевались. Если посадочная собрана на конструкторе LidFly, те же UTM автоматически попадают в карточку лида: source, medium, campaign, content, term сохраняются вместе с заявкой. Подключена CRM — метки уезжают в неё вместе с лидом, и в отчёте видно не просто «заявка с сайта», а заявка с конкретного объявления.
Получается сквозная петля: клик по объявлению → метка → заявка → источник. По каждой заявке видно, какое объявление и какая фраза её принесли, а не абстрактное «пришли из Директа». Как довести трафик до формы и не потерять источник по пути, мы разобрали в статье про поток заявок из рекламы.
Попробовать: подключите Директ или VK в кабинете LidFly и попросите ИИ собрать и проставить UTM-шаблон при запуске кампании. Разметка окажется на месте с первого клика.