Woove Куки-баннер

Cookie и согласие посетителя

Конструктор куки-баннера

Четыре вида баннера, свои ссылки на политику и согласие, Яндекс.Метрика и Google Analytics после согласия посетителя. Соберите баннер ниже и скопируйте готовый код.

Бесплатно, без регистрации, код ваш

Вид баннера

Текст и кнопки

Ссылки на ваши документы

Пустые адреса в код не попадут. Ссылки нужны на ваши документы: оператор данных — вы.

Счётчики после согласия

Если счётчик уже стоит в шапке сайта, уберите его оттуда: иначе он загрузится до согласия.

Оформление

Готовые темы: светлая · тёмная

В предпросмотре кнопки работают, но выбор не запоминается: баннер появляется снова при каждом изменении.

<!-- Куки-баннер с woove.ru/cookie-banner. Код ваш: меняйте как угодно, к нашим серверам он не обращается. -->
<style>
#wvc{position:fixed;left:0;right:0;bottom:0;z-index:99998;font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
#wvc *{box-sizing:border-box}
#wvc .wvc-b{background:#111111;color:#ffffff;padding:16px 18px;display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:center}
#wvc .wvc-b{border-radius:10px 10px 0 0}
#wvc p{margin:0;max-width:640px}
#wvc a{color:inherit;text-decoration:underline;text-underline-offset:2px}
#wvc .wvc-l{opacity:.75;font-size:12.5px;margin-top:8px;display:flex;flex-wrap:wrap;gap:12px}
#wvc .wvc-l{margin-top:0}
#wvc .wvc-btns{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}
#wvc button{font:inherit;font-weight:600;cursor:pointer;border-radius:8px;padding:9px 16px;border:1px solid #ffffff;background:#ffffff;color:#111111}
#wvc button.wvc-g{background:transparent;color:#ffffff;border-color:currentColor;opacity:.85;font-weight:500}
#wvc button:focus-visible{outline:2px solid #ffffff;outline-offset:2px}
@media (max-width:560px){#wvc .wvc-b{flex-direction:column;align-items:stretch}#wvc .wvc-btns{margin-left:0}#wvc button{flex:1}}
@media (prefers-reduced-motion:no-preference){#wvc .wvc-b{animation:wvc-in .22s ease-out}}
@keyframes wvc-in{from{opacity:0;transform:translateY(10px)}}
</style>
<script>
(function(){
  var C={v:'bar',text:'Мы используем файлы cookie, чтобы сайт работал и чтобы понимать, какие страницы вам полезны.',accept:'Принять',decline:'Только необходимые',pos:'right',days:365,links:[{t:'Политика обработки данных',u:'/privacy'},{t:'Согласие на обработку',u:'/consent'}],ym:'12345678',wv:false,ga:null,dom:null};
  var K='wv_consent';
  function read(){try{var m=document.cookie.match(/(?:^|; )wv_consent=([^;]*)/);
    return m?JSON.parse(decodeURIComponent(m[1])):null}catch(e){return null}}
  function dom(){return C.dom&&("."+location.hostname).slice(-C.dom.length)===C.dom?";domain="+C.dom:""}
  function save(o){o.t=Math.floor(Date.now()/1000);try{document.cookie=K+"="+encodeURIComponent(JSON.stringify(o))
    +";path=/;max-age="+(C.days*86400)+";samesite=lax"+dom()+(location.protocol==="https:"?";secure":"")}catch(e){}}
  function counters(o){
    if(!o||!o.an)return;
    if(C.ym&&!window["yaCounter"+C.ym]){
      (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?id="+C.ym,"ym");
      ym(C.ym,"init",{ssr:true,webvisor:C.wv,clickmap:true,ecommerce:"dataLayer",referrer:document.referrer,url:location.href,accurateTrackBounce:true,trackLinks:true});
    }
    if(C.ga&&!window.gtag){
      var s=document.createElement("script");s.async=1;
      s.src="https://www.googletagmanager.com/gtag/js?id="+C.ga;document.head.appendChild(s);
      window.dataLayer=window.dataLayer||[];window.gtag=function(){dataLayer.push(arguments)};
      gtag("js",new Date());gtag("config",C.ga);
    }
  }
  function done(o){save(o);counters(o);var n=document.getElementById("wvc");if(n)n.remove();
    try{window.dispatchEvent(new CustomEvent("wv-consent",{detail:o}))}catch(e){}}
  function esc(s){var d=document.createElement("div");d.textContent=s;return d.innerHTML}
  function links(){return C.links.length?"<div class=\"wvc-l\">"+C.links.map(function(l){
    return "<a href=\""+l.u+"\" target=\"_blank\" rel=\"noopener\">"+esc(l.t)+"</a>"}).join("")+"</div>":""}
  function show(){
    var w=document.createElement("div");w.id="wvc";
    w.setAttribute("role",C.v==="modal"?"dialog":"region");
    w.setAttribute("aria-label","Использование файлов cookie");
    if(C.v==="modal")w.setAttribute("aria-modal","true");
    var h="<div class=\"wvc-b\"><p>"+esc(C.text)+"</p>"+links();
    if(C.v==="modal"){
      h+=C.cat.map(function(c){var on=c[0]==="ne";
        return "<label class=\"wvc-c\"><input type=\"checkbox\" data-k=\""+c[0]+"\""+(on?" checked disabled":"")
        +"><span><b>"+esc(c[1])+"</b><span>"+esc(c[2])+"</span></span></label>"}).join("");
      h+="<div class=\"wvc-btns\"><button data-a=\"all\">"+esc(C.accept)+"</button>"
        +"<button class=\"wvc-g\" data-a=\"save\">"+esc(C.save)+"</button>"
        +(C.decline?"<button class=\"wvc-g\" data-a=\"no\">"+esc(C.decline)+"</button>":"")+"</div>";
    }else{
      h+="<div class=\"wvc-btns\"><button data-a=\"all\">"+esc(C.accept)+"</button>"
        +(C.decline?"<button class=\"wvc-g\" data-a=\"no\">"+esc(C.decline)+"</button>":"")+"</div>";
    }
    w.innerHTML=h+"</div>";document.body.appendChild(w);
    var btn=w.querySelector("button");if(btn&&C.v==="modal")btn.focus();
    w.addEventListener("click",function(e){
      var b=e.target.closest("button[data-a]");if(!b)return;
      var a=b.getAttribute("data-a");
      if(a==="all")return done({an:1,mk:1});
      if(a==="no")return done({an:0,mk:0});
      var o={an:0,mk:0};w.querySelectorAll("input[data-k]").forEach(function(i){
        if(i.getAttribute("data-k")!=="ne")o[i.getAttribute("data-k")]=i.checked?1:0});done(o)});
    if(C.v==="modal")document.addEventListener("keydown",function k(e){
      if(e.key==="Escape"&&document.getElementById("wvc")){done({an:0,mk:0});document.removeEventListener("keydown",k)}});
  }
  window.wvCookieReset=function(){try{document.cookie=K+"=;path=/;max-age=0"+dom()}catch(e){}
    if(!document.getElementById("wvc"))show()};
  var got=read();
  if(got)counters(got);
  else if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",show);else show();
})();
</script>

Один блок со стилями и скриптом, без библиотек и запросов к нашим серверам.

Куда вставлять код

ТильдаНастройки сайта → Ещё → «HTML-код для вставки внутрь BODY», тогда баннер появится на всех страницах. В блок T123 код класть не нужно: он работает только на одной странице.
Обычный сайтПеред закрывающим тегом body, в общий шаблон страницы.
CMSВ шаблон подвала темы или через плагин для вставки кода, чтобы он попал на все страницы.
  1. Выберите вид. Полоса снизу, карточка в углу, окно с настройками или тонкая плашка сверху.
  2. Вставьте ссылки на свои документы. Политика обработки персональных данных и согласие, которые лежат у вас на сайте.
  3. Впишите счётчики. Номер Яндекс.Метрики и идентификатор Google Analytics. Их код баннер вставит после согласия.
  4. Скопируйте код. Он собирается на этой странице, ничего не скачивается и никуда не отправляется.
  5. Вставьте на сайт. В Тильде: «Настройки сайта → Ещё → HTML-код внутрь BODY». На обычном сайте — перед закрывающим тегом body.

Что баннер делает

Куки-баннер (cookie banner, плашка о файлах cookie) — это уведомление, которое запрашивает разрешение до того, как сайт поставит необязательные cookie. Наш баннер показывает ваш текст со ссылками на ваши документы и держит счётчики выключенными, пока посетитель не нажал «Принять». Выбор записывается в cookie на его устройстве вместе с датой.

Чего баннер не делает: не заменяет политику обработки персональных данных и согласие, не собирает согласие в формах (там нужна отдельная галочка) и не блокирует сторонние скрипты, вставленные в шапку вручную. Соответствие 152-ФЗ складывается из ваших документов и порядка работы с данными.

Какие cookie у вас стоят и какие из них требуют согласия — в разборе про виды cookie.

Как это сделано у нас: политика обработки данных · согласие на обработку · согласие в формах и ботах

Частые вопросы про куки-баннер

Это бесплатно?

Да, и без регистрации. Код после сборки ваш: его можно править, переносить на другие сайты и отдавать клиентам. К нашим серверам он не обращается.

Баннер делает сайт соответствующим закону?

Нет. Баннер предупреждает про cookie и не даёт счётчикам загрузиться до согласия. Политику обработки персональных данных и согласие вы пишете и размещаете сами, а согласие в формах остаётся отдельной галочкой у формы.

Где хранится выбор посетителя?

В cookie wv_consent на его устройстве: дата выбора и то, на что человек согласился. Срок хранения задаётся в конструкторе, запросы на сторону не уходят.

Что будет со счётчиками, если человек отказался?

Ничего не загрузится: ни tag.js Метрики, ни gtag Google. Проверить можно во вкладке «Сеть» инструментов разработчика: запросов к mc.yandex.ru и googletagmanager.com не будет.

Как дать посетителю передумать?

В коде есть функция wvCookieReset(). Поставьте в подвале сайта ссылку с onclick="wvCookieReset()", и баннер откроется снова.

Работает ли в Тильде?

Да, и на любом другом сайте: это обычные style и script без библиотек. В Тильде код кладут в «Настройки сайта → Ещё → HTML-код для вставки внутрь BODY», чтобы баннер был на всех страницах.

Чем ещё занимается Woove

Конструктор сайтов Woove Site, интеграции форм Woove Connect, Woove Bots и продажа билетов. Woove CRM и куки-баннер бесплатны.