Меню
Как настроить цели в Яндекс Метрике для отслеживания конверсий

Как настроить цели в Яндекс Метрике для отслеживания конверсий

Пожалуй, это вечная классика веб-аналитики: если вы не настраиваете цели, всё измерение трафика превращается в гадание на кофейной гуще. За семь с лишним лет работы в диджитал я однажды (и, надеюсь, навсегда) уяснил — вся рекламная магия случается только там, где известен конкретный результат. А без целей этот «результат» остаётся абстракцией: считать просто визиты и сессии, не зная, стал ли кто-то клиентом — всё равно что строить мосты в никуда.

Метрика за последние пару лет серьёзно эволюционировала — добавились продвинутые серверные конверсии, появилась гибкая настройка составных целей (можем буквально шаг за шагом видеть путь пользователя), а ещё теперь ИИ может подсказывать, какие события для бизнеса важнее всего. Расскажу свой обычный рабочий процесс: как я ставлю отслеживание конверсий у реальных клиентов и чему обязательно уделяю повышенное внимание.

Для чего вообще нужны цели

Цель — всегда что-то осмысленное: заказ товара, заявка на звонок, клики по e-mail адресу или даже скачивание презентации. Если цели не задать, Метрика станет показывать обезличенные данные о посещениях — количество людей вроде растёт… но приносит ли трафик деньги или новых подписчиков? Ответа без целей нет.

Сейчас, когда автоматизированные стратегии типа «Максимум конверсий» контролируют почти весь рынок рекламы (а стоимость одного клика давно стала поводом считать каждую мелочь), любые ошибки при настройке сразу отражаются на вашем рекламном бюджете. Буквально: неправильно настроили цель — и автозакупка льёт бюджет в молоко.

На какие типы целей стоит обратить внимание

Когда открываешь настройки счётчика — тут даётся ассортимент:

  • Посещение страниц. Старая добрая классика: пользователь попал на страницу «спасибо», значит совершил желаемое действие. Применяется часто для форм с редиректом.
  • JavaScript-событие. Если хочется ловить клики по кнопкам или обработать отправку формы без обновления страницы (AJAX), это ваш вариант. Это тот случай, когда приходится писать пару строк кода — ничего страшного!
  • Автоматические цели: клик по номеру телефона, e-mail или видимой кнопке — Метрика сама умеет находить такие действия без дополнительной программирования.
  • Составная цель. Вот здесь становится особенно интересно! Можно строить воронку из нескольких шагов: просмотр каталога → детальная карточка товара → корзина → оформление заказа. Помогает понять, где пользователь «отвалился».
  • Ecommerce-цели — для интернет-магазинов; если есть dataLayer — грех им не пользоваться.

Настраиваем простейшую цель по URL

Самая быстрая настройка выглядит так:

  • Идём в Метрику → выбираем счётчик → Цели.
  • Жмём “Добавить цель”, выбираем “Посещение страниц”.
  • Условие — например “URL содержит /success” (или ваш вариант страницы благодарности).
  • Имя цели даём максимально понятное (“form_success_page” лучше чем “Цель 1”).
  • Не забываем сохранить и проверить!

Для большинства небольших сайтов этого хватает с головой: отправили форму — ушли на отдельную страницу с благодарностью — цель сработала.

Если форма работает через AJAX (никакой перезагрузки страницы!) — выручает JS-событие

Здесь нужно чуть втянуться в синтаксис:

document.querySelector('#contact-form').addEventListener('submit', function(e) {
  e.preventDefault();

  // логика отправки формы (fetch/AJAX)
  fetch('/api/send-form', {
    method: 'POST',
    body: new FormData(this)
  }).then(response => {
    if (response.ok) {
      // отправляем цель в Метрику
      ym(YOUR_COUNTER_ID, 'reachGoal', 'form_success', {
        form_name: 'contact_page'
      });
    }
  });
});

Что важно? В четвертом параметре передаём объект с деталями события (например, название самой формы). С каждым апдейтом Метрики эти дополнительные параметры становятся всё полезнее: они ложатся в основу сегментации и рекомендательных отчётов ИИ — проще говоря, позволяют увидеть картину действий пользователей со всех сторон.

Как отследить клики по кнопкам?

Например, хотим смотреть обращения за обратным звонком:

document.addEventListener('click', function(e) {
  if (e.target.closest('.btn-callback')) {
    ym(YOUR_COUNTER_ID, 'reachGoal', 'callback_click');
  }
});

Работает надёжно даже если кнопка появляется динамически (например, её подгружает скрипт).

Ecommerce-логика для магазинов

Тут всегда советую подключать модуль электронной торговли через dataLayer. Пусть технически сложней одной галочки по URL — зато бизнес получает картину всех покупок и сегментов:

dataLayer.push({
  ecommerce: {
    purchase: {
      actionField: {
        id: 'order-12345',
        revenue: 4990
      },
      products: [{
        id: 'SKU001',
        name: 'Кроссовки Nike Air',
        price: 4990,
        quantity: 1
      }]
    }
  }
});

В настройках счётчика включаем электронную торговлю.

Серверные конверсии – must have

Защита приватности переместила большую часть событий за пределы браузера. Всё больше компаний гонят события напрямую с сервера через Measurement Protocol API:

curl -X POST "https://mc.yandex.ru/collect" \
  -d "tid=YOUR_COUNTER_ID" \
  -d "cid=CLIENT_ID" \
  -d "t=event" \
  -d "ec=conversion" \
  -d "ea=purchase" \
  -d "el=order_12345"

На php:

$url = 'https://mc.yandex.ru/collect';

$data = [
    'tid' => 'YOUR_COUNTER_ID',
    'cid' => 'CLIENT_ID',
    't'   => 'event',
    'ec'  => 'conversion',
    'ea'  => 'purchase',
    'el'  => 'order_12345',
];

$ch = curl_init($url);

curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => http_build_query($data),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/x-www-form-urlencoded',
    ],
    CURLOPT_TIMEOUT        => 10,
]);

$response = curl_exec($ch);

if ($response === false) {
    throw new RuntimeException(curl_error($ch));
}

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

if ($httpCode < 200 || $httpCode >= 300) {
    throw new RuntimeException(
        "Yandex Metrica returned HTTP {$httpCode}: {$response}"
    );
}

client_id берём из cookie _ym_uid либо вытягиваем через соответствующий JS-метод ym(…). Такой подход решает старые проблемы интернет-маркетинга: например, офлайн-продажи теперь легко дозаливаются постфактум как ретроцели.

Составные цели = лучшая аналитика пути клиента

Типичная последовательность для магазина:

1 шаг – /catalog;
2 шаг – /product;
3 шаг – событие add_to_cart;
4 шаг – /checkout/success.

Результат? Мы видим не просто цифру «конверсий», а где именно пользователи начинают теряться или мешкать при принятии решения — зарыто золото для доработок интерфейса!

Ошибки из моей практики

  • Учитывают одну конверсию дважды через разные типы целей (и тогда статистика ведёт себя странно);
  • Забывают тестировать работу целей «по горячим следам» после внедрения;
  • Не настраивают согласие пользователя на сбор данных (Consent Mode), что в условиях современных законов приводит к потере части ценных событий.

Как понять что всё настроено правильно?

Я обычно использую тройной контроль:

  • Отчёт «Конверсии» в режиме live;
  • Вебвизор для воспроизведения действий пользователя глазами наблюдателя;
  • Расширение Яндекс Метрика Debugger для мгновенной подсветки каждого события прямо в консоли браузера.

Вместо вывода

Мой опыт подсказывает одно правило: прежде чем лить деньги на трафик/рекламу/SEO (…нужное подчеркнуть) убедитесь, что ваши цели прописаны ясно и бьют ровно туда, куда надо бизнесу сейчас. Даже при всей новомодной мультиканальности и серверных инновациях базовые вещи никуда не делись – простая карта движения пользователя от первого клика до чека творит чудеса оптимизации бюджета. Начните c элементарных URL-целей… А потом постепенно подключайте JS-события и составные цепочки — увидите динамику во всей красе!