Коротко
Согласие на обработку cookies для сайта нужно тогда, когда сайт ставит не только технические cookie, без которых он не работает, но и аналитические или рекламные: счётчик Яндекс Метрики, пиксели соцсетей, коды ретаргетинга. В этом случае посетителю показывают окно с коротким текстом, ссылкой на политику cookie и кнопками выбора, а аналитику подключают в соответствии с его решением.
Технически задача несложная: баннер, отдельная страница с политикой и немного JavaScript, который запоминает выбор. Сложности начинаются в деталях — кэширование страниц, порядок загрузки счётчиков, тексты, которые не противоречат политике конфиденциальности. Ниже — как сделать всё аккуратно в WordPress и 1С-Битрикс.
| Что нужно | Зачем | Где размещается |
|---|---|---|
| Окно уведомления | Сообщить о cookie и получить выбор | Внизу страницы, на всех страницах |
| Политика cookie | Объяснить, какие cookie и зачем | Отдельная страница, ссылка из окна и подвала |
| Запоминание выбора | Не показывать окно повторно | Cookie или localStorage браузера |
| Условная загрузка счётчиков | Выполнить выбор посетителя | Код шаблона или плагин |
Основная мысль
Баннер cookie — это не наклейка «для галочки», а переключатель: если посетитель нажал «отказаться», а Метрика всё равно загрузилась, окно только создаёт видимость порядка.
Большинство сайтов ограничиваются плашкой «Мы используем cookie» с одной кнопкой «ОК». Это уведомление, а не согласие: выбора у посетителя нет. Для сайта, который вообще не собирает аналитику, такой вариант может быть достаточным. Для сайта с Метрикой, рекламными пикселями и формами логика должна быть другой.
Требования к cookie в России прямо не расписаны отдельным документом, а практика применения закона о персональных данных меняется. Поэтому ниже — подход практика-разработчика: как технически сделать уведомление и согласие корректно. Формулировки текстов и то, нужен ли на вашем сайте явный выбор, стоит сверить с юристом.
Cookie — небольшие фрагменты данных, которые сайт или сторонний сервис сохраняет в браузере посетителя. Они позволяют узнать браузер при следующем визите: держать сессию входа, помнить корзину, считать уникальных посетителей.
| Тип | Пример | Нужен ли выбор посетителя |
|---|---|---|
| Строго необходимые | Сессия, корзина, защита форм | Обычно нет, достаточно уведомления |
| Функциональные | Язык, выбранный город | Зависит от политики сайта |
| Аналитические | Яндекс Метрика, веб-аналитика | Как правило, да |
| Рекламные | Пиксели, ретаргетинг | Да |
Разделение по типам — основа и для окна, и для политики. Если сайт понятно делит cookie на группы, посетителю проще сделать выбор, а разработчику — реализовать его.
Свои cookie ставит сам сайт: например, WordPress запоминает, что посетитель оставлял комментарий, а 1С-Битрикс хранит идентификатор сессии. Сторонние ставят подключённые сервисы: счётчики, виджеты чатов, видеоплееры, карты. Именно сторонние сервисы обычно и превращают простой сайт в сайт, которому нужно согласие.
Откройте сайт в режиме инкогнито, затем инструменты разработчика браузера: вкладка «Application» в Chrome или «Хранилище» в Firefox, раздел Cookies. Там видны все cookie с доменами. Пройдите по нескольким страницам, отправьте форму, добавьте товар в корзину — список пополнится. Это и есть исходные данные для политики.
Эти понятия часто смешивают, хотя технически это разные решения.
Уведомление
Уведомление об использовании cookies на сайте информирует: сайт использует cookie, подробности — в политике. Кнопка одна — «Понятно» или «Закрыть». Все скрипты загружаются сразу, независимо от реакции посетителя. Такой вариант подходит сайтам, которые используют только технические cookie.
Согласие
Согласие предполагает выбор. В окне как минимум две кнопки: «Принять» и «Только необходимые», иногда третья — «Настроить» с переключателями по группам. Аналитические и рекламные скрипты загружаются только после согласия. Выбор сохраняется, и его можно изменить позже — например, по ссылке «Настройки cookie» в подвале.
Что выбрать
Если на сайте есть Метрика, формы, чаты и рекламные коды, безопаснее реализовать согласие с выбором. Соглашение cookie на сайт в виде «продолжая пользоваться сайтом, вы соглашаетесь» юристы часто считают слабым: молчание посетителя трудно трактовать как согласие. Окончательное решение — вместе с юристом, а разработчик должен сделать так, чтобы оба варианта переключались настройкой, а не переписыванием кода.
Политика cookie — отдельная страница, на которую ведёт ссылка из окна и из подвала. Иногда её делают разделом политики конфиденциальности, но отдельная страница удобнее: её проще обновлять при подключении нового сервиса.
Структура политики
- кто оператор: наименование компании, контакты;
- что такое cookie — коротко, без учебника;
- какие группы cookie использует сайт и для чего;
- какие сторонние сервисы ставят свои cookie: аналитика, карты, виджеты;
- сроки хранения — в общем виде или по группам;
- как посетитель может отказаться или изменить выбор: кнопка на сайте и настройки браузера;
- как это связано с политикой обработки персональных данных;
- дата последнего обновления.
Политика обработки файлов cookie на сайте должна описывать реальное положение дел. Если в политике не упомянута Метрика, а она стоит, документ скорее вредит, чем помогает. Поэтому политику пишут после инвентаризации cookie, а не копируют с чужого сайта.
Связь с политикой конфиденциальности
Политика конфиденциальности для сайта с cookies должна содержать упоминание cookie и данных аналитики среди обрабатываемых данных и ссылку на отдельную политику cookie. Как составить основную политику, разобрано в статье «Политика конфиденциальности для сайта». Тексты обоих документов не должны противоречить друг другу.
Окно — единственное, что видит большинство посетителей. Оно должно быть понятным и не мешать пользоваться сайтом.
Текст окна
Два-три предложения, без юридических оборотов. Пример структуры: что сайт использует cookie, для чего — работа сайта и аналитика, ссылка «Подробнее в политике cookie», кнопки выбора. Не пишите «мы используем cookie для улучшения вашего опыта» — это ничего не объясняет.
Кнопки
- «Принять» и «Только необходимые» — одинакового размера и заметности;
- «Настроить» — если сайт использует несколько групп необязательных cookie;
- крестик закрытия без выбора лучше не делать: непонятно, что он означает.
Если кнопку отказа делают серой мелкой ссылкой, а согласия — яркой, это считается манипуляцией. Для доверия и для юридической чистоты кнопки должны быть равноценными.
Расположение и поведение
Окно cookie на сайте лучше ставить плашкой внизу экрана, а не модальным окном на весь экран. Плашка не должна закрывать кнопку заявки, корзину или чат на телефоне. Высота на мобильном — не больше трети экрана.
Окно не должно сдвигать содержимое при появлении. Иначе растёт показатель CLS, одна из метрик Core Web Vitals с целевым значением не больше 0,1. Правильно — фиксированное позиционирование поверх контента.
Если нужен минимальный баннер без плагинов, его собирают из разметки, стилей и небольшого скрипта. Ниже — основа, которая запоминает выбор и подключает аналитику только после согласия.
Разметка
<div id="cookie-banner" class="cookie-banner" hidden>
<p>Сайт использует cookie для работы и аналитики.
<a href="/politika-cookie/">Политика cookie</a></p>
<button type="button" id="cookie-accept">Принять</button>
<button type="button" id="cookie-decline">Только необходимые</button>
</div>
Скрипт
(function () {
var KEY = 'cookie_consent';
var banner = document.getElementById('cookie-banner');
var saved = null;
try { saved = localStorage.getItem(KEY); } catch (e) {}
function loadAnalytics() {
// здесь подключается код счётчика и других необязательных сервисов
}
if (saved === 'all') { loadAnalytics(); }
else if (!saved) { banner.hidden = false; }
document.getElementById('cookie-accept').addEventListener('click', function () {
try { localStorage.setItem(KEY, 'all'); } catch (e) {}
banner.hidden = true;
loadAnalytics();
});
document.getElementById('cookie-decline').addEventListener('click', function () {
try { localStorage.setItem(KEY, 'necessary'); } catch (e) {}
banner.hidden = true;
});
})();
Как это работает
- При первом визите выбора нет — баннер показывается, аналитика не загружается.
- После «Принять» выбор сохраняется, и функция loadAnalytics подключает счётчики.
- После «Только необходимые» баннер скрывается, счётчики не загружаются.
- При следующих визитах скрипт читает выбор и сразу действует по нему.
Код счётчика Метрики переносят из шаблона внутрь функции loadAnalytics, а в шаблоне оставляют только сам баннер. Для ссылки «Настройки cookie» в подвале достаточно удалить сохранённый ключ и снова показать баннер.
Почему выбор решается в браузере
Если решать на сервере — показывать баннер или нет по наличию cookie, — страничный кэш всё сломает: закэшированная версия страницы достанется всем одинаковой. Поэтому баннер всегда есть в разметке скрытым, а показывает или прячет его скрипт на стороне браузера. Это работает с любым кэшем.
Для WordPress есть много плагинов уведомлений: достаточно поискать по слову cookie в каталоге плагинов. Известные примеры — Complianz и CookieYes. Большинство из них ориентированы на европейские требования, поэтому тексты и группы cookie придётся адаптировать под русский язык и свою политику.
Как выбирать плагин
- умеет ли блокировать скрипты до согласия, а не только показывать окно;
- есть ли группы cookie и кнопка настроек;
- совместим ли с плагином кэширования, который стоит на сайте;
- насколько тяжёлый: не тянет ли внешние скрипты с серверов разработчика;
- переводится ли интерфейс и можно ли отредактировать все тексты;
- когда плагин последний раз обновлялся.
Плагин для одного окна — всё же ещё один плагин. О том, как не перегрузить сайт расширениями, — в статье «Плагины WordPress для сайта компании». Если на сайте уже есть собственная тема и аккуратная вёрстка, баннер из предыдущего раздела часто оказывается проще и быстрее плагина.
- Сделайте резервную копию и работайте в дочерней теме.
- Разметку баннера выведите через хук wp_footer в functions.php дочерней темы.
- Скрипт подключите через wp_enqueue_script, стили — через wp_enqueue_style.
- Уберите прямую вставку кода Метрики из шаблона или плагина вставки кодов и перенесите его в функцию загрузки аналитики.
- Очистите кэш и проверьте в инкогнито: до нажатия «Принять» запросов к счётчику быть не должно.
В ядре 1С-Битрикс есть механизм соглашений пользователей для форм, но готового баннера cookie с блокировкой скриптов в стандартной поставке нет. Решений два: модуль из Маркетплейса или собственный баннер в шаблоне.
Модуль из Маркетплейса
Модули баннеров cookie в Маркетплейсе есть, но качество разное. Перед установкой проверьте, умеет ли модуль откладывать загрузку счётчиков, и совместим ли он с композитным сайтом. Правила безопасной установки описаны в статье «Модули 1С-Битрикс».
Разметку баннера размещают в footer.php шаблона сайта или в отдельной включаемой области, скрипт — в папке шаблона. Код Метрики, который часто вставлен прямо в header.php, переносят в функцию загрузки аналитики.
Главная особенность Битрикса — композитный кэш. Композит отдаёт посетителям готовую HTML-страницу, поэтому решать, показывать ли баннер, нужно только скриптом в браузере, как в примере выше. После изменений очистите кэш — как это сделать правильно, описано в статье про кэш в 1С-Битрикс.
Как не потерять данные Метрики
Главный вопрос владельцев: если счётчик загружается только после согласия, статистика станет неполной. Это правда — посетители, которые отказались или не нажали ничего, в Метрику не попадут.
Что можно сделать
- Сделать окно понятным. Короткий человеческий текст и равноценные кнопки дают больше согласий, чем пугающие формулировки.
- Не блокировать сайт окном. Посетитель должен видеть страницу, иначе уйдёт, не сделав выбора.
- Учитывать заявки в CRM. Даже если визит не попал в Метрику, сама заявка дойдёт — источник можно фиксировать по UTM-меткам в скрытых полях формы.
- Сравнивать не абсолютные цифры, а динамику. После внедрения согласия базовая линия трафика в Метрике сдвигается; сравнивайте периоды после внедрения между собой.
Проверьте после изменений, что цели срабатывают у тех, кто согласился. Как настроить цели на заявки, разобрано в статье «Цели в Яндекс Метрике».
Сценарий: сайт услуг с формами
Корпоративный сайт на WordPress: Метрика, чат и форма заявки. Баннер с двумя кнопками, Метрика и чат загружаются после согласия, форма работает всегда, потому что использует только технические cookie. В политике cookie перечислены Метрика и чат, в политике конфиденциальности — ссылка на неё.
Сценарий: интернет-магазин на 1С-Битрикс
Магазин с композитом, корзиной, Метрикой и рекламными пикселями. Корзина и сессия — необходимые cookie, работают сразу. Метрика и пиксели разнесены по группам «аналитика» и «реклама» с отдельными переключателями в окне настроек. Баннер показывается скриптом, композит не отключается.
Как проверить, что согласие работает
Внешне окно может выглядеть идеально и при этом ничего не блокировать. Проверка занимает десять минут и не требует специальных сервисов.
Пошаговая проверка в браузере
- Откройте сайт в режиме инкогнито, чтобы не было сохранённого выбора.
- Откройте инструменты разработчика и вкладку «Network» («Сеть»), обновите страницу.
- В строке фильтра наберите часть адреса счётчика, например mc.yandex. До нажатия кнопки запросов быть не должно.
- Во вкладке с cookie убедитесь, что аналитических cookie нет — только технические.
- Нажмите «Только необходимые», обновите страницу. Картина должна остаться прежней, окно — не появляться.
- Очистите данные сайта, обновите страницу и нажмите «Принять». Запросы к счётчику должны появиться сразу, без перезагрузки.
- Повторите то же на телефоне: окно не должно перекрывать кнопки и форму.
Что проверить после каждой доработки
Любой новый сервис — чат, видео, карта, рекламный код — может ставить свои cookie. Каждый раз, когда на сайт добавляют внешний скрипт, его нужно отнести к группе, подключить через функцию загрузки после согласия и дописать в политику. Удобно завести в документации сайта таблицу подключённых сервисов: название, группа cookie, где подключён, дата добавления.
Отдельно проверьте встроенные видео и карты. Многие плееры и картографические виджеты ставят cookie сразу при загрузке. Для них используют «заглушку»: вместо плеера показывается превью с кнопкой, а сам плеер подгружается по клику. Это заодно ускоряет загрузку страницы.
Типичные ошибки и чек-лист
Ошибки
- Окно есть, но счётчики загружаются до нажатия кнопки.
- Кнопка отказа спрятана или отсутствует, хотя сайт использует аналитику.
- Политика cookie скопирована с чужого сайта и не совпадает с реальными сервисами.
- Баннер выводится на сервере, и из-за кэша одним посетителям он не показывается никогда, а другим — на каждой странице.
- Окно на мобильном закрывает кнопку заказа.
- Баннер сдвигает страницу и портит CLS.
- Нет способа изменить выбор после первого нажатия.
Чек-лист
- Составлен список cookie и сторонних сервисов сайта.
- Опубликована политика cookie, ссылка на неё есть в окне и в подвале.
- Политика конфиденциальности упоминает cookie и ссылается на политику cookie.
- В окне есть равноценные кнопки согласия и отказа.
- До согласия в инкогнито нет запросов к счётчикам и рекламным сервисам.
- После согласия счётчики загружаются, цели срабатывают.
- Выбор запоминается и меняется по ссылке в подвале.
- Баннер корректно работает с кэшем и композитом.
- Окно не перекрывает важные кнопки на телефоне.
- Тексты согласованы с юристом.
Cookie — часть общей работы сайта с персональными данными. Формы, согласия и политика проверяются вместе; порядок проверки есть в статье «Сайт и 152-ФЗ».
Частые вопросы
Если сайт ставит только технические cookie, обычно достаточно упоминания в политике. Если есть аналитика и реклама, большинство юристов рекомендуют окно с выбором. Для конкретного сайта решение принимают с юристом.
На WordPress — установить плагин уведомлений и настроить тексты. На 1С-Битрикс — модуль из Маркетплейса. В обоих случаях проверьте, что счётчики действительно блокируются до согласия, иначе окно работает вхолостую.
Простейший баннер — выше в статье: разметка и скрипт на чистом JavaScript. Его встраивают в шаблон сайта, а код счётчиков переносят в функцию загрузки аналитики.
Cookie сам WordPress ставит автоматически для сессий и комментариев. Если имеется в виду баннер согласия — через плагин или через подключение разметки и скрипта в дочерней теме.
Тот, который умеет блокировать скрипты до согласия, совместим с вашим плагином кэширования, позволяет редактировать все тексты и регулярно обновляется. Популярность в каталоге — не главный критерий.
Политика конфиденциальности описывает всю обработку персональных данных: формы, заказы, аналитику. Политика cookie детально описывает только cookie и сервисы, которые их ставят. Они связаны ссылками и не должны противоречить друг другу.
Метрика ставит аналитические cookie, и данные о визитах вместе с IP-адресом могут рассматриваться как персональные данные. Поэтому многие сайты подключают её только после согласия. Формулировки и подход согласуйте с юристом.
Не сломает, если решение о показе принимается скриптом в браузере. Проблемы возникают, когда баннер выводят или прячут на сервере — тогда кэшированная страница у всех одинаковая.
Как дать посетителю изменить выбор?
Добавьте в подвал ссылку «Настройки cookie». По клику скрипт сбрасывает сохранённый выбор и снова показывает окно.
Итог
Уведомление о cookie — небольшая доработка, но её легко сделать неправильно: окно висит, а счётчики грузятся до согласия, политика не совпадает с реальностью, кэш показывает баннер не тем посетителям. Корректная схема — инвентаризация cookie, отдельная политика, окно с равноценными кнопками и загрузка аналитики только после выбора.
Юридическую часть — нужен ли явный выбор и какими словами его описать — решает юрист. Техническая часть должна быть гибкой: переход от уведомления к согласию и обратно не должен требовать переделки шаблона.
Я как частный разработчик настраиваю уведомления и согласие на cookie на WordPress и 1С-Битрикс: баннер, политику, отложенную загрузку Метрики и совместимость с кэшем. Работаю напрямую, без посредников — подробнее на странице доработки сайтов на WordPress.


