Jak wdrożyć Google Consent Mode v2
Część 1 z 4 serii Jak poprawnie okablować zgodę

Spis treści
Działalność w ramach Europejskiego Obszaru Gospodarczego (EOG) lub przetwarzanie danych użytkowników z Europy sprawia, że Google Consent Mode v2 przestał być opcją, a stał się wymogiem prawnym (obowiązującym od marca 2024 r.). W związku z wejściem w życie ustawy o rynkach cyfrowych (Digital Markets Act – DMA), Google fundamentalnie zmieniło sposób przetwarzania danych przez swoje platformy reklamowe i analityczne.
Brak implementacji Consent Mode v2 oznacza utratę możliwości remarketingowych oraz drastyczny spadek jakości śledzenia konwersji. Celem architektów danych jest utrzymanie precyzji pomiarów przy jednoczesnym rygorystycznym przestrzeganiu protokołów prywatności. Oto szczegółowy przewodnik po tym, dlaczego Consent Mode v2 jest kluczowy, jaki ma wpływ na ekosystem GMP oraz jak go poprawnie wdrożyć.
Dlaczego Consent Mode v2 jest tak ważny?
W swojej istocie Consent Mode stanowi pomost między wyborami użytkowników dotyczącymi prywatności a systemami zbierania danych. Gdy użytkownik wchodzi w interakcję z banerem ciasteczek, Consent Mode przekazuje jego decyzje (zgoda lub odmowa) do tagów Google. Wprowadzenie wersji v2 przyniosło dwa kluczowe parametry nakierowane na reklamę:
- ad_user_data: Określa zgodę na wysyłanie danych użytkownika do Google w celach reklamowych.
- ad_personalization: Określa zgodę na personalizację reklam (remarketing).
Wpływ na tagi Google (Ads, Floodlight, SA360, GA4)
Po poprawnej konfiguracji w trybie zaawansowanym (Advanced Consent Mode), tagi ładują się przed wyborem użytkownika, ale drastycznie zmieniają zachowanie w oparciu o status zgody:
- Google Analytics 4 (GA4): Jeśli
analytics_storagejest odrzucone, GA4 przestaje odczytywać i zapisywać ciasteczka. Zamiast tego wysyła sygnały bez ciasteczek („pings”). Następnie wykorzystuje uczenie maszynowe do modelowania zachowań, pozwalając na podgląd szacunkowych ścieżek użytkowników bez naruszania ich prywatności. - Google Ads & SA360: Jeśli
ad_storagelubad_user_datasą odrzucone, tagi reklamowe wysyłają sygnały konwersji bez ciasteczek. Silnik Google wykorzystuje wtedy modelowanie konwersji, aby odzyskać utracone dane, zapewniając stabilność algorytmów automatycznego ustalania stawek i obliczeń ROAS. - Floodlights (Campaign Manager 360): Podobnie jak w Google Ads, tagi Floodlight respektują stan zgody, wykorzystując dane zagregowane i modelowanie do precyzyjnej atrybucji konwersji w kampaniach display i wideo, bez polegania na ciasteczkach stron trzecich.
Bez v2 Google po prostu odrzuci dane, na które nie uzyskano zgody, paraliżując analitykę i budowanie grup odbiorców.
Metoda 1: Implementacja przez Google Tag Manager (GTM)
Dla większości konfiguracji GTM jest najczystszym sposobem zarządzania zgodami, pełniąc rolę centralnego systemu operacyjnego architektury śledzenia.
Krok 1: Przegląd zgód (Consent Overview) Wejść w obszar roboczy GTM > Administracja > Ustawienia kontenera i zaznaczyć opcję „Włącz przegląd zgód”. Odblokuje to ikonę tarczy w widoku Tagi, co pozwoli na łatwe zarządzanie ustawieniami dla wszystkich tagów.
Krok 2: Szablon CMP lub Consent Mode Zamiast budować własną logikę, warto wykorzystać certyfikowany szablon CMP (np. Cookiebot, OneTrust, CookieYes) z Galerii Szablonów Społecznościowych.
- Dodać szablon do obszaru roboczego i skonfigurować go z własnym ID CMP.
- Jako wyzwalacz służy Inicjacja zgody (Consent Initialization) – Wszystkie strony. Jest to specjalny wyzwalacz uruchamiający się przed standardowymi odsłonami, gwarantujący ustawienie domyślnych zgód przed uruchomieniem jakichkolwiek tagów Google.
- Jeśli CMP jest wdrożone bezpośrednio na stronie, zaleca się użycie szablonu „gtm-templates-simo-ahava”, który jest zawsze aktualny. Należy dodać dwie instancje szablonu jako tagi:
- Tag domyślny (Default): Uruchamiany na Inicjacji zgody, ustawiający wszystko na „Denied”.
- Tag aktualizacji (Update): Uruchamiany na zdarzeniu aktualizacji zgody z CMP.
Krok 3: Konfiguracja ustawień zgody tagów Tagi Google (GA4, Google Ads) mają wbudowaną kontrolę zgód. Nie trzeba ich blokować przed uruchomieniem. Wystarczy:
- Otworzyć tag GA4 lub Google Ads.
- Przejść do Ustawienia zaawansowane > Ustawienia zgody.
- Upewnić się, że tag wymaga
ad_storagei/lubanalytics_storage. Tag obsłuży resztę – uruchomi się normalnie, jeśli udzielono zgody, lub wyśle sygnały bez ciasteczek w przypadku odmowy.
Metoda 2: Implementacja przez Vanilla JavaScript
W przypadku budowy zoptymalizowanego frontendu lub Single Page Application (SPA), gdzie GTM jest zbyt ciężki, implementacja bezpośrednia przez JS jest optymalnym rozwiązaniem.
1. Stan domyślny (umieścić w <head>) Skrypt ten musi wykonać się przed gtag.js. Informuje Google, aby domyślnie odrzucać wszystko (dla użytkowników z EOG).
<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>
2. Stan aktualizacji (wyzwalany interakcją) Gdy użytkownik zaakceptuje ciasteczka, należy wysłać aktualizację do dataLayer:
document.getElementById('btn-accept-all').
addEventListener('click', function() {
gtag('consent', 'update', {
'ad_storage': 'granted',
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'analytics_storage': 'granted'
});
document.getElementById('cookie-banner').style.display = 'none';
});
W razie potrzeby należy dostosować ID przycisku „btn-accept-all”.
Podsumowanie
Wdrożenie Google Consent Mode v2 to ostateczny sposób na zabezpieczenie analityki i infrastruktury reklamowej na przyszłość. Niezależnie od wybranej metody – przez GTM czy bezpośredni kod JS – poprawne ustawienie stanów domyślnych i aktualizacji zapewnia zgodność prawną oraz pozwala algorytmom Google na odzyskiwanie danych w sposób zgodny z prywatnością.
Weryfikacja sygnałów i zachowanie kliknięć reklam bez ciasteczek
To, czy polecenia domyślne i aktualizacji docierają zgodnie z założeniem, pokazuje Tag Assistant, otwierany przez tryb podglądu GTM. W widoku Summary najwcześniejsze zdarzenie Consent pokazuje w sekcji API Call stan domyślny z parametrami ad_storage, ad_user_data, ad_personalization i analytics_storage. Po dokonaniu wyboru w banerze najnowsze zdarzenie Consent musi zawierać zaktualizowane wartości. Karta Consent w sekcji Output zestawia oba stany w kolumnach On-page Default i On-page Update.
URL passthrough
Po kliknięciu reklamy informacje o kliknięciu mogą zostać dołączone do adresu URL strony docelowej jako parametr zapytania. Zwykle trafiają one do ciasteczek własnych (first-party), co przy odrzuconym ad_storage nie jest możliwe. URL passthrough przenosi je zamiast tego w adresie URL: linki wewnętrzne mogą wtedy otrzymać parametry gclid, dclid, gclsrc, _gl i wbraid.
gtag('set', 'url_passthrough', true);
W GTM ten sam efekt daje pole url_passthrough z wartością true w tagu Google. Google wymienia warunki: tag Google obsługujący zgody na stronie, wdrożony Consent Mode, link wychodzący do tej samej domeny co bieżąca strona oraz, w przypadku tagów Google Ads i Floodlight, obecność GCLID lub DCLID w adresie URL. Przekierowania muszą zachowywać parametry, raporty analityczne powinny je pomijać w adresach stron, a strony, których treść zależy od parametrów zapytania, muszą je tolerować.
Pokrewnym ustawieniem jest gtag('set', 'ads_data_redaction', true): dopóki ad_storage jest odrzucone, tagi Google Ads i Floodlight usuwają wtedy identyfikatory kliknięć reklam z wysyłanych żądań sieciowych.
Pytania i odpowiedzi
Od czego zależy wartość wait_for_update, jeśli odwiedzający często podejmują decyzję dopiero po kilku sekundach?
Ta wartość nie czeka na decyzję, lecz na narzędzie do zarządzania zgodami. Informuje tagi Google, jak długo mają czekać na ewentualne polecenie update, zanim zaczną działać według stanów domyślnych. Chodzi więc o czas ładowania skryptu banera, a nie o czas namysłu przed kliknięciem.
Z tego samego powodu hojna wartość niczego nie poprawia. Ustawienie dziesięciu sekund opóźnia każdy pomiar o dziesięć sekund u wszystkich, którzy w ogóle nie klikną, a decyzja podjęta później i tak zostaje przekazana przez update i obowiązuje od tej chwili.
Przydatna jest zatem wartość zmierzona, a nie szacowana: na karcie Network w narzędziach deweloperskich widać, kiedy skrypt CMP jest już załadowany, a wartość powinna być nieco wyższa. Wartość 500 milisekund z przykładu odpowiada minimum, które Google zaleca, gdy w grę wchodzą żądania sieciowe; więcej opłaca się tylko wtedy, gdy wymaga tego pomiar. Wszystko powyżej jedynie przesuwa w czasie sygnały bez ciasteczek, które inaczej dawno byłyby już w drodze.
Czy szkodzi, jeśli tag GA4 przy braku zgody jest dodatkowo blokowany wyjątkiem?
Tak, i to w sposób niewidoczny. Twardo zablokowany tag nie wysyła niczego, nawet sygnału bez ciasteczek.
A właśnie te sygnały są podstawą modelowania, które ma rekompensować rezygnację z ciasteczek. Kontener działa wtedy formalnie w trybie zaawansowanym, a dostarcza dane jak w trybie podstawowym: ustawienia zgody w tagu są skonfigurowane, modelowanie mimo to nie dostaje żadnych danych do obliczeń, a w raportach po prostu brakuje udziału odwiedzających, którzy odrzucili zgodę.
Da się to sprawdzić w kilka minut. Po odrzuceniu zgody w oknie prywatnym w trybie zaawansowanym wychodzi żądanie do google-analytics.com, tyle że bez identyfikatorów. Jeśli nie wychodzi żadne żądanie, nadal działa wyjątek i należy go po prostu usunąć, niczym go nie zastępując, ponieważ wbudowana kontrola zgód w tagu wykonuje to samo zadanie, tylko bez tłumienia sygnałów.