Сайт использует сookies для хранения данных. Продолжая использовать сайт, вы даёте согласие на работу с этими файлами.

ОК
📈
Маркетинг
Опубликовано:
25.06.2026
Обновлено:
09.07.2026

Цель не срабатывает в Яндекс Метрике: диагностика и 25 причин

Тимофей Ищенко

Настроили цель, запустили рекламу - а в отчётах нули. Знакомо?

В большинстве случаев причина не в Метрике, а в одной из типичных ошибок настройки или кода. В этой статье - 25 конкретных причин, почему цель не срабатывает, и чеклист отладки за 10 минут.

Как работает система целей в Яндекс Метрике

Прежде чем искать ошибку - разберёмся в механике.

Типы целей и когда что применять

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

Тип цели Когда использовать
Переход на страницу (URL) Пользователь открыл страницу /thanks после заявки
JavaScript-событие Клик по кнопке, отправка AJAX-формы - без смены URL
Время на сайте Посетитель провёл на сайте ≥ N минут
Глубина просмотра Посетитель открыл ≥ N страниц за визит
Условие на странице Комбинация условий (URL + событие)

Выбор не того типа - одна из самых частых причин сбоя.

Как Метрика передаёт данные о достижении цели

Цепочка простая: браузер загружает счётчик → пользователь совершает действие → срабатывает ym(ID, 'reachGoal', 'TARGET') → данные уходят на серверы Яндекса → попадают в отчёт.

Если хотя бы одно звено сломано - цель не зафиксируется.

Задержка обработки: сколько ждать

Яндекс Метрика - распределённая система. После создания новой цели данные начинают поступать через 15–30 минут. Если вы тестируете сразу после сохранения - подождите и попробуйте снова.

Ошибки в коде счётчика и его установке (причины 1–8)

Как проверить счётчик Яндекс Метрики

Причина 1. Счётчик установлен не на всех страницах

Код счётчика стоит только на главной. Цель срабатывает на странице /contacts - а там счётчика нет. Событие исчезает в никуда.

Как проверить: откройте целевую страницу → Ctrl+U → ищите mc.yandex.ru/metrika/ в коде.

Причина 2. Устаревший код счётчика после обновления настроек

Включили Вебвизор или изменили параметры счётчика в интерфейсе - а на сайте остался старый код. Новые функции работать не будут.

Как исправить: зайдите в настройки счётчика → «Код счётчика» → скопируйте актуальный код → замените на сайте.

Причина 3. ID счётчика не совпадает

В коде написано id: 12345678, а ваш счётчик - 87654321. Данные уходят в чужой счётчик.

Как проверить: сравните id в коде на сайте с ID в адресной строке браузера при открытии Метрики.

Причина 4. Счётчик установлен после закрывающего </body>

Позиция имеет значение. Код должен стоять перед </body>. Если он ниже - часть браузеров загружает его с задержкой или не загружает совсем.

Причина 5. Двойная установка счётчика

Счётчик вставили вручную и одновременно через плагин (например, в WordPress). Два экземпляра конфликтуют, данные задваиваются или теряются.

Как проверить: Ctrl+F в исходном коде страницы → ищите строку mc.yandex.ru - должна быть ровно одна.

Причина 6. Счётчик не загружается из-за медленного сервера

Пользователь успел совершить целевое действие - нажать «Отправить» и уйти - до того, как успел загрузиться скрипт Метрики. Особенно критично на медленном хостинге.

Причина 7. Неверная версия кода счётчика

На сайте стоит устаревший синтаксис Ya.Metrika({id: ...}), а актуальный - ym(ID, 'init', {...}). Старая версия перестала поддерживаться.

Причина 8. Счётчик в кэше CDN

Обновили код - но CDN отдаёт закэшированную старую версию страницы. Сбросьте кэш CDN после изменений.

Ошибки в настройке самой цели (причины 9–17)

Как настроить цель JavaScript-событие в Яндекс Метрике

Эти причины не видны снаружи - ошибка спрятана в деталях настройки.

Причина 9. Неверный тип цели

Вы используете reachGoal(), но в интерфейсе выбрали тип «Переход на страницу». Метрика ждёт URL-событие, а получает JS - и игнорирует его.

Как исправить: откройте настройки цели → убедитесь, что выбрано «JavaScript-событие».

Причина 10. Кириллица и спецсимволы в идентификаторе

Идентификатор 'Заказ' или 'form submit' с пробелом не работает. Только латиница, цифры и нижнее подчёркивание.

  • ✅ Правильно: ORDER_FORM, CALL_REQUEST
  • ❌ Неправильно: Заказ, form-submit, buy button

Причина 11. Несовпадение регистра идентификатора

'Order' и 'order' - разные цели. Метрика чувствительна к регистру в reachGoal.

Причина 12. Цель создана в интерфейсе, но не прописана в коде

В ЯМ есть цель FORM_SUBMIT, а в коде кнопки нет вызова ym(ID, 'reachGoal', 'FORM_SUBMIT'). Метрика её никогда не получит.

Причина 13. reachGoal вызывается до загрузки счётчика

Событие onclick срабатывает раньше, чем загрузился скрипт Метрики. В консоли увидите ym is not defined.

Как исправить: используйте проверку перед вызовом:

if (typeof ym === "function") {
  ym(XXXXXX, "reachGoal", "TARGET_NAME");
}

Причина 14. Цель неактивна в интерфейсе

Цель создана, но со временем переведена в статус «Неактивна». Метрика перестала её отслеживать.

Где проверить: «Цели» → найдите нужную → колонка «Статус».

Причина 15. Цель в коде есть, но не создана в аккаунте Метрики

Обратная ситуация: reachGoal вызывается, но цели с таким идентификатором нет в аккаунте. Данные уходят в «никуда» - они не потеряны, но нигде не отображаются.

Причина 16. Достигнут лимит целей

У одного счётчика максимум 200 целей. Если лимит достигнут, новые цели создать нельзя, а старые могут вести себя непредсказуемо ⚠️.

Причина 17. Многошаговая цель: пропущен промежуточный шаг

В воронке настроено три шага, но событие шага №2 не вызывается в коде. Вся воронка ломается.

Технические препятствия на сайте (причины 18–25)

Технические ошибки Яндекс Метрики: отладка

Причина 18. Блокировщики рекламы и антивирусы

AdBlock, uBlock Origin, Kaspersky Internet Security блокируют загрузку mc.yandex.ru/metrika/tag.js. Когда вы тестируете цель с включённым AdBlock - ничего не сработает.

Что делать: при тестировании отключайте расширения. Реальные пользователи с AdBlock также не фиксируются - это норма.

Причина 19. Счётчик не установлен внутри iframe

Форма загружается в <iframe> (например, виджет обратного звонка). Родительский счётчик туда не заглядывает. Нужно поставить отдельный счётчик Метрики внутри iframe.

Причина 20. Динамический контент: AJAX-формы и попапы

Кнопка или форма создаются динамически через JS после загрузки страницы. Навесить onclick статически нельзя - нужно использовать делегирование событий:

document.addEventListener("click", function (e) {
  if (e.target.closest(".btn-order")) {
    ym(XXXXXX, "reachGoal", "ORDER_CLICK");
  }
});

Причина 21. CSP-заголовок блокирует скрипт

Заголовок Content-Security-Policy на вашем сервере не включает домен mc.yandex.ru в список разрешённых источников. Браузер блокирует загрузку скрипта молча - без видимых ошибок в интерфейсе.

Как исправить: добавьте в CSP директиву:

script-src 'self' mc.yandex.ru

Причина 22. HTTP/HTTPS-конфликт

Сайт работает по HTTPS, а код счётчика вставлен с http://. Браузер блокирует смешанный контент. Всегда используйте HTTPS-версию кода Метрики.

Причина 23. SPA: URL не меняется при переходах

На React / Vue / Angular-сайте URL меняется через History API, а не перезагрузкой страницы. Цель типа «URL» не сработает. Нужно вручную вызывать ym(ID, 'hit', location.href) при каждом переходе.

Причина 24. Фильтрация действий владельца

Вы авторизованы в Яндексе как владелец счётчика и тестируете сайт. Метрика по умолчанию не учитывает ваши действия.

Как исправить: настройки счётчика → «Фильтрация» → отключите «Не учитывать мои визиты» при тестировании. Или используйте режим инкогнито с другим аккаунтом.

Причина 25. VPN меняет страну - цель засчитывается, но фильтруется

Если на счётчике настроена фильтрация по географии, а вы тестируете через VPN с зарубежным IP - данные могут попасть под фильтр и не отображаться в отчёте.

Как отладить цель за 10 минут: пошаговый алгоритм

Это главный раздел. Следуйте шагам последовательно.

Отладчик Яндекс Метрики: документация

Шаг 1 - Режим _ym_debug=2

Добавьте к адресу страницы параметр ?_ym_debug=2:

https://example.com/?_ym_debug=2

В правом нижнем углу появится значок Метрики - нажмите на него. Совершите целевое действие (нажмите кнопку, отправьте форму).

Что смотреть:

  • Строка reachGoal с вашим идентификатором - событие ушло ✅
  • Ничего не появилось - код reachGoal не вызывается ❌
  • ERROR - счётчик загружён с ошибкой ❌

Личная заметка: _ym_debug=2 - первое, что нужно открыть при любом сбое с целями. Это экономит 90% времени диагностики.

Шаг 2 - Консоль браузера (F12)

Откройте DevTools → вкладка Console. Введите:

typeof ym;
  • "function" - счётчик загружен ✅
  • "undefined" - счётчик не загружен ❌ (ищите причины 1–8)

Если в консоли видите ym is not defined - вернитесь к причинам 1, 7 или 13.

Чеклист «10 минут на диагностику»

- [ ] Счётчик на целевой странице есть (Ctrl+U → mc.yandex.ru)
- [ ] ID счётчика в коде совпадает с ID в аккаунте
- [ ] _ym_debug=2 - событие reachGoal видно в панели
- [ ] Тип цели в интерфейсе - «JavaScript-событие» (если используется reachGoal)
- [ ] Идентификатор - только латиница/цифры/нижнее подчёркивание, регистр совпадает
- [ ] Цель активна в аккаунте Метрики
- [ ] Фильтр владельца отключён на время теста
- [ ] AdBlock выключен
- [ ] Прошло > 15 минут после создания цели

Если все пункты чеклиста в порядке, а цель всё равно не работает - напишите в комментариях с описанием архитектуры сайта (iframe, SPA, GTM). Разберём конкретный кейс.

FAQ

Почему цель в Яндекс Метрике не срабатывает, хотя счётчик установлен?

Чаще всего - неверный тип цели, несовпадение идентификатора в коде и интерфейсе Метрики, или вызов reachGoal до загрузки счётчика. Первый шаг - открыть страницу с ?_ym_debug=2 и совершить целевое действие.

Как быстро проверить, работает ли цель?

Добавьте ?_ym_debug=2 к URL → нажмите значок Метрики → совершите действие. В панели должна появиться строка reachGoal с вашим идентификатором.

Почему цель не работает, если код правильный?

AdBlock блокирует скрипт, включена фильтрация действий владельца, сайт работает через iframe без счётчика, или CSP-заголовок запрещает загрузку mc.yandex.ru.

Через сколько появляются данные по целям?

Через 15–30 минут после создания цели и совершения действия. Если данных нет больше суток - проблема в настройках.

Почему форма не отслеживается Метрикой?

Три основные причины: форма отправляется через AJAX (нужна JS-цель), форма в iframe без счётчика, кнопка создаётся динамически.

Что означает «ym is not defined»?

Счётчик не загружен к моменту вызова reachGoal. Причины: счётчика нет на странице, он заблокирован AdBlock, или reachGoal вызывается до загрузки скрипта.

Как отслеживать цели на SPA (React/Vue)?

Вызывайте ym(ID, 'hit', location.href) при каждой смене маршрута и используйте JavaScript-события вместо цели типа «URL страницы».

Источники

  1. Яндекс Метрика - Решение проблем с работой целей
  2. Concept360 - Почему не работают цели в Яндекс Метрике
  3. Яндекс Метрика - Цель через JavaScript-событие
  4. Яндекс Метрика - Отладчик работы счётчика
  5. Topvisor Journal - Панель отладки Метрики (_ym_debug=2)
  6. Tilda - Не работают цели в Метрике
  7. Яндекс Метрика - Автоматические цели
Это авторская статья, основанная на личном опыте и субъективном взгляде автора. Заметили ошибку или битую ссылку? Сообщите нам: info@codesrc.ru - мы оперативно исправим. Спасибо, что помогаете делать блог лучше.
Следите за нами в соцсетях:

Читайте также