Cookie на сайте: как сделать уведомление и получить согласие

Коротко

Согласие на обработку cookies для сайта нужно тогда, когда сайт ставит не только технические cookie, без которых он не работает, но и аналитические или рекламные: счётчик Яндекс Метрики, пиксели соцсетей, коды ретаргетинга. В этом случае посетителю показывают окно с коротким текстом, ссылкой на политику cookie и кнопками выбора, а аналитику подключают в соответствии с его решением.

Технически задача несложная: баннер, отдельная страница с политикой и немного JavaScript, который запоминает выбор. Сложности начинаются в деталях — кэширование страниц, порядок загрузки счётчиков, тексты, которые не противоречат политике конфиденциальности. Ниже — как сделать всё аккуратно в WordPress и 1С-Битрикс.

Что нужноЗачемГде размещается
Окно уведомленияСообщить о cookie и получить выборВнизу страницы, на всех страницах
Политика cookieОбъяснить, какие cookie и зачемОтдельная страница, ссылка из окна и подвала
Запоминание выбораНе показывать окно повторноCookie или localStorage браузера
Условная загрузка счётчиковВыполнить выбор посетителяКод шаблона или плагин

Основная мысль

Баннер cookie — это не наклейка «для галочки», а переключатель: если посетитель нажал «отказаться», а Метрика всё равно загрузилась, окно только создаёт видимость порядка.

Большинство сайтов ограничиваются плашкой «Мы используем cookie» с одной кнопкой «ОК». Это уведомление, а не согласие: выбора у посетителя нет. Для сайта, который вообще не собирает аналитику, такой вариант может быть достаточным. Для сайта с Метрикой, рекламными пикселями и формами логика должна быть другой.

Требования к cookie в России прямо не расписаны отдельным документом, а практика применения закона о персональных данных меняется. Поэтому ниже — подход практика-разработчика: как технически сделать уведомление и согласие корректно. Формулировки текстов и то, нужен ли на вашем сайте явный выбор, стоит сверить с юристом.

Что такое cookie и какие они бывают

Cookie — небольшие фрагменты данных, которые сайт или сторонний сервис сохраняет в браузере посетителя. Они позволяют узнать браузер при следующем визите: держать сессию входа, помнить корзину, считать уникальных посетителей.

Виды cookie по назначению

ТипПримерНужен ли выбор посетителя
Строго необходимыеСессия, корзина, защита формОбычно нет, достаточно уведомления
ФункциональныеЯзык, выбранный городЗависит от политики сайта
АналитическиеЯндекс Метрика, веб-аналитикаКак правило, да
РекламныеПиксели, ретаргетингДа

Разделение по типам — основа и для окна, и для политики. Если сайт понятно делит cookie на группы, посетителю проще сделать выбор, а разработчику — реализовать его.

Свои и сторонние cookie

Свои cookie ставит сам сайт: например, WordPress запоминает, что посетитель оставлял комментарий, а 1С-Битрикс хранит идентификатор сессии. Сторонние ставят подключённые сервисы: счётчики, виджеты чатов, видеоплееры, карты. Именно сторонние сервисы обычно и превращают простой сайт в сайт, которому нужно согласие.

Как узнать, какие cookie ставит сайт

Откройте сайт в режиме инкогнито, затем инструменты разработчика браузера: вкладка «Application» в Chrome или «Хранилище» в Firefox, раздел Cookies. Там видны все cookie с доменами. Пройдите по нескольким страницам, отправьте форму, добавьте товар в корзину — список пополнится. Это и есть исходные данные для политики.

Уведомление или согласие на обработку cookies для сайта

Эти понятия часто смешивают, хотя технически это разные решения.

Уведомление

Уведомление об использовании cookies на сайте информирует: сайт использует cookie, подробности — в политике. Кнопка одна — «Понятно» или «Закрыть». Все скрипты загружаются сразу, независимо от реакции посетителя. Такой вариант подходит сайтам, которые используют только технические cookie.

Согласие

Согласие предполагает выбор. В окне как минимум две кнопки: «Принять» и «Только необходимые», иногда третья — «Настроить» с переключателями по группам. Аналитические и рекламные скрипты загружаются только после согласия. Выбор сохраняется, и его можно изменить позже — например, по ссылке «Настройки cookie» в подвале.

Что выбрать

Если на сайте есть Метрика, формы, чаты и рекламные коды, безопаснее реализовать согласие с выбором. Соглашение cookie на сайт в виде «продолжая пользоваться сайтом, вы соглашаетесь» юристы часто считают слабым: молчание посетителя трудно трактовать как согласие. Окончательное решение — вместе с юристом, а разработчик должен сделать так, чтобы оба варианта переключались настройкой, а не переписыванием кода.

Политика использования cookies на сайте: что в ней писать

Политика cookie — отдельная страница, на которую ведёт ссылка из окна и из подвала. Иногда её делают разделом политики конфиденциальности, но отдельная страница удобнее: её проще обновлять при подключении нового сервиса.

Структура политики

  • кто оператор: наименование компании, контакты;
  • что такое cookie — коротко, без учебника;
  • какие группы cookie использует сайт и для чего;
  • какие сторонние сервисы ставят свои cookie: аналитика, карты, виджеты;
  • сроки хранения — в общем виде или по группам;
  • как посетитель может отказаться или изменить выбор: кнопка на сайте и настройки браузера;
  • как это связано с политикой обработки персональных данных;
  • дата последнего обновления.

Политика обработки файлов cookie на сайте должна описывать реальное положение дел. Если в политике не упомянута Метрика, а она стоит, документ скорее вредит, чем помогает. Поэтому политику пишут после инвентаризации cookie, а не копируют с чужого сайта.

Связь с политикой конфиденциальности

Политика конфиденциальности для сайта с cookies должна содержать упоминание cookie и данных аналитики среди обрабатываемых данных и ссылку на отдельную политику cookie. Как составить основную политику, разобрано в статье «Политика конфиденциальности для сайта». Тексты обоих документов не должны противоречить друг другу.

Окно cookie на сайте: текст, кнопки и дизайн

Окно — единственное, что видит большинство посетителей. Оно должно быть понятным и не мешать пользоваться сайтом.

Текст окна

Два-три предложения, без юридических оборотов. Пример структуры: что сайт использует cookie, для чего — работа сайта и аналитика, ссылка «Подробнее в политике cookie», кнопки выбора. Не пишите «мы используем cookie для улучшения вашего опыта» — это ничего не объясняет.

Кнопки

  • «Принять» и «Только необходимые» — одинакового размера и заметности;
  • «Настроить» — если сайт использует несколько групп необязательных cookie;
  • крестик закрытия без выбора лучше не делать: непонятно, что он означает.

Если кнопку отказа делают серой мелкой ссылкой, а согласия — яркой, это считается манипуляцией. Для доверия и для юридической чистоты кнопки должны быть равноценными.

Расположение и поведение

Окно cookie на сайте лучше ставить плашкой внизу экрана, а не модальным окном на весь экран. Плашка не должна закрывать кнопку заявки, корзину или чат на телефоне. Высота на мобильном — не больше трети экрана.

Окно не должно сдвигать содержимое при появлении. Иначе растёт показатель CLS, одна из метрик Core Web Vitals с целевым значением не больше 0,1. Правильно — фиксированное позиционирование поверх контента.

Cookie на сайт: код простого баннера

Если нужен минимальный баннер без плагинов, его собирают из разметки, стилей и небольшого скрипта. Ниже — основа, которая запоминает выбор и подключает аналитику только после согласия.

Разметка

<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;
  });
})();

Как это работает

  1. При первом визите выбора нет — баннер показывается, аналитика не загружается.
  2. После «Принять» выбор сохраняется, и функция loadAnalytics подключает счётчики.
  3. После «Только необходимые» баннер скрывается, счётчики не загружаются.
  4. При следующих визитах скрипт читает выбор и сразу действует по нему.

Код счётчика Метрики переносят из шаблона внутрь функции loadAnalytics, а в шаблоне оставляют только сам баннер. Для ссылки «Настройки cookie» в подвале достаточно удалить сохранённый ключ и снова показать баннер.

Почему выбор решается в браузере

Если решать на сервере — показывать баннер или нет по наличию cookie, — страничный кэш всё сломает: закэшированная версия страницы достанется всем одинаковой. Поэтому баннер всегда есть в разметке скрытым, а показывает или прячет его скрипт на стороне браузера. Это работает с любым кэшем.

Плагин cookie для WordPress

Для WordPress есть много плагинов уведомлений: достаточно поискать по слову cookie в каталоге плагинов. Известные примеры — Complianz и CookieYes. Большинство из них ориентированы на европейские требования, поэтому тексты и группы cookie придётся адаптировать под русский язык и свою политику.

Как выбирать плагин

  • умеет ли блокировать скрипты до согласия, а не только показывать окно;
  • есть ли группы cookie и кнопка настроек;
  • совместим ли с плагином кэширования, который стоит на сайте;
  • насколько тяжёлый: не тянет ли внешние скрипты с серверов разработчика;
  • переводится ли интерфейс и можно ли отредактировать все тексты;
  • когда плагин последний раз обновлялся.

Плагин для одного окна — всё же ещё один плагин. О том, как не перегрузить сайт расширениями, — в статье «Плагины WordPress для сайта компании». Если на сайте уже есть собственная тема и аккуратная вёрстка, баннер из предыдущего раздела часто оказывается проще и быстрее плагина.

Как добавить cookies на сайт WordPress вручную

  1. Сделайте резервную копию и работайте в дочерней теме.
  2. Разметку баннера выведите через хук wp_footer в functions.php дочерней темы.
  3. Скрипт подключите через wp_enqueue_script, стили — через wp_enqueue_style.
  4. Уберите прямую вставку кода Метрики из шаблона или плагина вставки кодов и перенесите его в функцию загрузки аналитики.
  5. Очистите кэш и проверьте в инкогнито: до нажатия «Принять» запросов к счётчику быть не должно.

В ядре 1С-Битрикс есть механизм соглашений пользователей для форм, но готового баннера cookie с блокировкой скриптов в стандартной поставке нет. Решений два: модуль из Маркетплейса или собственный баннер в шаблоне.

Модуль из Маркетплейса

Модули баннеров cookie в Маркетплейсе есть, но качество разное. Перед установкой проверьте, умеет ли модуль откладывать загрузку счётчиков, и совместим ли он с композитным сайтом. Правила безопасной установки описаны в статье «Модули 1С-Битрикс».

Собственный баннер

Разметку баннера размещают в footer.php шаблона сайта или в отдельной включаемой области, скрипт — в папке шаблона. Код Метрики, который часто вставлен прямо в header.php, переносят в функцию загрузки аналитики.

Главная особенность Битрикса — композитный кэш. Композит отдаёт посетителям готовую HTML-страницу, поэтому решать, показывать ли баннер, нужно только скриптом в браузере, как в примере выше. После изменений очистите кэш — как это сделать правильно, описано в статье про кэш в 1С-Битрикс.

Как не потерять данные Метрики

Главный вопрос владельцев: если счётчик загружается только после согласия, статистика станет неполной. Это правда — посетители, которые отказались или не нажали ничего, в Метрику не попадут.

Что можно сделать

  • Сделать окно понятным. Короткий человеческий текст и равноценные кнопки дают больше согласий, чем пугающие формулировки.
  • Не блокировать сайт окном. Посетитель должен видеть страницу, иначе уйдёт, не сделав выбора.
  • Учитывать заявки в CRM. Даже если визит не попал в Метрику, сама заявка дойдёт — источник можно фиксировать по UTM-меткам в скрытых полях формы.
  • Сравнивать не абсолютные цифры, а динамику. После внедрения согласия базовая линия трафика в Метрике сдвигается; сравнивайте периоды после внедрения между собой.

Проверьте после изменений, что цели срабатывают у тех, кто согласился. Как настроить цели на заявки, разобрано в статье «Цели в Яндекс Метрике».

Сценарий: сайт услуг с формами

Корпоративный сайт на WordPress: Метрика, чат и форма заявки. Баннер с двумя кнопками, Метрика и чат загружаются после согласия, форма работает всегда, потому что использует только технические cookie. В политике cookie перечислены Метрика и чат, в политике конфиденциальности — ссылка на неё.

Сценарий: интернет-магазин на 1С-Битрикс

Магазин с композитом, корзиной, Метрикой и рекламными пикселями. Корзина и сессия — необходимые cookie, работают сразу. Метрика и пиксели разнесены по группам «аналитика» и «реклама» с отдельными переключателями в окне настроек. Баннер показывается скриптом, композит не отключается.

Как проверить, что согласие работает

Внешне окно может выглядеть идеально и при этом ничего не блокировать. Проверка занимает десять минут и не требует специальных сервисов.

Пошаговая проверка в браузере

  1. Откройте сайт в режиме инкогнито, чтобы не было сохранённого выбора.
  2. Откройте инструменты разработчика и вкладку «Network» («Сеть»), обновите страницу.
  3. В строке фильтра наберите часть адреса счётчика, например mc.yandex. До нажатия кнопки запросов быть не должно.
  4. Во вкладке с cookie убедитесь, что аналитических cookie нет — только технические.
  5. Нажмите «Только необходимые», обновите страницу. Картина должна остаться прежней, окно — не появляться.
  6. Очистите данные сайта, обновите страницу и нажмите «Принять». Запросы к счётчику должны появиться сразу, без перезагрузки.
  7. Повторите то же на телефоне: окно не должно перекрывать кнопки и форму.

Что проверить после каждой доработки

Любой новый сервис — чат, видео, карта, рекламный код — может ставить свои cookie. Каждый раз, когда на сайт добавляют внешний скрипт, его нужно отнести к группе, подключить через функцию загрузки после согласия и дописать в политику. Удобно завести в документации сайта таблицу подключённых сервисов: название, группа cookie, где подключён, дата добавления.

Отдельно проверьте встроенные видео и карты. Многие плееры и картографические виджеты ставят cookie сразу при загрузке. Для них используют «заглушку»: вместо плеера показывается превью с кнопкой, а сам плеер подгружается по клику. Это заодно ускоряет загрузку страницы.

Типичные ошибки и чек-лист

Ошибки

  • Окно есть, но счётчики загружаются до нажатия кнопки.
  • Кнопка отказа спрятана или отсутствует, хотя сайт использует аналитику.
  • Политика cookie скопирована с чужого сайта и не совпадает с реальными сервисами.
  • Баннер выводится на сервере, и из-за кэша одним посетителям он не показывается никогда, а другим — на каждой странице.
  • Окно на мобильном закрывает кнопку заказа.
  • Баннер сдвигает страницу и портит CLS.
  • Нет способа изменить выбор после первого нажатия.

Чек-лист

  1. Составлен список cookie и сторонних сервисов сайта.
  2. Опубликована политика cookie, ссылка на неё есть в окне и в подвале.
  3. Политика конфиденциальности упоминает cookie и ссылается на политику cookie.
  4. В окне есть равноценные кнопки согласия и отказа.
  5. До согласия в инкогнито нет запросов к счётчикам и рекламным сервисам.
  6. После согласия счётчики загружаются, цели срабатывают.
  7. Выбор запоминается и меняется по ссылке в подвале.
  8. Баннер корректно работает с кэшем и композитом.
  9. Окно не перекрывает важные кнопки на телефоне.
  10. Тексты согласованы с юристом.

Cookie — часть общей работы сайта с персональными данными. Формы, согласия и политика проверяются вместе; порядок проверки есть в статье «Сайт и 152-ФЗ».

Частые вопросы

Обязательно ли уведомление об использовании cookies на сайте?

Если сайт ставит только технические cookie, обычно достаточно упоминания в политике. Если есть аналитика и реклама, большинство юристов рекомендуют окно с выбором. Для конкретного сайта решение принимают с юристом.

Как сделать cookie на сайте, если я не программист?

На WordPress — установить плагин уведомлений и настроить тексты. На 1С-Битрикс — модуль из Маркетплейса. В обоих случаях проверьте, что счётчики действительно блокируются до согласия, иначе окно работает вхолостую.

Где взять cookie на сайт код?

Простейший баннер — выше в статье: разметка и скрипт на чистом JavaScript. Его встраивают в шаблон сайта, а код счётчиков переносят в функцию загрузки аналитики.

Как установить cookies на сайт WordPress?

Cookie сам WordPress ставит автоматически для сессий и комментариев. Если имеется в виду баннер согласия — через плагин или через подключение разметки и скрипта в дочерней теме.

Какой плагин cookie для WordPress выбрать?

Тот, который умеет блокировать скрипты до согласия, совместим с вашим плагином кэширования, позволяет редактировать все тексты и регулярно обновляется. Популярность в каталоге — не главный критерий.

Чем политика использования cookies отличается от политики конфиденциальности?

Политика конфиденциальности описывает всю обработку персональных данных: формы, заказы, аналитику. Политика cookie детально описывает только cookie и сервисы, которые их ставят. Они связаны ссылками и не должны противоречить друг другу.

Нужно ли согласие на cookie для Яндекс Метрики?

Метрика ставит аналитические cookie, и данные о визитах вместе с IP-адресом могут рассматриваться как персональные данные. Поэтому многие сайты подключают её только после согласия. Формулировки и подход согласуйте с юристом.

Не сломает ли баннер кэш сайта?

Не сломает, если решение о показе принимается скриптом в браузере. Проблемы возникают, когда баннер выводят или прячут на сервере — тогда кэшированная страница у всех одинаковая.

Как дать посетителю изменить выбор?

Добавьте в подвал ссылку «Настройки cookie». По клику скрипт сбрасывает сохранённый выбор и снова показывает окно.

Итог

Уведомление о cookie — небольшая доработка, но её легко сделать неправильно: окно висит, а счётчики грузятся до согласия, политика не совпадает с реальностью, кэш показывает баннер не тем посетителям. Корректная схема — инвентаризация cookie, отдельная политика, окно с равноценными кнопками и загрузка аналитики только после выбора.

Юридическую часть — нужен ли явный выбор и какими словами его описать — решает юрист. Техническая часть должна быть гибкой: переход от уведомления к согласию и обратно не должен требовать переделки шаблона.

Я как частный разработчик настраиваю уведомления и согласие на cookie на WordPress и 1С-Битрикс: баннер, политику, отложенную загрузку Метрики и совместимость с кэшем. Работаю напрямую, без посредников — подробнее на странице доработки сайтов на WordPress.

Что будем искать? Например,Продвижение