LW IT Solutions
« Blog Overview /Digital Analytics / Jak wdrożyć Google Consent Mode v2
This post in other languages:

Jak wdrożyć Google Consent Mode v2

Część 1 z 4 serii Jak poprawnie okablować zgodę

Jak wdrożyć Google Consent Mode v2
Spis treści
  1. Dlaczego Consent Mode v2 jest tak ważny?
  2. Wpływ na tagi Google (Ads, Floodlight, SA360, GA4)
  3. Metoda 1: Implementacja przez Google Tag Manager (GTM)
  4. Metoda 2: Implementacja przez Vanilla JavaScript
  5. Podsumowanie
  6. Weryfikacja sygnałów i zachowanie kliknięć reklam bez ciasteczek
  7. Pytania i odpowiedzi
  8. Źródła

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ć.

Diagram do artykułu: Dlaczego Consent Mode v2 jest tak ważny?, Wpływ na tagi Google, Metoda 1: Implementacja przez Google Tag Manager …
Przebieg z artykułu w 4 krokach: Dlaczego Consent Mode v2 jest tak ważny?, Wpływ na tagi Google, Metoda 1: Implementacja przez Google Tag Manager, Metoda 2: Implementacja przez Vanilla JavaScript.

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_storage jest 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_storage lub ad_user_data są 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_storage i/lub analytics_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.

Jak poprawnie okablować zgodę

  1. Jak wdrożyć Google Consent Mode v2
  2. Jak działają pingi bez cookies w Google Consent Mode
  3. GA4 Consent Mode v2: parametr gcd, wyścigi CMP i debugowanie po stronie serwera
  4. Jak przekazać zgody z Client GTM do Server-Side GTM
Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Napisanie komentarza

Odmienne wyniki z innych kont i pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

ALL ARTICLES & CATEGORIES

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (58) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (37) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Music Production

Wszystkie artykuły w tej kategorii (16) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Wszystkie artykuły w tej kategorii (12) Śledź tę kategorię przez RSS