Статті

Google Consent Mode v2: як налаштувати, з прикладами коду

Оновлено:

Google Consent Mode v2 повідомляє тегам Google, чи погодився відвідувач на cookie для аналітики й реклами. Без нього Google не додає відвідувачів з Європейської економічної зони (ЄЕЗ) до ваших рекламних аудиторій — навіть якщо сам сайт працює не в Європі. Нижче — налаштування на звичайному gtag.js, яке можна скопіювати, і способи перевірити, що все працює.

Що таке Consent Mode v2

Consent Mode — це набір сигналів, які сайт передає тегам Google (Google Analytics 4, Google Ads, Floodlight). Кожен сигнал має значення granted (дозволено) або denied (заборонено), і теги підлаштовують під нього свою поведінку. Друга версія, представлена в листопаді 2023 року, додала два сигнали про рекламні дані:

СигналЩо він визначає
ad_storageЗберігання даних для реклами, наприклад cookie
analytics_storageЗберігання даних для аналітики, наприклад cookie (скажімо, для тривалості візиту)
ad_user_data (новий у v2)Передавання в Google даних користувача, пов’язаних із рекламою
ad_personalization (новий у v2)Персоналізовану рекламу, наприклад ремаркетинг

Кому це потрібно

З березня 2024 року Google очікує сигнали згоди для відвідувачів з Європейської економічної зони. Якщо їх немає, такі відвідувачі не потрапляють до аудиторій рекламних продуктів Google, і ремаркетинг та персоналізована реклама для них перестають працювати. Для персоналізованої реклами мають бути дозволені обидва сигнали — ad_user_data і ad_personalization.

Важливо, звідки прийшов відвідувач, а не де працює сайт. Якщо ваш сайт в Україні, Казахстані чи іншій країні поза ЄС, але до нього приходять відвідувачі з ЄЕЗ — наприклад, тому що ви рекламуєтеся в Google Ads на європейську аудиторію, — і для них працюють Google Ads або Google Analytics, Consent Mode вам потрібен. Обмежити заборону за замовчуванням країнами ЄЕЗ можна параметром region (про нього — у кроці 1), і відвідувачів з інших країн вона не зачепить.

Якщо відвідувачів з Європи сайт не має і Google Ads ви не використовуєте, Consent Mode необов’язковий. Якщо ви користуєтеся платформою керування згодою, сертифікованою Google, найімовірніше, вона вже надсилає сигнали за вас — спершу перевірте її налаштування.

Базовий чи розширений режим

БазовийРозширений
Поки відвідувач не відповівТеги Google узагалі не завантажуютьсяТеги завантажуються зі станом за замовчуванням (зазвичай denied)
Якщо відвідувач відмовивсяУ Google нічого не надсилаєтьсяНадсилаються пінги без cookie та без ідентифікаторів
Моделювання конверсійЗагальна модельДетальніша модель під конкретного рекламодавця

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

Крок 1. Задайте значення за замовчуванням до тегу Google

Стан за замовчуванням треба задати до того, як тег щось надішле. Вставте цей фрагмент у <head> вище тегу Google або фрагмента Tag Manager:

За замовчуванням: усе заборонено, поки відвідувач не відповістьhtml
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  gtag('consent', 'default', {
    ad_storage: 'denied',
    ad_user_data: 'denied',
    ad_personalization: 'denied',
    analytics_storage: 'denied',
    wait_for_update: 500, // скільки мс чекати на банер, що завантажується асинхронно
  });
</script>

<!-- далі тег Google або фрагмент Google Tag Manager -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"></script>
<script>
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXX');
</script>

Щоб забороняти за замовчуванням лише в деяких країнах — наприклад, у країнах ЄЕЗ, якщо основна аудиторія у вас поза ними, — додайте region з кодами країн за ISO, наприклад region: ['DE', 'FR', 'ES']. Значення за замовчуванням без region діють в усіх інших країнах.

Крок 2. Передайте вибір відвідувача

Коли відвідувач натискає кнопку в банері, викликайте update. Запам’ятайте вибір і надсилайте його знову на початку кожного наступного перегляду сторінки, одразу після значень за замовчуванням:

Мінімальний банерhtml
<div id="cookie-banner" hidden>
  <p>Ми використовуємо cookie для аналітики й реклами. Ви не проти?</p>
  <button type="button" data-choice="granted">Прийняти</button>
  <button type="button" data-choice="denied">Відхилити</button>
</div>

<script>
  const KEY = 'cookie_choice';
  const send = (state) => gtag('consent', 'update', {
    ad_storage: state,
    ad_user_data: state,
    ad_personalization: state,
    analytics_storage: state,
  });

  const saved = localStorage.getItem(KEY);
  const banner = document.getElementById('cookie-banner');
  if (saved) send(saved); else banner.hidden = false;

  banner.addEventListener('click', (e) => {
    const state = e.target.dataset.choice;
    if (!state) return;
    localStorage.setItem(KEY, state);
    send(state);
    banner.hidden = true;
  });
</script>

Додатково: url_passthrough і ads_data_redaction

Два налаштування допомагають, коли рекламні cookie заборонені:

gtag('set', 'url_passthrough', true);     // передавати дані про клік по рекламі в посиланнях замість cookie
gtag('set', 'ads_data_redaction', true);  // приховувати ідентифікатори кліків по рекламі, поки ad_storage заборонено

Якщо ви використовуєте Google Tag Manager

У Tag Manager значення за замовчуванням задають у тегу, який спрацьовує за тригером Consent Initialization – All Pages (ініціалізація згоди) раніше за всі інші теги. Більшість платформ керування згодою мають для цього готовий шаблон у галереї шаблонів спільноти; команду update потім надсилає сама платформа, коли відвідувач відповість.

Як перевірити, що все працює

  1. Відкрийте сайт через Tag Assistant і перегляньте вкладку Consent: спершу там має бути стан за замовчуванням, а після кліку в банері — оновлення.
  2. В інструментах розробника браузера відкрийте вкладку «Мережа» й відфільтруйте запити за collect: у запитах до Google Analytics є параметр gcs, який після згоди змінюється з G100 (заборонено) на G111 (дозволено).
  3. Перезавантажте сторінку після згоди: збережений вибір має надіслатися знову, а банер — не з’явитися.

Один банер для Google та інших інструментів

Consent Mode стосується лише тегів Google. Іншим скриптам на сайті потрібна та сама відповідь. Віджет Sitecog, наприклад, має власний режим згоди: додайте до його тегу data-consent="required", і аналітика чекатиме на згоду, а форми й онлайн-чат працюватимуть далі. Сигналів згоди в Google віджет не надсилає, тому передавайте відповідь із банера обом:

Google і Sitecog одним клікомhtml
<script src="https://widget.sitecog.com/widget.js" data-consent="required" defer></script>

<script>
  window.crmConsent = window.crmConsent || [];   // черга: працює ще до завантаження widget.js

  function applyChoice(state) {
    gtag('consent', 'update', {
      ad_storage: state,
      ad_user_data: state,
      ad_personalization: state,
      analytics_storage: state,
    });
    crmConsent.push(state === 'granted' ? 'grant' : 'deny');
  }
</script>

Часті питання

Consent Mode — це cookie-банер?

Ні. Consent Mode лише передає тегам Google вибір відвідувача. Банер однаково потрібен (власний або від платформи керування згодою): він ставить запитання й викликає команду update.

Чи потрібен Consent Mode v2 поза ЄЕЗ?

Google вимагає сигнали згоди для відвідувачів з Європейської економічної зони — незалежно від того, де працює сам сайт. Якщо сайт в Україні чи Казахстані має відвідувачів з ЄЕЗ і для них працюють Google Ads або Google Analytics, Consent Mode потрібен. Для решти відвідувачів він необов’язковий, а з параметром region можна забороняти за замовчуванням лише в тих країнах, де це потрібно.

Що відбувається, якщо відвідувач відмовляється від cookie?

У базовому режимі теги Google нічого не надсилають. У розширеному вони надсилають пінги без cookie та без ідентифікаторів, за якими Google моделює конверсії.

Чи робить Consent Mode сайт відповідним GDPR?

Сам собою — ні. Він лише дотримується вибору, який зробив відвідувач; чи правильно, вчасно й зрозуміло ви питаєте — залежить від банера та політики конфіденційності.

Чи налаштовує Sitecog Google Consent Mode за мене?

Ні. Віджет Sitecog має власний режим згоди для своєї аналітики й не надсилає сигнали згоди в Google. Підключіть обидва до одного банера, як показано в цьому посібнику.