Google analytics

Consent Mode v2 у GA4: як налаштувати

Що таке Consent Mode v2, обов'язкова вимога Google для EEA, basic vs advanced режими, налаштування через GTM і CMP-банер, перевірка і вплив на моделювання конверсій у GA4.

Автор: Андрій Коваленко 10 хв читання
Зміст

Consent Mode v2 — це оновлена система сигналів Google, яку необхідно впровадити для всіх сайтів з EEA-трафіком. З березня 2024 вона є обов’язковою вимогою Google для збереження доступу до персоналізованої реклами і моделювання конверсій у GA4 і Google Ads. Без неї — повна сліпота для сеансів, де користувач відмовив у cookie.

Ця стаття пояснює, як саме працює Consent Mode v2, чим basic відрізняється від advanced, і як налаштувати все через GTM за 30-40 хвилин навіть без розробника.

До 2020 року аналітика і реклама Google на сайтах ЄС виглядала просто: або користувач погоджується на cookie — і GA4 записує повний сеанс, або відмовляє — і ви взагалі нічого не знаєте про цього відвідувача.

Consent Mode змінює цю логіку. Замість бінарного «all or nothing» він дозволяє тегам Google працювати в обмеженому режимі: без ідентифікаційних даних, без cookie, але з анонімними сигналами. GA4 і Google Ads отримують статистичну «тінь» від відмовників — і на її основі будують модель.

Consent Mode v2 — це друге покоління системи, яке Google анонсував у листопаді 2023 і зробив обов’язковим для EEA-трафіку з березня 2024. Головне нововведення: два додаткові сигнали для функцій, що з’явилися після v1.

Всього шість параметрів. Для більшості сайтів критичні чотири:

ПараметрЩо контролює
analytics_storageGA4-куки, сеанси, pageview
ad_storageрекламні куки Google Ads
ad_user_dataпередача даних користувачів до Google Ads
ad_personalizationремаркетинг і персоналізація реклами
functionality_storageкуки функціональності (мова, налаштування)
security_storageбезпекові куки (захист від фроду)

Перші два були в v1. ad_user_data і ad_personalization — нові в v2. Саме їх відсутність призводить до відключення персоналізованої реклами для EEA.

Basic vs Advanced: яку реалізацію обрати

Це найважливіший вибір, і він безпосередньо впливає на якість даних у GA4.

Принцип: теги Google не завантажуються до надання згоди.

Сторінка завантажилася → Банер з'явився → Користувач відмовив → Теги не запустилися
                                          → Користувач погодився → Теги запустилися

Результат для відмовників: нуль даних. GA4 не отримує навіть анонімних пінгів. Modeling не працює. Ви просто не знаєте, чи переходила ця людина на інші сторінки, чи купила щось.

Basic простіше реалізувати — жодного ризику «витоку» даних до згоди. Підходить, якщо EU-трафік мінімальний або якщо ваша юридична команда наполягає на максимально консервативному підході.

Принцип: теги Google завантажуються одразу зі станом denied, але без ідентифікаційних даних.

Сторінка завантажилася → Теги GA4/Ads запустились з consent='denied'
                         → Анонімний пінг відправлений (без IP, без cookie, без параметрів)
                         → Банер з'явився → Відмова: стан залишається denied
                                           → Згода: gtag('consent','update') → повні дані

Що надходить в анонімному пінгу при denied: лише тип події (page_view, session_start), приблизне місцезнаходження (країна) і тип пристрою. Без User ID, без cookie, без URL-параметрів.

На основі цих анонімних пінгів Google будує conversion modeling — статистичну апроксимацію конверсій від «відмовників». За даними Google, advanced режим відновлює від 15% до 40% конверсій, які були б повністю невидимі в basic.

Рекомендація: якщо у вас є EU-аудиторія і ви використовуєте Google Ads — тільки advanced. Basic — це вибір відмовитися від моделювання.

Архітектура реалізації через GTM

Налаштування Consent Mode v2 через Google Tag Manager складається з трьох рівнів:

  1. CMP (банер) — отримує рішення користувача і пушить його в GTM
  2. GTM Consent Initialization — встановлює стан за замовчуванням (denied) до будь-яких тегів
  3. GTM Update trigger — оновлює стан після рішення (granted/denied)

Крок 1. Встановити CMP

Виберіть сертифіковану CMP з офіційного реєстру Google. Найпростіші варіанти для малого/середнього бізнесу:

  • Cookiebot (by Usercentrics) — найпоширеніший, є GTM-шаблон, GDPR + ePrivacy
  • CookieYes — безкоштовний план до 100 сторінок, WordPress-плагін є
  • Axeptio — гарний UX банера, французька розробка, є безкоштовний тир

Для WordPress є окремий маршрут: плагін Borlabs Cookie або Complianz — вони самі інтегруються з GTM і передають consent signals без ручного коду.

У GTM є окремий тип тригера: Consent Initialization — All Pages. Він спрацьовує першим — до будь-якого іншого тригера, включно з All Pages. Саме тут треба встановити дефолтний стан.

Якщо CMP має власний GTM-шаблон (Cookiebot, OneTrust, CookieYes):

  1. Відкрийте GTM → Templates → Search Gallery
  2. Знайдіть шаблон своєї CMP (наприклад, «Cookiebot CMP»)
  3. Додайте тег з типу шаблону, тригер — Consent Initialization — All Pages
  4. Налаштуйте параметри (region, default states) — зазвичай достатньо дефолтів

Шаблон автоматично: встановлює denied для всіх чотирьох параметрів до рішення, і оновлює на granted після.

Якщо CMP без GTM-шаблону (або самописний банер):

Додайте Custom HTML тег з тригером Consent Initialization:

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  // Встановити дефолтний стан ПЕРЕД завантаженням будь-яких тегів
  gtag('consent', 'default', {
    'analytics_storage': 'denied',
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied',
    'wait_for_update': 500  // мс, чекати оновлення від CMP
  });

  // Для non-EEA регіонів можна відразу granted
  // gtag('consent', 'default', { ... 'region': ['US', 'CA'] });
</script>

Параметр wait_for_update: 500 каже GA4 зачекати 500 мс на оновлення від CMP — це запобігає відправці пінгу з denied для користувачів, які ще не встигли побачити банер, але вже давали згоду (повернення відвідувачів).

Крок 3. Оновлення після рішення користувача

CMP після отримання рішення повинна пушити в dataLayer подію і стани. Більшість CMP роблять це автоматично. Якщо ваша CMP підтримує це нативно — GTM шаблон від CMP вже обробляє оновлення.

Якщо використовуєте власний банер — додайте виклик у callback після прийняття згоди:

// Після того, як користувач натиснув "Прийняти все"
function onUserAccept() {
  gtag('consent', 'update', {
    'analytics_storage': 'granted',
    'ad_storage': 'granted',
    'ad_user_data': 'granted',
    'ad_personalization': 'granted'
  });
}

// Після "Відхилити все"
function onUserDeny() {
  gtag('consent', 'update', {
    'analytics_storage': 'denied',
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied'
  });
}

Тег gtag('consent', 'update') — це не новий тег GTM, це виклик JS API. CMP-бібліотека сама повинна його виконати після рішення.

Крок 4. Перевірити GA4 і Google Ads теги

Після налаштування consent defaults переконайтеся, що ваш GA4 Configuration Tag і теги Google Ads в GTM не мають явних налаштувань, що блокують consent. Зокрема:

  • У GA4 Configuration Tag: «Consent Settings» → «No additional consent checks required» НЕ встановлено. GA4 автоматично поважає глобальний consent стан.
  • У Google Ads Conversion Tag: аналогічно, не перевизначайте consent.

Для advanced режиму в налаштуваннях GA4 Configuration Tag увімкніть:

Advanced Settings → Google Signals Data Collection: Enabled

Це лише вмикає функцію Google Signals на рівні тегу. Збір демографічних даних від авторизованих Google-користувачів усе одно відбувається тільки для сеансів з analytics_storage='granted' — при denied Signals не активується (детальніше — у розділі «Google Signals і Consent Mode» нижче).

Налаштування регіональних правил

Якщо ваш сайт орієнтований не лише на ЄС — є сенс встановити стан granted за замовчуванням для не-EEA регіонів і denied для EEA:

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  // Глобальний дефолт — дозволено
  gtag('consent', 'default', {
    'analytics_storage': 'granted',
    'ad_storage': 'granted',
    'ad_user_data': 'granted',
    'ad_personalization': 'granted'
  });

  // EEA — заборонено до згоди
  gtag('consent', 'default', {
    'analytics_storage': 'denied',
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied',
    'region': [
      'AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR',
      'DE','GR','HU','IE','IT','LV','LT','LU','MT','NL',
      'PL','PT','RO','SK','SI','ES','SE',
      'IS','LI','NO'  // + EEA non-EU
    ],
    'wait_for_update': 500
  });
</script>

Таким чином для українського, американського або азійського трафіку GA4 продовжує отримувати повні дані без банера. Для EEA — стандартна процедура.

Перевірка налаштувань

Спосіб 1: Google Tag Assistant

  1. Встановіть розширення Tag Assistant або відкрийте tagassistant.google.com
  2. Відкрийте ваш сайт у новій вкладці
  3. У Tag Assistant перейдіть в розділ Consent
  4. Має з’явитися таблиця зі статусами всіх шести параметрів

До прийняття рішення по банеру: всі чотири параметри — denied. Після «Прийняти все» — granted.

Спосіб 2: Chrome DevTools → Network

  1. Відкрийте DevTools (F12) → вкладка Network
  2. У фільтрі введіть collect або gtm.js
  3. Перезавантажте сторінку до взаємодії з банером
  4. Знайдіть запит до https://www.google-analytics.com/g/collect
  5. У параметрах запиту знайдіть gcs= — значення кодує стан consent

Значення gcs:

  • G111 — analytics: denied, ads: denied
  • G100 — analytics: denied, ads: denied (без оновлення)
  • G1** після згоди — granted стани

GA4 → Admin (шестерня) → Property → Data collection and modification → Consent settings (розділ Consent Overview, з’явився у 2024 році).

Показує по кожному сайту (property): відсоток сеансів із analytics_storage=granted, ad_storage=granted тощо. Якщо бачите 0% granted — щось пішло не так.

У GTM Preview mode consent API може поводитися інакше. Для коректного тестування:

  1. Відкрийте сайт через GTM Preview
  2. У Tag Assistant переключіть на вкладку Consent Overview
  3. Перевірте, що стан denied фіксується до банера і змінюється після

Якщо в Preview ви не бачите consent-тегів — можливо, тригер Consent Initialization не налаштований або шаблон CMP не опублікований.

Вплив на дані GA4 і моделювання конверсій

Після правильного впровадження advanced Consent Mode v2 ви побачите в GA4 кілька змін.

Що змінюється в GA4 Reports

Sessions і Users: зменшаться реальні числа для EEA, але з’являться змодельовані оцінки. GA4 не показує «оригінал + модель» окремо — підсумкові числа вже включають modeling.

Conversions: у GA4 → Reports → Conversions — числа включають змодельовані конверсії. Це може здатися зростанням відносно попереднього стану (де їх не було взагалі), але насправді це повернення до реальнішої оцінки.

Attribution: Google Ads показує «Modeled conversions» окремою колонкою в Campaign Reports. Розбивка: реальні конверсії (зі згодою) + змодельовані (від anonymous pings).

Реалістичні очікування від modeling

  • При 20% відмов у банері: modeling повертає ~12–18% «загублених» конверсій
  • При 40% відмов (типово для EU-сайтів): modeling повертає ~25–35%
  • При 70%+ відмов (консервативний банер): modeling дає лише грубу оцінку, точність нижча

Моделювання не замінює реальні дані. Якщо конверсія — це покупка на 500 євро, а GA4 «бачить» її через модель — це статистична оцінка, не факт транзакції. Для e-commerce завжди порівнюйте GA4 конверсії з реальними замовленнями у CRM/касовій системі.

Google Signals — функція GA4, що дозволяє бачити демографічні дані (вік, стать) і крос-девайс поведінку для авторизованих Google-користувачів.

З Consent Mode v2: Google Signals активується тільки для сеансів з analytics_storage=granted. Для сеансів з denied — навіть авторизовані Google-користувачі не трекаються через Signals.

Для використання Signals в GA4: Адмін → Property Settings → Google Signals → Activate. Плюс переконайтеся, що в GA4 Data Settings → Data Collection → «Google signals data collection» — увімкнено.

Типові помилки при впровадженні

  1. Consent Initialization тег не перший. Якщо GA4 Configuration Tag спрацьовує до Consent Initialization — він відправляє хіт без урахування consent. Переконайтеся, що тригер — «Consent Initialization — All Pages», не «All Pages».

  2. Відсутній wait_for_update. Без нього GA4 відправляє анонімний пінг миттєво, ще до того, як CMP-бібліотека встигла перевірити збережену згоду повернення відвідувача. Результат: зайві denied пінги від людей, що вже давали згоду.

  3. Basic режим прийнятий за advanced. Перевірте: якщо в Network не бачите запитів до google-analytics.com/g/collect до натискання в банері — у вас basic.

  4. CMP не синхронізований з GTM. Деякі CMP пушать в dataLayer власні події (наприклад, CookiebotOnAccept), але якщо GTM-шаблон не встановлено або не опубліковано — ці події нікуди не ведуть. Тег оновлення consent не спрацьовує.

  5. Неправильні коди регіонів. Параметр region у gtag('consent','default') приймає ISO 3166-1 alpha-2 коди країн. Частий помилка: 'EU' замість переліку країн. Коду 'EU' не існує — треба перерахувати всі 30 країн EEA.

  6. Відсутні ad_user_data і ad_personalization. Якщо ви реалізовували Consent Mode v1 раніше, ці два нові параметри v2 могли не потрапити до коду. Без них Google Ads не отримує сигналу і не може персоналізувати рекламу для EEA.

  7. Тест тільки в GTM Preview, не в продакшні. Preview-режим може маскувати проблеми з порядком завантаження скриптів. Завжди перевіряйте на live-версії через Tag Assistant.

  8. Банер відсутній на деяких сторінках. Якщо CMP-скрипт завантажується тільки через GTM (не напряму в <head>), і GTM не спрацьовує на певних сторінках (404, AMP, окремі шаблони) — на них consent не ініціалізується коректно.

Чек-лист впровадження

  • Вибрано і встановлено сертифіковану CMP
  • GTM: тег Consent Initialization налаштований з тригером «Consent Initialization — All Pages»
  • Дефолтний стан: analytics_storage, ad_storage, ad_user_data, ad_personalization = denied для EEA
  • Параметр wait_for_update: 500 присутній
  • CMP оновлює стан через gtag('consent','update') після рішення
  • Tag Assistant показує denied до банера і granted після «Прийняти все»
  • В GA4 Consent Overview бачите ненульовий % granted сеансів
  • Advanced режим підтверджений: анонімні пінги відправляються до взаємодії з банером
  • Регіональні правила налаштовані (якщо є non-EEA трафік)
  • Google Signals активований у GA4 (якщо потрібна демографіка)

Пов’язані матеріали

Pillar:

Налаштування GA4:

GTM:

Схожі статті

Дивіться також

Цю статтю пише і оновлює Андрій Коваленко — без AI-води і партнерських посилань. Помітив застарілий факт чи неточність — напиши, перепишу того ж тижня.

Хто веде сайт і чому без AI