Блог · Веб-аналитика

JS-событие в Яндекс.Метрике: как настроить цель на клик или действие

Евгений Вязников - интернет-маркетолог Евгений Вязников · · #Веб-аналитика
JS-событие в Яндекс.Метрике: как настроить цель на клик или действие

Коротко: для типовых кликов по кнопкам, телефону, мессенджеру и стандартных форм в Метрике есть готовые цели, которые настраивают в интерфейсе без кода. Цель «Целевое событие» нужна для нестандартного сценария JavaScript: например, асинхронной формы после успешного ответа сервера, SPA, передачи дохода или своих параметров. В интерфейсе создайте цель с идентификатором, а на сайте вызовите ym(COUNTER_ID, 'reachGoal', 'ID_ЦЕЛИ') в момент подтверждённого действия. В примерах ниже номер счётчика 12345678 фиктивный: замените его на свой.

Если сначала нужно разобраться с другими типами целей, откройте общую инструкцию по настройке целей в Яндекс.Метрике. Здесь — только код целей Метрики для действий без перехода на другую страницу.

1. Что такое цель «Целевое событие»

Это цель для онлайн- и офлайн-событий. В этой статье разобраны онлайн-события на сайте: нажатие кнопки, успешная отправка формы или другой запрограммированный сценарий. Она подходит, когда одной проверки URL недостаточно. Метрика получает вызов reachGoal и сопоставляет его с идентификатором цели, который задан в счётчике.

Сначала определите действие
Для простого клика по телефону, кнопке или перехода в мессенджер сначала проверьте готовые типы целей Метрики. JavaScript-событие оставьте для сценария, который нельзя описать готовой целью. Не называйте разные действия одним идентификатором.

2. Как создать цель JavaScript-события в интерфейсе

Шаг 1. Откройте в Метрике раздел «Цели» в левом меню и нажмите «Добавить цель».

Шаг 2. Выберите тип «Целевое событие». Задайте понятное название — например, «Отправка формы консультации».

Шаг 3. Укажите условие и идентификатор. Для одного события обычно берут условие «совпадает» и один точный идентификатор, например consultation_sent. Этот текст должен совпасть с третьим аргументом reachGoal.

Шаг 4. Нажмите «Добавить цель», затем добавьте вызов на сайт и проверьте его. В идентификаторе нельзя использовать /, \, &, #, ?, = и кавычку. Символ + заменяют на %2B.

Дальше: в канале

Что запускаю, что получается, что сливаю

Причёсанные кейсы дозревают здесь, на сайте. А в канале работа идёт в моменте: цифры в тот же день, честные провалы, приколы из практики и шаблоны, которые я делаю себе и отдаю бесплатно.

Телеграм-канал Евгения Вязникова

Телеграм

Черновики кампаний и цифры в тот же день.

Подписаться в Телеграм
Канал Евгения Вязникова в МАКС

МАКС

Всё то же самое, если удобнее в МАКС.

Подписаться в МАКС

3. Как устроен вызов reachGoal

Синтаксис из справки Метрики: ym(XXXXXXXX, 'reachGoal', target[, params[, callback[, ctx]]]);. Для обычной цели достаточно первых трёх частей: номер счётчика, строка 'reachGoal' и идентификатор цели.

ym(12345678, 'reachGoal', 'consultation_sent');

12345678 здесь — фиктивный номер счётчика. В реальном коде замените его на номер своего счётчика. consultation_sent — не произвольная подпись, а тот же идентификатор, который вы сохранили в цели.

Аргументы передаются по порядку. Если нужен callback, но параметры визита передавать не нужно, четвёртым аргументом укажите пустой объект:

ym(12345678, 'reachGoal', 'consultation_sent', {}, function () {
  // Данные о просмотре отправлены.
});

Клик по кнопке

Вешайте событие на конкретную кнопку. Этот пример использует обработчик клика; он подходит, когда сам клик и есть измеряемое действие.

<button type="button" id="consultation-button">Получить консультацию</button>

<script>
document.getElementById('consultation-button').addEventListener('click', function () {
  ym(12345678, 'reachGoal', 'consultation_click');
});
</script>

Отправка формы: submit, а не click

Для заявки не ставьте цель только на click кнопки. Посетитель может нажать её при незаполненном обязательном поле, а форма не отправится. Для обычной формы без JavaScript можно настроить готовую цель «Отправка формы». Ниже — пример для асинхронной отправки: вызов reachGoal находится после успешного ответа сервера, поэтому ошибка не станет конверсией.

<form id="consultation-form" action="/send" method="post">
  <input name="name" required>
  <button type="submit">Отправить</button>
</form>

<script>
document.getElementById('consultation-form').addEventListener('submit', async function (event) {
  event.preventDefault();

  const form = event.currentTarget;
  const response = await fetch(form.action, {
    method: form.method,
    body: new FormData(form)
  });

  if (response.ok) {
    ym(12345678, 'reachGoal', 'consultation_sent');
  }
});
</script>

Клик по телефону или мессенджеру

Когда измеряете именно нажатие на ссылку, обработчик можно повесить на неё. В этом примере одна цель фиксирует клик по телефону, другая — переход в мессенджер.

<a id="phone-link" href="tel:+70000000000">Позвонить</a>
<a id="messenger-link" href="https://example.invalid/messenger">Написать</a>

<script>
document.getElementById('phone-link').addEventListener('click', function () {
  ym(12345678, 'reachGoal', 'phone_click');
});

document.getElementById('messenger-link').addEventListener('click', function () {
  ym(12345678, 'reachGoal', 'messenger_click');
});
</script>

А что с формами Tilda и WordPress?

В проверенной справке Метрики нет универсальной инструкции, которая подтверждала бы одинаковую установку reachGoal для Tilda или конкретного плагина WordPress. Поэтому не вставляйте чужой код наугад. Найдите в документации вашей формы точку «после успешной отправки» и передайте туда тот же вызов reachGoal; если такой точки нет, поручите интеграцию разработчику.

4. Как передать параметры визита в reachGoal

Четвёртый аргумент reachGoal — объект параметров визита. Метрика разрешает передавать параметры события этим аргументом; затем их используют в отчётах, группировках и сегментации. Для такого сценария создайте отдельную JavaScript-цель, а не только шаг внутри составной цели.

const goalParams = {
  form_variant: 'short',
  page_section: 'header'
};

ym(12345678, 'reachGoal', 'consultation_sent', goalParams);

Для дохода по цели справка приводит поля order_price и currency. Валюта указывается трёхбуквенным кодом ISO 4217.

ym(12345678, 'reachGoal', 'order_paid', {
  order_price: '1000.35',
  currency: 'RUB'
});

5. Как проверить цель JS-события

Проверяйте событие до того, как начнёте ориентироваться на него в рекламе. Для нового кода счётчика добавьте к адресу страницы ?_ym_debug=2, а если в адресе уже есть параметры — &_ym_debug=2. Перезагрузите страницу, выполните действие и откройте нижнюю панель отладки. Достижение цели видно во вкладках Events и Console.

Если панели нет или нужен вариант через консоль, добавьте ?_ym_debug=1, откройте инструменты разработчика браузера и выполните действие. Для целевого события в консоли появляется строка Reach goal, которая сообщает о вызове reachGoal.

Если включена опция «Не учитывать мои визиты», проверяйте цель в приватном окне браузера. Если в отладчике тишина, проверьте три вещи: код счётчика установлен на странице, номер счётчика в вызове верный и идентификатор точно совпадает с идентификатором цели. Данные в отчёте «Конверсии» появляются через несколько минут после создания цели.

6. Ограничения Яндекс.Метрики для событий

  • Для одного счётчика можно создать до 200 целей.
  • Одну и ту же цель на одном счётчике сервис фиксирует не чаще одного раза в секунду.
  • За один визит учитывается до 400 достижений онлайн-целей и до 1000 достижений офлайн-целей.
  • Запрос с параметрами занимает не более 8 КБ (8192 символов), поддерживает до 10 уровней вложенности и до 512 параметров за визит.

7. Частые ошибки при настройке события

Идентификатор в коде не совпадает с целью. consultation_sent и consultation-send — разные строки. Название цели можно сделать читаемым, но в коде сверяйте именно идентификатор.

Цель стоит на click у формы. Такой вызов считает нажатия, включая те, после которых форма не ушла. Для обычной формы берите submit; для асинхронной — подтверждённое успешное завершение.

Цель стоит на автоматическом открытии поп-апа. Поп-ап может открыться сам, без действия посетителя. Вызов reachGoal в этот момент создаст фантомную конверсию: в отчёте будет достижение, хотя заявки нет. Не выбирайте такую цель как целевую для автостратегии — ей нужен сигнал о реальном действии, а не о показе окна.

Событие не проверили. Сначала отладчик, затем тестовое действие, и только потом решение использовать цель в отчётах. Это быстрее, чем объяснять расхождение в данных после запуска.

Частые вопросы о JS-событиях в Метрике

Что такое цель «Целевое событие» в Яндекс.Метрике? +

Это тип цели для онлайн- и офлайн-событий. Для онлайн-события на сайте вызывают ym(12345678, 'reachGoal', 'ID_ЦЕЛИ'), где 12345678 — фиктивный пример номера счётчика, а ID_ЦЕЛИ совпадает с идентификатором в настройках цели. Для офлайн-событий используют передачу офлайн-данных.

Почему для формы нужен submit, а не click по кнопке? +

Клик фиксирует нажатие, но не доказывает отправку формы. Для обычной формы можно настроить готовую цель «Отправка формы»; для асинхронной — вызвать reachGoal после успешного ответа сервера.

Как проверить JavaScript-событие в Метрике? +

Добавьте к адресу _ym_debug=2 (или &_ym_debug=2, если параметры уже есть) и выполните действие: данные будут видны в Events и Console, если стоит новый код счётчика. При включённой опции «Не учитывать мои визиты» используйте приватное окно браузера.

Можно ли передать параметры вместе с reachGoal? +

Да. Необязательный аргумент params передаёт параметры визита. Они могут использоваться в отчётах, группировках и сегментации; для этого JavaScript-цель должна быть отдельной целью счётчика, а не только шагом составной цели.

Можно ли считать открытие поп-апа заявкой? +

Нет. Если поп-ап открывается автоматически, вызов reachGoal в момент его показа создаст фантомную конверсию. Событие ставят на осмысленное действие посетителя или на успешную отправку формы.

Читайте ещё в блоге

SEO И ПРОДВИЖЕНИЕ САЙТА Аудит сайта: что проверить и как читать отчёт Аудит сайта: что проверить и как читать отчёт Клиент прислал скрин: «Реклама крутится, денег нет». Захожу в кабинет, всё настроено Открыть дело → ВЕБ-АНАЛИТИКА Аналитика сайта: что смотреть каждую неделю Аналитика сайта: что смотреть каждую неделю Отчёт сдал в пятницу, в понедельник заказчик пишет: «А почему цифры не […] Открыть дело → ВЕБ-АНАЛИТИКА Трафик на сайт - откуда брать Трафик на сайт: откуда брать и как считать Обзор каналов привлечения трафика на сайт и способов считать их результат. Открыть дело → ВЕБ-АНАЛИТИКА Коллтрекинг: что это и как работает Коллтрекинг: что это и как подключить Я Евгений Вязников, эксперт по performance-маркетингу, в маркетинге с 2017 года. Раб Открыть дело → ВЕБ-АНАЛИТИКА Вебвизор Яндекс.Метрики: как смотреть сайт глазами клиента Вебвизор Метрики: как включить и что смотреть С 2017 копаюсь в цифрах рекламы: Директ, таргет, Метрика. 350+ проектов от [… Открыть дело → ВЕБ-АНАЛИТИКА Счётчик Яндекс.Метрики: как создать и установить на сайт Яндекс Метрика: как установить счётчик и настроить Счетчик Метрики : это фрагмент кода Яндекс Метрики на сайте, без которого […] Открыть дело → ВКОНТАКТЕ Генератор UTM-меток для Директа и ВК: инструмент Генератор UTM-меток для Директа и ВК: соберите ссылку за 30 секунд Генератор UTM-меток для Яндекс Директа: укажите адрес, продукт и дату старта, затем Открыть дело → ВЕБ-АНАЛИТИКА UTM-метки для Яндекс.Директа и РСЯ: гид без ошибок 13 параметров UTM-метки для Директа и РСЯ: как собрать и не потерять данные Меня зовут Евгений Вязников с 2017 года занимаюсь цифровым маркетингом: таргетирован Открыть дело →
Дальше: в канале

Что запускаю, что получается, что сливаю

Причёсанные кейсы дозревают здесь, на сайте. А в канале работа идёт в моменте: цифры в тот же день, честные провалы, приколы из практики и шаблоны, которые я делаю себе и отдаю бесплатно.

Телеграм-канал Евгения Вязникова

Телеграм

Черновики кампаний и цифры в тот же день.

Подписаться в Телеграм
Канал Евгения Вязникова в МАКС

МАКС

Всё то же самое, если удобнее в МАКС.

Подписаться в МАКС
Следующий шаг

Это причёсанная версия. Черновики: в канале

Статья дозревала неделями. В канале всё в моменте: запускаю, показываю, сливаю, тоже показываю. С цифрами и приколами.

Подарок

Где вам удобнее получить материал?

«130 методов привлечения клиентов из интернета»: выберите канал, пришлём туда.

Подписаться на рассылку

Дайджесты, кейсы и советы по рекламе: раз в месяц.

Вы подписаны!

Ближайший дайджест придёт на

В моменте

Показываю работу, пока она горячая

Кампании, которые я веду прямо сейчас: гипотезы, цифры в тот же день, честные провалы и бесплатные шаблоны. Причёсанное: на сайте, живое: в канале.

Телеграм МАКС
Подписка

Куда вам удобнее?

В обоих одно и то же: работа в моменте, цифры в тот же день, приколы и бесплатные шаблоны.

Дело не в трафике. Вязников

Реклама. Нейросети. Цифры.

Показываю эксперименты, живые проекты: ошибки, результаты. Подписывайтесь, где удобнее.