Cookie-баннер для сайта и Яндекс Метрика: готовый код и как подключить счётчик
Актуально на 09.11.2026. Материал носит справочный характер и не является юридической консультацией.
Счётчики статистики — Яндекс Метрика, пиксель VK, Google Analytics — получают сведения о посетителях: идентификаторы cookie, IP-адрес, сведения о браузере, просмотренные страницы. Закон № 152-ФЗ не упоминает cookie прямо. Но если такие сведения позволяют выделить конкретного посетителя, их обработку безопаснее рассматривать как обработку персональных данных. Тогда нужны основание (как правило, согласие), описание этой цели в политике и указание сервиса статистики как лица, которое обрабатывает данные по поручению владельца сайта.
Как подключить счётчик аккуратно
- Показывайте баннер о cookie с кнопками «Принять» и «Только необходимые».
- Загружайте счётчик только после нажатия «Принять». Если код Метрики стоит в шапке сайта, он срабатывает до выбора посетителя, и баннер ничего не меняет.
- Опишите в политике цель «сбор статистики посещений», перечень данных и сервис статистики с его реквизитами.
- Оставьте посетителю возможность изменить выбор: ссылка «Настройки cookie» в подвале сайта.
Готовый код cookie-баннера
Бесплатно, тот же код, что в нашем платном комплекте. Баннер показывает кнопки «Принять» и «Только необходимые», запоминает выбор в браузере и запускает счётчики только после «Принять». Ссылка с атрибутом data-cookie-settings в подвале позволяет изменить выбор.
- Скопируйте код и вставьте его перед закрывающим тегом
</body>. В Tilda — в блок T123 «HTML-код», удобнее всего в общем подвале, который показывается на всех страницах. В WordPress — в файл footer.php темы или через плагин для вставки кода. - Перенесите код счётчика Метрики внутрь функции
loadAnalytics()— содержимое тега<script>, без самого тега, — и удалите счётчик из прежнего места. - Если политика опубликована не по адресу
/privacy, поправьте ссылку в тексте баннера. - Проверьте: откройте сайт в режиме инкогнито — баннер появляется, а до нажатия «Принять» в инструментах разработчика (вкладка Network) нет запросов к mc.yandex.ru.
<!-- Баннер о файлах cookie для сайта [адрес сайта]. Вставьте весь этот код перед закрывающим тегом </body>. -->
<div id="ck-banner" role="dialog" aria-live="polite" aria-label="Файлы cookie" hidden>
<p>Мы используем файлы cookie и сервисы статистики (Яндекс Метрика), чтобы улучшать сайт. Нажимая «Принять», вы соглашаетесь на их использование в соответствии с <a href="/privacy">Политикой обработки персональных данных</a>.</p>
<div class="ck-actions"><button type="button" id="ck-accept">Принять</button><button type="button" id="ck-decline">Только необходимые</button></div>
</div>
<style>
#ck-banner { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 99999; max-width: 720px; margin: 0 auto; background: #1f2328; color: #fff; border-radius: 14px; padding: 16px 18px; box-shadow: 0 10px 30px rgba(0,0,0,.25); font: 14px/1.45 -apple-system, Segoe UI, Roboto, Arial, sans-serif; }
#ck-banner p { margin: 0 0 12px; } #ck-banner a { color: #8cc8ff; }
#ck-banner .ck-actions { display: flex; gap: 8px; flex-wrap: wrap; }
#ck-banner button { border: 0; border-radius: 10px; padding: 10px 16px; font: inherit; font-weight: 600; cursor: pointer; }
#ck-accept { background: #fff; color: #1f2328; } #ck-decline { background: transparent; color: #fff; box-shadow: inset 0 0 0 1px rgba(255,255,255,.4); }
</style>
<script>
(function () {
var KEY = 'cookie-consent'; // 'all' | 'necessary'
// Перенесите сюда код счётчиков статистики (без тегов <script>), удалив его из прежнего места.
// Пример для Яндекс Метрики: вставьте содержимое её тега <script>, а тег <noscript> не нужен.
function loadAnalytics() {
// ВСТАВЬТЕ КОД СЧЁТЧИКОВ ЗДЕСЬ
}
function read() { try { return localStorage.getItem(KEY); } catch (e) { return null; } }
function save(v) { try { localStorage.setItem(KEY, v); } catch (e) {} }
var banner = document.getElementById('ck-banner');
var choice = read();
if (choice === 'all') loadAnalytics();
if (!choice) banner.hidden = false;
document.getElementById('ck-accept').onclick = function () { save('all'); banner.hidden = true; loadAnalytics(); };
document.getElementById('ck-decline').onclick = function () { save('necessary'); banner.hidden = true; };
// Ссылка «Настройки cookie» в подвале: <a href="#" data-cookie-settings>Настройки cookie</a>
document.addEventListener('click', function (e) {
var el = e.target.closest && e.target.closest('[data-cookie-settings]');
if (!el) return;
e.preventDefault();
try { localStorage.removeItem(KEY); } catch (err) {}
location.reload();
});
})();
</script>
Вебвизор и формы
Вебвизор Метрики записывает действия посетителей на странице. Если на сайте есть формы с личными данными, проверьте настройки записи содержимого полей или отключите Вебвизор на страницах с формами. Иначе введённые данные могут попасть в записи сессий.
Google Analytics и другие зарубежные сервисы
Передача данных зарубежному сервису — трансграничная передача. До её начала оператор направляет в Роскомнадзор отдельное уведомление (часть 3 статьи 12 152-ФЗ) и получает от получателя сведения о мерах защиты (часть 5 статьи 12). Если без зарубежного счётчика можно обойтись, проще использовать российскую Яндекс Метрику.
Уведомление Роскомнадзора
Цель «сбор статистики» указывается в уведомлении об обработке персональных данных наравне с остальными. Если счётчик появился уже после подачи уведомления, сведения нужно обновить не позднее 15-го числа следующего месяца (часть 7 статьи 22).