Блог
CookiePass и Google Consent Mode: что баннер согласия делает с вашим трафиком
Опубликовано · 3 мин чтения
На этом сайте работает CookiePass. Это сервис согласия на cookies, реализующий Google Consent Mode v2 так, как это описывает Google, — и именно это свойство в итоге важнее цветов баннера: оно определяет, что ваш тег Google отправляет при каждом просмотре страницы до ответа посетителя, после его «да» и после его «нет». Вот как это выглядит со стороны сервера, где каждое из этих обращений проходит через ваш контейнер.
Что на самом деле меняет Consent Mode
Consent Mode — не выключатель для тегов. С ним тег Google по-прежнему срабатывает на каждой странице; меняется флаг на каждом обращении и то, что Google с этим обращением делает. Когда analytics_storage отклонён, тег не ставит cookies, не сохраняет client id между страницами и отправляет то, что Google называет пингом без cookies, — обращение, которое GA4 использует для моделирования, а не для отчётов, которые вы читаете.
Флаг — это параметр запроса gcs: две буквы и две цифры. Первая цифра — ad_storage, вторая — analytics_storage; 1 — разрешено, 0 — отклонено.
gcs=G100 ad_storage denied, analytics_storage denied
gcs=G101 ad_storage denied, analytics_storage granted
gcs=G110 ad_storage granted, analytics_storage denied
gcs=G111 both granted
(no gcs) no Consent Mode on the page — treated as grantedПоследнюю строку обычно упускают. Страница вообще без Consent Mode не отправляет gcs, и Google считает каждое её обращение согласованным. Значит, баннер с Consent Mode не уменьшает объём отправляемого — он начинает говорить об этом правду.
Как CookiePass это подключает
Consent Mode v2 требует последовательности, а не настройки. Состояние по умолчанию должно быть объявлено до загрузки тега Google — отклонено для тех, кто ещё не выбрал, — обновление должно следовать в момент решения посетителя, а состояние — восстанавливаться при каждом повторном визите. При неверном порядке первый просмотр страницы в каждой сессии уходит как согласованный ещё до того, как баннер отрисован.
Вот последовательность, которую CookiePass формирует из собственного скрипта, так что ничего из этого не попадает в ваш контейнер Tag Manager:
gtag('consent', 'default', {
ad_storage: 'denied',
analytics_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
wait_for_update: 500
});
// …the visitor accepts…
gtag('consent', 'update', {
ad_storage: 'granted',
analytics_storage: 'granted',
ad_user_data: 'granted',
ad_personalization: 'granted'
});Это вся интеграция. Собственные теги Google учитывают состояние согласия автоматически, включая теги, которые SignalHost публикует в ваш веб-контейнер. Ничему в серверном контейнере не нужно условие согласия; добавить его вручную — это как раз способ получить заблокированный тег Google рядом с незаблокированными тегами событий, отправляющими данные напрямую в Google.
Что ваш серверный контейнер видит до и после выбора
Каждое обращение идёт тем же путём: браузер отправляет его на ваш собственный хост, edge передаёт его в серверный контейнер, контейнер отправляет в GA4. Разница целиком в полезной нагрузке.
- До выбора: gcs=G100 на каждом обращении, нет cookie _ga, новый client id на каждой странице. GA4 получает пинг без cookies; ваш контейнер считает запрос.
- После согласия: gcs=G111, cookies установлены, сессия склеивается. С этого момента это обращения, из которых состоят ваши отчёты.
- После отказа: gcs=G100 на каждой странице, пока выбор в силе. События расширенной статистики — scroll, file_download и остальные — подчиняются тому же правилу, что и page_view.
Поэтому страница контейнера при наличии баннера показывает два числа на событие: обращения с согласием на аналитику — то, что Analytics покажет как пользователей и сессии, — и после косой черты всё, что контейнер переслал. session_start и first_visit не появляются ни в одной колонке: Analytics выводит их из флагов на первом page_view, а не получает как события.
Что это значит для ваших цифр трафика
Ожидайте, что колонки разойдутся, — и что этот разрыв окажется самым полезным числом на странице.
- Analytics показывает меньше пользователей и сессий, чем запросов насчитывает ваш контейнер. Разница — доля посетителей, которые отказались или не ответили: ваш уровень согласия, измеренный, а не угаданный.
- GA4 может заполнить часть разрыва поведенческим моделированием, когда ресурс достигнет порогов Google. Смоделированные данные появляются в отчётах; в контейнере — никогда, потому что они не отправляются.
- При отклонённом ad_storage отслеживанию конверсий Google Ads нечего атрибутировать, а линкеру конверсий нечего связывать. Серверный контейнер этого не меняет и не должен: first-party не означает «без согласия».
- Дизайн баннера теперь — измерительное решение. Уровень согласия 60% и 85% — это один и тот же сайт с разными кнопками, и разрыв между колонками покажет, какой из них у вас.
Контрольный список
- Загружайте скрипт согласия до тега Google. Состояние по умолчанию должно существовать до первого обращения.
- Откройте страницу с неотвеченным баннером и прочитайте gcs у запроса /g/collect в сетевой панели браузера. Должно быть G100.
- Согласитесь и прочитайте ещё раз на следующей странице. Должно быть G111.
- Не добавляйте триггеры согласия ни к чему в серверном контейнере. Веб-тег уже несёт состояние.
- Вернитесь на страницу контейнера через день и прочитайте пару чисел у page_view. Первое, делённое на второе, — ваш уровень согласия.
Мы выбрали CookiePass, потому что он выполняет ровно описанную последовательность, заработал на этом сайте за один вечер и позволяет баннеру взять цвета самого сайта. Цифры из предыдущего раздела — доказательство того, что это работает.
