Как отключить Яндекс Метрику до согласия на cookie
Чтобы отключить Яндекс Метрику до согласия и не остаться без статистики, загружайте ее в режиме без cookie, а полный режим включайте только после нажатия «Принять». Такой режим у Метрики есть, и персональных данных он не создает. Уже загруженный счетчик переключить нельзя, поэтому режим выбирают до инициализации, и на этом часто ломаются самодельные решения.
Что именно нарушается, если Метрика загружается сразу
При инициализации счетчик записывает в браузер идентификатор _ym_uid. Это число сохраняется между визитами, отличает посетителя от остальных и связывает его сессии в одну историю. Поэтому обработка попадает под 152-ФЗ, ведь данные относятся к определяемому человеку, даже если имени и почты в них нет.
Для таких счетчиков нужно согласие посетителя (ст. 6 и 9 152-ФЗ), а с 1 сентября 2025 года (ФЗ-156) его оформляют отдельно от других документов. Обработка начинается с установки идентификатора, отчет в Яндекс уходит позже. Если баннер уже показан, а скрипт уже работает, согласие спрашивают после того, как данные начали собирать, и требование не выполнено.
Многие встроенные уведомления о cookie на конструкторах показывают плашку и запоминают, что ее закрыли, но загрузку сторонних скриптов не задерживают. Счетчик в шаблоне сайта срабатывает раньше баннера. В Tilda так работают блоки T657, T886 и T887. Блок T972 задерживает Метрику, подключенную через настройки сайта, а код, вставленный вручную, без дополнительной разметки не останавливает.
Понять, ваш ли это случай, проще всего снаружи. Бесплатная проверка сайта находит счетчики в коде страницы, cookie-баннер и режим Метрики без cookie. Загружается ли счетчик до нажатия «Принять», проверьте в DevTools по инструкции ниже, от этого и зависит, выполнено ли требование. Политику использования cookie и форму согласия для баннера с вашими реквизитами можно оформить пакетом «Расширенный», от 990 руб.
Режим без cookie позволяет считать трафик до согласия
Полностью отказываться от статистики до согласия не обязательно. У Метрики есть параметр инициализации cookies: false, и в этом режиме счетчик не записывает идентификатор в браузер. Каждый визит остается анонимным и не связывается с предыдущими. Вы видите число просмотров, источники и географию, но не уникальных посетителей и не поведение одного человека во времени.
Раз идентификатор не создается, персональных данных не появляется, и согласие для такого режима не требуется. Так вы сохраняете базовую статистику по тем, кто до баннера не дошел или отказался.
Остаются просмотры, источники переходов, поисковые фразы, география, устройства и отказы. Пропадают уникальные посетители, возвраты, полноценный Вебвизор и длинные воронки по одному пользователю.
Рабочий код с переходом в полный режим после согласия
Самодельные решения часто пытаются «переинициализировать» счетчик после нажатия кнопки. Повторный вызов init с другими параметрами существующий счетчик не переключает, параметры фиксируются при первой инициализации. Поэтому режим определяют до вызова init, по выбору, сохраненному раньше:
var STORAGE_KEY = 'cookie_prefs';
var prefs = null;
try {
var raw = localStorage.getItem(STORAGE_KEY);
if (raw) { prefs = JSON.parse(raw); }
} catch (e) { prefs = null; }
function loadMetrika(withCookies) {
(function (m, e, t, r, i, k, a) {
m[i] = m[i] || function () { (m[i].a = m[i].a || []).push(arguments); };
m[i].l = 1 * new Date();
for (var j = 0; j < document.scripts.length; j++) {
if (document.scripts[j].src === r) { return; }
}
k = e.createElement(t); a = e.getElementsByTagName(t)[0];
k.async = 1; k.src = r; a.parentNode.insertBefore(k, a);
})(window, document, 'script', 'https://mc.yandex.ru/metrika/tag.js', 'ym');
ym(XXXXXXXX, 'init', {
cookies: withCookies,
webvisor: withCookies,
clickmap: true,
ssr: true,
accurateTrackBounce: true,
trackLinks: true
});
}
loadMetrika(!!(prefs && prefs.analytics));При первом визите prefs пуст, и счетчик запускается без cookie. Если посетитель нажал «Принять все», выбор записывается в localStorage, и с cookie счетчик запустится после перезагрузки или на следующей странице. Если он нажал «Только необходимые», режим остается анонимным.
Какие параметры связывать с согласием
| Параметр | Зависит от согласия | Почему |
|---|---|---|
cookies |
Да | Он управляет записью идентификатора _ym_uid |
webvisor |
Да | Запись сессии фиксирует поведение и ввод, это самая чувствительная часть аналитики |
clickmap |
Нет | Карта кликов собирает координаты по странице без привязки к человеку, идентификатор ей не нужен |
Параметр clickmap лучше не выключать. Часть целей Метрики, например «клик по кнопке», опирается на карту кликов и без нее не срабатывает. Если выключить его для тех, кто не дал согласия, вы потеряете собственные конверсии и заметите это не сразу.
У других счетчиков режима без cookie обычно нет
Top.Mail.Ru, рекламные пиксели и большинство сторонних трекеров анонимного режима не предлагают. Поэтому до согласия их скрипт вообще не должен появляться в DOM, загрузить его и выключить недостаточно. Удобно вынести их загрузку в отдельную функцию и вызывать ее только по флагу согласия:
function applyPrefs(p) {
loadMetrika(!!p.analytics);
if (p.ads) { loadMailRu(); }
}Как разложить трекеры по категориям и почему хватает трех групп, разобрано в статье «Cookie-баннер с возможностью отказа».
Как проверить, что получилось
- Откройте сайт в приватном окне, баннер не трогайте.
- Откройте в DevTools вкладку Application, раздел Cookies. Значений
_ym_uidи_ym_dтам быть не должно. - Нажмите «Только необходимые» и перезагрузите страницу. Идентификаторов по-прежнему нет.
- Нажмите «Принять все» и перезагрузите страницу. Появится
_ym_uid. - Во вкладке Network до согласия не должно быть запросов к сторонним счетчикам, у которых нет режима без cookie.
Визиты без cookie видны в отчетах Метрики, поэтому то, что данные идут, ничего не доказывает. Проверять настройку надо по браузеру, где до согласия не должно быть _ym_uid.
Что описать в документах
Одной технической настройки мало. Перечень трекеров, назначение каждого, срок хранения и порядок отзыва согласия описывают в политике использования cookie, а передачу данных Яндексу как обработчику в политике конфиденциальности. Требования к обоим документам есть в статьях «Cookie-баннер для сайта» и «Политика конфиденциальности для сайта».
Проверьте баннер и счетчики на вашем сайте
Бесплатный аудит смотрит на сайт снаружи. Он проверяет, есть ли cookie-баннер и кнопка отказа в нем и какие счетчики подключены в коде страницы. Первые находки видны сразу. Поведение счетчика до согласия потом проверьте в DevTools по инструкции выше.
Проверить сайт бесплатноЧасто задаваемые вопросы
Можно, но только в анонимном режиме с параметром cookies: false. В нем счетчик не записывает идентификатор _ym_uid, персональные данные не появляются, и согласие не требуется. Полный режим с cookie включают только после явного согласия.
Параметры счетчика фиксируются при первой инициализации, повторный init их не переключает. Режим нужно определять до вызова init по выбору, сохраненному в localStorage, а новый режим применять при следующей загрузке страницы.
Параметры cookies и webvisor связывают с согласием, они завязаны на идентификатор посетителя и запись его поведения. Параметр clickmap оставляют включенным. Карта кликов собирает данные по странице без привязки к человеку, и от нее зависят цели вроде «клик по кнопке».
Анонимного режима у них обычно нет, поэтому до согласия их скрипт вообще не должен появляться в DOM. Загрузку выносят в отдельную функцию и вызывают ее только по флагу согласия.