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:
<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. Запам’ятайте вибір і надсилайте його знову на початку кожного наступного перегляду сторінки, одразу після значень за замовчуванням:
<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 потім надсилає сама платформа, коли відвідувач відповість.
Як перевірити, що все працює
- Відкрийте сайт через Tag Assistant і перегляньте вкладку Consent: спершу там має бути стан за замовчуванням, а після кліку в банері — оновлення.
- В інструментах розробника браузера відкрийте вкладку «Мережа» й відфільтруйте запити за
collect: у запитах до Google Analytics є параметрgcs, який після згоди змінюється зG100(заборонено) наG111(дозволено). - Перезавантажте сторінку після згоди: збережений вибір має надіслатися знову, а банер — не з’явитися.
Один банер для Google та інших інструментів
Consent Mode стосується лише тегів Google. Іншим скриптам на сайті потрібна та сама відповідь. Віджет Sitecog, наприклад, має власний режим згоди: додайте до його тегу data-consent="required", і аналітика чекатиме на згоду, а форми й онлайн-чат працюватимуть далі. Сигналів згоди в Google віджет не надсилає, тому передавайте відповідь із банера обом:
<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. Підключіть обидва до одного банера, як показано в цьому посібнику.