Когда маркетолог говорит «давайте отслеживать всё», разработчик обычно слышит «давайте усложним жизнь прямо сегодня». И, как ни странно, оба правы. Потому что базовых целей в Яндекс.Метрике вроде «клик по кнопке» или «отправка формы» хватает ровно до того момента, пока бюджет на рекламу не становится больше бюджета на кофе в офисе.
С этого момента простые цели превращаются в бесполезную статистику: да, мы знаем, что форму заполнили 300 человек, но кто из них реально купил, а кто просто решил проверить, как работает кнопка? Тут-то и начинаются «танцы с бубном» вокруг передачи дополнительных параметров, загрузки офлайн-конверсий и прямых обращений к API.
Для разработчиков это значит — придётся копаться в коде, собирать идентификаторы пользователей и писать скрипты. Для маркетологов — появляется шанс наконец увидеть реальную картину: откуда пришли клиенты, сколько они потратили и какой канал окупается.
Если разложить всё по уровням сложности, получится три ступени:
Level 1. Цели с параметрами — фиксируем не только факт, но и контекст события.
Level 2. Офлайн-конверсии — подтягиваем в Метрику сделки из CRM и колл-центра.
Level 3. Measurement Protocol и виртуальные визиты — включаем «режим разработчика» и шлём в систему любые события напрямую.
В этой статье я разберу каждый уровень: зачем он нужен, какие есть ограничения и что именно надо написать в коде, чтобы маркетолог перестал приставать с вопросом «а можно ли это отследить?».
А в своем Телеграм канале пишу еще больше про всякое из реального маркетинга.
Level 1. Цели с параметрами
Что это такое
В классике жанра цель в Метрике выглядит так:
ym(12345678, 'reachGoal', 'goal_name');
Где 12345678 — номер счётчика, а goal_name — название цели. Сработала кнопка или форма — цель засчиталась.
Но у Яндекс.Метрики базовый синтаксис для отправки события в цель на самом деле такой:
ym(XXXXXX, 'reachGoal', target[, params[, callback[, ctx]]]);
Где:
target — идентификатор цели (задаётся в настройках счётчика при создании или изменении цели);
params — объект с произвольными параметрами визита (опционально);
callback — функция, которая вызовется после успешной отправки данных;
ctx — контекст для callback-функции, доступный через this.
Пример с кастомными параметрами и коллбеком:
ym(12345678, 'reachGoal', 'buy_button_click', {product_id: 42, price: 1990}, function() {
console.log('Цель "buy_button_click" отправлена');
}, this);
Таким образом, чтобы добавить в цель контекст, нам нужны эти параметры:
ym(12345678, 'reachGoal', 'ORDER', {
order_id: '12345',
revenue: 1000,
currency: 'RUB'
});
Так, вместе с фактом события можно передать дополнительные данные, которые позже будут доступны в отчётах. Это и есть цели с параметрами.
Зачем это нужно маркетологам
Для программистов важно понимать, зачем маркетологи просят «привязать параметры к цели». В e-commerce это нужно, чтобы фиксировать сумму чека, ID заказа и категорию товара. В лидогенерации — чтобы видеть источник заявки или её приоритет. В мультиязычных проектах добавляют язык интерфейса пользователя, а в случае с баннерами и промо-блоками передают тип баннера и его ID, чтобы сравнивать, какие варианты работают эффективнее.
Ограничения
Размер: не больше 1000 символов для всех параметров.
Отчёты: параметры напрямую в стандартных отчётах не видны — их нужно анализировать через «Параметры целей» или строить сегменты.
Организация: без единой схемы передачи данных вы рискуете получить хаос и бесполезные «кривые» сегменты.
Мини-кейс
На новостном портале размещено несколько тысяч баннеров: часть ведёт на статьи-«партнёрки», часть открывает быстрые формы подписки. По просьбе маркетологов разработчику необходимо добавить параметры banner_id и banner_type в цель banner_click. В результате маркетологи увидят, например, что баннеры с формой приносят меньше кликов, но дают больше реальных заявок, и смогут изменить стратегию размещений.
Формализцем задачу:
У вас на сайте десятки баннеров. Их два типа:
С переходом на страницу (например, реклама акции).
С открытием всплывающей формы (например, «оставить заявку»).
Чтобы не городить отдельную цель под каждый баннер, передаём параметры:
// Клик по баннеру с переходом на страницу
ym(12345678, 'reachGoal', 'banner_click', {
banner_id: 'bnr_101',
banner_type: 'redirect',
target_url: '/promo/sale-august'
});
// Клик по баннеру с открытием формы
ym(12345678, 'reachGoal', 'banner_click', {
banner_id: 'bnr_202',
banner_type: 'popup_form',
form_id: 'callback_request'
});

Так маркетолог потом может в отчёте «Параметры целей» сравнить:
какие баннеры эффективнее,
какой тип баннера даёт больше вовлечённости,
какие формы реально открывают
Ремарка про e-commerce и advanced matching для знатоков
Разметка электронной коммерции в Метрике очень похожа на этот подход: там также передаются параметры заказа, товаров и дохода. Но это отдельная тема, требующая отдельной статьи. Информации в по этой теме в интернете полно, да и справка детально описана, но если необходимо скажите, запланирую такой материал.
Также стоит упомянуть advanced matching — новую "грязную", по моему мнению, технологию Яндекс.Метрики. Она позволяет отправлять данные даже по тем формам, которые пользователь начал заполнять, но не отправил. То есть маркетолог видит не только «завершённые заявки», но и «намерение» оставить контакт. Это штуковина также работает по тому же принципу, но не видна в стандартных отчетах и, конечно, это не замена параметрам целей, а скорее дополнительный инструмент, который потом как-то используется в рекламе в Директе.
На этом пока остановлюсь, посмотрю, как зайдет сообществу. Куда развивать тему — вполне понятно. Если будут замечания присылайте буду корректировать материал по ходу, материала много по этой теме, в одну статью точно было бы ту мач.