Consent Mode v2 wdrożenie na WordPressie sprowadza się do trzech rzeczy: domyślny stan zgód musi wystrzelić przed jakimkolwiek tagiem Google, platforma zgód musi aktualizować sygnały po kliknięciu użytkownika, a wynik trzeba sprawdzić w Tag Assistancie zamiast wierzyć wtyczce. Od marca 2024 roku Google wymaga dwóch nowych sygnałów (ad_user_data i ad_personalization) dla ruchu z Europejskiego Obszaru Gospodarczego, inaczej Google Ads przestaje zasilać listy remarketingowe i nie modeluje konwersji. Ten tekst rozwija jeden wątek z przewodnika o pomiarze bez cookies w 2026 roku: samą procedurę wdrożenia w Google Tag Managerze, krok po kroku.
W skrócie:
- Wersja v2 dodaje parametry ad_user_data i ad_personalization do znanych z v1 ad_storage i analytics_storage.
- Domyślne zgody (default) muszą ładować się w tagu z wyzwalaczem Inicjalizacja zgody, przed kontenerem GTM lub w jego pierwszej kolejce.
- Tryb zaawansowany wysyła pingi bez cookies także po odmowie; tryb podstawowy blokuje tagi całkowicie do momentu zgody.
- Weryfikacja odbywa się w zakładce Consent w Tag Assistancie oraz w ustawieniach zgód GA4 i w Menedżerze danych Google Ads.
- Najczęstszy błąd: wtyczka ustawia zgody, ale skrypt GTM wstawiony przez motyw ładuje się wcześniej i pierwsze zdarzenia lecą bez sygnału.
Co zmienia wersja v2 względem poprzedniej
Pierwsza wersja Consent Mode z 2020 roku obsługiwała dwa sygnały: analytics_storage (cookies analityczne) i ad_storage (cookies reklamowe). Wersja v2, ogłoszona w listopadzie 2023 roku, dodaje dwa kolejne: ad_user_data, czyli zgodę na przesyłanie danych użytkownika do Google w celach reklamowych, oraz ad_personalization, czyli zgodę na personalizację reklam i remarketing.
Zmiana wynika z Digital Markets Act, który uznał Google za tzw. strażnika dostępu. Od 6 marca 2024 roku konta Google Ads bez tych sygnałów dla ruchu z EOG tracą dostęp do list odbiorców i do modelowania konwersji. Dane w GA4 nadal spływają, ale bez pełnych sygnałów raporty odbiorców i import konwersji do Ads są niekompletne.
| Parametr | Wersja | Za co odpowiada | Skutek odmowy |
|---|---|---|---|
| analytics_storage | v1 | Cookies GA4 (_ga, _ga_*) | Brak identyfikatora klienta, pingi bez cookies w trybie zaawansowanym |
| ad_storage | v1 | Cookies reklamowe (_gcl_*) | Brak atrybucji kliknięć Ads po stronie przeglądarki |
| ad_user_data | v2 | Przesyłanie danych użytkownika do Google Ads | Konwersje rozszerzone i dopasowanie klientów nie działają |
| ad_personalization | v2 | Remarketing i personalizacja reklam | Użytkownik nie trafia na listy odbiorców |
Wybór platformy zgód i integracja z GTM
Platforma zgód (CMP) musi być na liście partnerów certyfikowanych przez Google, bo od 2024 roku Google Ads sprawdza także pochodzenie sygnału. Na WordPressie w praktyce wybór ogranicza się do kilku rozwiązań: Cookiebot, Complianz, CookieYes, Real Cookie Banner, iubenda i Usercentrics. Każde z nich ma gotowy szablon w galerii szablonów GTM (Community Template Gallery), co upraszcza konfigurację do jednego tagu.
Zasada jest jedna: CMP powinien być jedynym źródłem komend consent. Jeśli wtyczka WordPress wstawia własny skrypt gtag z komendą default, a równolegle w GTM działa szablon tej samej platformy, dwa źródła zaczynają się przepisywać i Tag Assistant pokazuje sprzeczne stany. Wybierzcie jedną ścieżkę: albo szablon w GTM, albo skrypt wtyczki na stronie, nigdy obie.
- W GTM dodajcie tag z galerii szablonów (np. Cookiebot CMP) i wpiszcie identyfikator domeny z panelu platformy.
- Wyzwalacz ustawcie na Inicjalizacja zgody: wszystkie strony (Consent Initialization). Ten wyzwalacz odpala się przed każdym innym w kontenerze.
- W ustawieniach kontenera włączcie Przegląd zgód (Admin, Ustawienia kontenera, Enable consent overview), aby widzieć, które tagi mają wbudowane sprawdzanie zgód.
- Wyłączcie w wtyczce WordPress automatyczne wstawianie skryptu gtag, jeśli szablon GTM przejmuje tę rolę.
Jeśli pomiar ma iść przez własny serwer, platforma zgód działa tak samo po stronie przeglądarki, a sygnały consent są przenoszone w parametrach żądania. Szczegóły konfiguracji kontenera serwerowego opisuje osobny tekst o tagowaniu server-side w GA4.
Ustawienia domyślne i aktualizacja po decyzji użytkownika
Komenda default określa stan zgód, zanim użytkownik cokolwiek kliknie. Dla ruchu z EOG wszystkie cztery parametry powinny startować jako denied; dla pozostałych regionów można ustawić granted przez parametr region. Warto dodać wait_for_update z wartością 500 ms, aby tagi Google poczekały na odczyt zapisanej wcześniej decyzji z cookie platformy.
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',
'wait_for_update': 500
});Komenda update wysyła nowy stan po kliknięciu w banerze i przy każdym kolejnym wejściu, gdy decyzja jest już zapisana. Certyfikowane platformy robią to same. Przy własnym rozwiązaniu trzeba dopisać wywołanie update w zdarzeniu akceptacji oraz osobne dla częściowej zgody (np. analityka tak, reklamy nie). Pełną specyfikację parametrów publikuje dokumentacja Google Tag Platform.
Do wyboru są dwa tryby. Tryb podstawowy blokuje tagi Google do momentu zgody, więc po odmowie GA4 nie dostaje nic. Tryb zaawansowany ładuje tagi od razu, ale przy odmowie wysyła anonimowe pingi bez cookies, na których GA4 buduje modelowanie behawioralne. Modelowanie uruchamia się dopiero po spełnieniu progów: co najmniej 1 000 zdarzeń dziennie z odmową i 1 000 użytkowników dziennie ze zgodą przez 7 z ostatnich 28 dni.
Kolejność ładowania skryptów
Na WordPressie właśnie tu psuje się większość wdrożeń. Motyw albo wtyczka SEO wstawia kod GTM w sekcji head, a wtyczka zgód dodaje swój skrypt przez wp_head z niższym priorytetem. Efekt: kontener startuje, tag GA4 z wyzwalaczem Wyświetlenie strony wystrzela, a komenda default dociera pół sekundy później. Pierwsze zdarzenie page_view leci bez sygnału zgody i w Tag Assistancie widać status Not set.
Poprawna kolejność wygląda tak:
- Skrypt platformy zgód lub komenda default (inline, jak najwyżej w head).
- Fragment kodu GTM (gtm.js).
- W kontenerze: tag CMP na wyzwalaczu Inicjalizacja zgody.
- Tagi GA4, Google Ads, Floodlight na wyzwalaczach Wyświetlenie strony lub Inicjalizacja (Initialization), nigdy na Inicjalizacji zgody.
Weryfikacja w podglądzie GTM i w Tag Assistant
Po włączeniu podglądu w GTM otwórzcie Tag Assistant i przejdźcie do zakładki Consent. Poprawne wdrożenie pokazuje dwa wiersze: On-page Default ze wszystkimi parametrami w stanie denied oraz, po kliknięciu w banerze, On-page Update ze zmienionymi wartościami. Jeśli w pierwszym wierszu widzicie Not set lub jeśli linia Default pojawia się po tagu GA4 na osi zdarzeń, kolejność skryptów jest zła.
Dodatkowo sprawdźcie w zakładce Tags, czy tag GA4 ma pole Consent status i czy przy odmowie w trybie podstawowym pozostaje w stanie Not fired. W trybie zaawansowanym tag odpala się, ale w parametrach żądania do collect pojawia się gcs=G100 (obie zgody odmówione) zamiast gcs=G111. Parametr gcd koduje z kolei stan czterech sygnałów v2 i to on decyduje o tym, czy Google Ads uznaje wdrożenie za kompletne.
Sprawdzenie sygnałów po stronie GA4 i Google Ads
W GA4 wejdźcie w Administracja, Zbieranie i modyfikacja danych, Zbieranie danych, sekcja Ustawienia zgód. Po 24–48 godzinach od wdrożenia status obu grup sygnałów powinien zmienić się na aktywny. Jeśli widnieje informacja o braku sygnałów, dane wciąż płyną bez parametrów consent.
W Google Ads sprawdźcie Narzędzia, Menedżer danych, diagnostyka tagu Google, gdzie konto pokazuje odsetek ruchu z EOG, który dotarł z pełnymi sygnałami v2. Druga kontrola to kolumna stanu w podsumowaniu konwersji: wpis „brak zgody” przy konwersjach oznacza, że tag konwersji odpala się przed update. Różnice między liczbą konwersji w GA4 i w Ads po wdrożeniu są normalne; ich źródła rozkładamy w analizie, dlaczego GA4 pokazuje mniej konwersji niż Google Ads.
Najczęstsze błędy wdrożeniowe
| Błąd | Objaw | Naprawa |
|---|---|---|
| GTM ładuje się przed komendą default | Pierwszy page_view z gcs pustym lub Not set | Przenieść skrypt zgód wyżej w head albo wstawić GTM przez platformę |
| Dwa źródła komend consent | Sprzeczne stany Default w Tag Assistant | Wyłączyć skrypt gtag wtyczki lub usunąć szablon z GTM |
| Brak ad_user_data i ad_personalization | Ads zgłasza niekompletne sygnały, listy odbiorców pustoszeją | Zaktualizować wtyczkę zgód do wersji obsługującej v2 |
| Tagi Ads na wyzwalaczu Inicjalizacja zgody | Konwersje bez statusu zgody | Zostawić na tym wyzwalaczu wyłącznie tag CMP |
| Region granted dla całego świata | Użytkownicy z EOG mają cookies przed kliknięciem | Ustawić default denied globalnie i wyjątki przez region |
| Wtyczka cache buforuje baner ze stanem zgody | Nowi użytkownicy widzą zaakceptowany stan | Wykluczyć skrypt CMP z minifikacji i opóźniania JS |
Osobną kategorią jest zgodność prawna: baner, który technicznie wysyła sygnały, ale nie daje równie łatwej opcji odmowy, nie spełnia wymogów RODO niezależnie od poprawności w GTM. Granice zbierania danych o użytkownikach w polskim porządku prawnym omawiamy w tekście o scrapowaniu danych do SEO a prawie.
FAQ: najczęstsze pytania
Czy Consent Mode v2 jest obowiązkowy dla każdej strony na WordPressie?
Obowiązek dotyczy stron, które korzystają z Google Ads lub GA4 i przyjmują ruch z Europejskiego Obszaru Gospodarczego. Bez sygnałów ad_user_data i ad_personalization Google Ads od marca 2024 roku nie buduje list odbiorców i nie modeluje konwersji dla tego ruchu.
Czym różni się tryb podstawowy od zaawansowanego?
Tryb podstawowy blokuje ładowanie tagów Google do momentu zgody, więc po odmowie GA4 nie otrzymuje żadnych danych. Tryb zaawansowany ładuje tagi od razu i przy odmowie wysyła anonimowe pingi bez cookies, które GA4 wykorzystuje do modelowania behawioralnego.
Po jakim czasie GA4 pokaże aktywne sygnały zgody?
Sekcja Ustawienia zgód w GA4 aktualizuje status w ciągu 24–48 godzin od pierwszych trafień z parametrami consent. Modelowanie behawioralne wymaga dodatkowo spełnienia progów wolumenu przez 7 z ostatnich 28 dni, więc w raportach pojawia się zwykle po dwóch do czterech tygodniach.
Czy wtyczka zgód wystarczy, czy trzeba konfigurować GTM ręcznie?
Certyfikowane wtyczki (Cookiebot, Complianz, CookieYes, Real Cookie Banner) obsługują komendy default i update samodzielnie. Ręczna praca w GTM sprowadza się do dodania tagu z szablonu na wyzwalaczu Inicjalizacja zgody i upewnienia się, że żaden inny skrypt nie wysyła komend consent.
Co oznaczają parametry gcs i gcd w żądaniach do Google?
Parametr gcs koduje stan dwóch sygnałów v1: G100 oznacza odmowę obu, G111 zgodę na oba, a G101 lub G110 zgodę częściową. Parametr gcd koduje stan wszystkich czterech sygnałów wraz z informacją, czy pochodzą z komendy default czy update. Google Ads odczytuje kompletność wdrożenia v2 właśnie z gcd.
Co dalej
Po potwierdzeniu poprawnych sygnałów w Tag Assistancie warto wrócić do szerszego kontekstu: modelowanie konwersji i tagowanie po stronie serwera opisujemy w przewodniku o pomiarze bez cookies w 2026 roku. Dopiero z działającym Consent Mode ma sens porównywanie liczb między GA4 i Google Ads, bo bez niego różnice wynikają z braku danych, a nie z metodologii atrybucji.
