Настроили цель, запустили рекламу - а в отчётах нули. Знакомо?
В большинстве случаев причина не в Метрике, а в одной из типичных ошибок настройки или кода. В этой статье - 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 страницы».
Источники
- Яндекс Метрика - Решение проблем с работой целей
- Concept360 - Почему не работают цели в Яндекс Метрике
- Яндекс Метрика - Цель через JavaScript-событие
- Яндекс Метрика - Отладчик работы счётчика
- Topvisor Journal - Панель отладки Метрики (_ym_debug=2)
- Tilda - Не работают цели в Метрике
- Яндекс Метрика - Автоматические цели



.svg.webp)





