Consent Mode v2 działa w dwóch miejscach: w kodzie strony (sygnały zgody) i w CMP (baner). Jeśli którykolwiek element jest źle wpięty, GA4 pokaże zaniżone konwersje, a Google Ads przestanie zbierać dane do remarketingu i Enhanced Conversions. Najczęstszy problem to brak dwóch nowych sygnałów – ad_user_data i ad_personalization – które dla ruchu z EEA są wymagane od marca 2024. Poniżej znajdziesz model mentalny czterech sygnałów, różnicę między trybem podstawowym i zaawansowanym oraz kolejność wdrożenia, którą można sprawdzić punkt po punkcie.

Consent Mode v2 przekazuje do Google cztery sygnały. Każdy ma tylko dwie wartości – granted albo denied – i każdy odpowiada za inny fragment pomiaru. Mylenie ich to najczęstsze źródło „dziwnych” spadków w raportach.

Para, którą klienci mylą najczęściej, to ad_storage vs ad_user_data. Pierwszy działa lokalnie: gdy jest denied, w przeglądarce nie powstanie cookie reklamowe. Drugi działa po stronie transferu: gdy jest denied, Google nie przyjmie od Ciebie danych klienta – nawet jeśli technicznie masz je w formularzu i możesz je zahashować. W praktyce: sklep z włączonym ad_storage: granted i ad_user_data: denied nadal zbiera cookie, ale Enhanced Conversions i Customer Match nie zadziałają.

Od marca 2024 dla ruchu z EEA Google wymaga obu nowych sygnałów. Jeśli CMP ich nie wysyła, tagi nadal się uruchamiają, ale dane z EEA przestają zasilać remarketing i listy odbiorców, a konwersje wracają wyłącznie w formie modelowanej i zagregowanej. Zanim zaczniesz diagnozować spadki, sprawdź w narzędziu CMP albo w kodzie, czy ad_user_data i ad_personalization w ogóle występują w wywołaniach gtag('consent', ...). Brak parametru bywa gorszy niż denied, bo nikt nie wie, jaki stan faktycznie obowiązuje.

Zaawansowane wdrożenia Enhanced Conversions po stronie serwera wymagają dodatkowo poprawnego przekazania zgody w API – opisuje to dokumentacja Google Ads API.

SygnałCo blokujeCo konkretnie przestaje działać
analytics_storageCookies analityczne i identyfikatory sesjiRozpoznanie powracających użytkowników, ścieżki wielosesyjne, część raportów GA4 opartych na sesjach
ad_storageCookies reklamowe i identyfikatory kliknięćRemarketing Google Ads, listy odbiorców, konwersje z ostatniego kliknięcia, linkowanie konwersji
ad_user_dataPrzekazywanie danych użytkownika do GoogleEnhanced Conversions, Customer Match, importy konwersji offline i rozszerzonych
ad_personalizationWykorzystanie danych do personalizacji reklamRemarketing (w tym dynamiczny), budowa i odświeżanie list odbiorców, reklamy personalizowane

Basic czy Advanced: ile danych tracisz w każdym wariancie

Tryb podstawowy (Basic) oznacza jedno: przy odmowie tag nie wysyła do Google nic. Żadnego żądania, żadnego pingu. Użytkownik bez zgody jest dla systemu całkowicie niewidoczny. Efekt jest przewidywalny – w GA4 widzisz wyłącznie użytkowników, którzy kliknęli „akceptuję”, a jeśli w Twojej branży akceptacja wynosi 40–60%, raporty pokazują mniej więcej połowę rzeczywistości.

Tryb zaawansowany (Advanced) wysyła tzw. cookieless ping – także wtedy, gdy użytkownik jeszcze nie podjął decyzji albo ją odrzucił. Taki ping zawiera znacznik czasu, typ zdarzenia i podstawowy kontekst przeglądarki (np. user agent, przybliżony region). Nie zawiera identyfikatorów: ani client_id z cookie _ga, ani _gcl_au, ani pełnych parametrów zdarzenia, które pozwoliłyby przypisać je do konkretnej osoby czy zamówienia. Nie da się z niego odtworzyć ścieżki użytkownika między wizytami – i to jest zamierzone.

Różnica w raportach nie sprowadza się do „trochę więcej danych”. Bez pingów nie ma na czym trenować modeli: modelowanie konwersji i modelowanie behawioralne w GA4 działają w oparciu o ruch bez zgody, więc w trybie podstawowym praktycznie nie masz z czego odzyskiwać brakujących konwersji. Google Ads dodatkowo nie otrzyma sygnałów do korygowania atrybucji.

Kiedy tryb podstawowy bywa świadomą decyzją? Gdy ruch z EEA jest marginalny (np. sklep sprzedający głównie poza Europą), gdy dział prawny wprost zabrania wysyłania jakichkolwiek danych przed zgodą, albo gdy CMP nie obsługuje trybu zaawansowanego. Kiedy jest po prostu błędem? Gdy wtyczka CMP ma opcję „tryb zaawansowany”, ale nikt jej nie włączył, albo gdy w kontenerze brakuje tagu ustawiającego domyślne wartości zgody przed startem GTM. To najczęstsza przyczyna zaniżonych konwersji w polskich sklepach na PrestaShop i WooCommerce – warto najpierw sprawdzić konfigurację, a dopiero potem szukać problemu w atrybucji.

ElementTryb podstawowy (Basic)Tryb zaawansowany (Advanced)
Ruch bez zgodyBrak jakiegokolwiek żądania do GoogleCookieless ping bez identyfikatorów
Modelowanie konwersji i behawioralnePraktycznie brak podstawy do modelowaniaDziała na danych z pingów
Cookies i rozpoznanie użytkownikaNie zapisuje i nie odczytujeNie zapisuje i nie odczytuje (identycznie)
Typowe zastosowanieRuch głównie poza EEA, twarde wymagania prawneStandard dla sklepów i leadgenu z ruchem z EEA

Wdrożenie krok po kroku: kolejność kodu, region i zapis decyzji

Zasada nadrzędna: gtag('consent', 'default', ...) musi wykonać się przed jakimkolwiek tagiem pomiarowym i przed kontenerem GTM. Jeśli wstawisz go po snippecie GTM, część tagów zdąży wystrzelić z domyślnymi ustawieniami (czyli bez ograniczeń) – i tego nie cofniesz.

Kolejność działań:

W GTM domyślne wartości ustawia się tagiem z szablonu Consent Mode na wyzwalaczu „Consent Initialization – All Pages”, a każdy tag reklamowy warto dodatkowo oznaczyć w sekcji Consent Overview jako wymagający ad_storage i ad_personalization.

<!-- przed tagiem Google / GTM -->
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  // 1) DOMYŚLNIE – najbezpieczniejszy stan dla EEA
  gtag('consent', 'default', {
    'analytics_storage': 'denied',
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied',
    'region': ['EEA'],
    'wait_for_update': 500
  });

  // 2) DECYZJA Z POPRZEDNIEJ WIZYTY (cookie lub localStorage CMP)
  var zapis = odczytajZgody(); // np. "all", "analytics", "none"
  if (zapis) {
    gtag('consent', 'update', {
      'analytics_storage': zapis === 'none' ? 'denied' : 'granted',
      'ad_storage': zapis === 'all' ? 'granted' : 'denied',
      'ad_user_data': zapis === 'all' ? 'granted' : 'denied',
      'ad_personalization': zapis === 'all' ? 'granted' : 'denied'
    });
  }

  // 3) KLIK W BANERZE – tę część realizuje CMP (callback)
  // gtag('consent', 'update', {
  //   'analytics_storage': 'granted',
  //   'ad_storage': 'granted',
  //   'ad_user_data': 'granted',
  //   'ad_personalization': 'granted'
  // });
</script>

Pułapka: wtyczka SEO albo szablon sklepu potrafią wstawić własny tag GA4 bez zgody, równolegle do GTM. Wtedy w kodzie masz dwa pomiary – jeden zgodny z Consent Mode, drugi nie. Przed wdrożeniem zrób przegląd źródeł strony i sprawdź, ile razy na stronie pojawia się googletagmanager.com. Jeśli korzystasz z Google Tag Gateway lub GTM po stronie serwera, pamiętaj, że stan zgody trzeba tam przekazać – kontener serwerowy nie odczyta jej sam z przeglądarki.

CMP w PrestaShop i WooCommerce – konfiguracja i pułapki

CMP na sklepie MŚP musi robić cztery rzeczy naraz. Brakuje jednej i Consent Mode v2 nie działa, choć baner wyświetla się poprawnie.

Wybór między SaaS a wtyczką to w praktyce wybór tego, kto pilnuje zmian w kodzie, gdy Google coś zmieni.

PodejścieKoszt (sklep MŚP)Czas wdrożeniaKto aktualizuje po zmianach
SaaS (Cookiebot, Usercentrics)abonament miesięczny zależny od liczby domen i odsłon1–3 hdostawca, Ty tylko wgrywasz skrypt
Wtyczka w sklepielicencja jednorazowa lub roczna2–6 h plus testyTy, po każdej aktualizacji rdzenia i wtyczek

Pułapka cache i lazy load. LiteSpeed Cache, WP Rocket czy Cloudflare mogą sprawić, że baner doładuje się po tagach. Wtedy pierwsze żądanie leci z wartością granted, mimo że użytkownik nic nie kliknął, a Ty masz trafikę bez podstawy prawnej. Sprawdzenie: w Tag Assistant zakładka Consent – jeśli przed kliknięciem widzisz granted, masz ten problem. Rozwiązanie: wyłącz cache dla skryptu CMP i ustaw jego ładowanie w <head> przed GTM.

Pułapka starych wersji. Wtyczki i skrypty sprzed marca 2024 wysyłają tylko analytics_storage i ad_storage. Sprawdź w źródle strony, czy w gtag('consent','update', ...) są wszystkie cztery klucze. Brak dwóch nowych oznacza, że remarketing i Enhanced Conversions na ruchu z EEA nie zadziałają.

Gdzie wpiąć kod. W PrestaShop użyj hooka displayHeader we własnym module – nie edytuj header.tpl w szablonie, bo nadpiszesz zmiany przy aktualizacji. W WooCommerce podepnij skrypt przez wp_head z priorytetem 1, w child theme lub dedykowanej wtyczce. Po wdrożeniu przetestuj koszyk i moduł płatności – zbyt agresywne blokowanie skryptów potrafi wyłączyć Przelewy24 albo Stripe. Szczegóły hooków znajdziesz w dokumentacji deweloperskiej PrestaShop.

PodejścieKoszt (sklep MŚP)Czas wdrożeniaKto aktualizuje po zmianach
SaaS (Cookiebot, Usercentrics)abonament miesięczny zależny od liczby domen i odsłon1–3 hdostawca, Ty tylko wgrywasz skrypt
Wtyczka w sklepielicencja jednorazowa lub roczna2–6 h plus testyTy, po każdej aktualizacji rdzenia i wtyczek

Weryfikacja w 15 minut: GTM, DebugView i Google Ads

Ten zestaw testów nie wymaga czekania na dane z kilku dni. Kolejność jest istotna, bo każdy krok sprawdza co innego.

  1. Podgląd GTM i Tag Assistant. W GTM kliknij Podgląd, wejdź na stronę w oknie incognito. W Tag Assistant otwórz zakładkę Consent. Przed kliknięciem w baner wszystkie cztery sygnały muszą mieć denied. Widzisz granted – CMP ładuje się za późno.
  2. Klik w „Akceptuję wszystkie”. Zakładka Consent powinna pokazać Consent Update z czterema wartościami granted, a dopiero po nim zdarzenia GA4 i tagi Ads. Jeśli tagi odpalają się przed update, kolejność w GTM jest zła.
  3. GA4 DebugView. Administracja → DebugView. Przy analytics_storage = denied nie zobaczysz zwykłych zdarzeń – w trybie zaawansowanym polecą tylko pingi bez parametrów. Po zgodzie muszą pojawić się pełne page_view, view_item, add_to_cart. Brak zdarzeń po zgodzie oznacza, że tag nie reaguje na sygnał.
  4. Raport z danymi modelowanymi. W GA4 szukaj rozbicia na stan zgody i kolumny z danymi modelowanymi w sekcji Raporty (u części kont jako raport Consent Mode, w e-commerce w Monetyzacja → Modelowanie behawioralne). Nazwy i lokalizacja zmieniały się przy aktualizacjach GA4 – jeśli raportu nie ma, sprawdź najpierw w Administracja → Zbieranie danych, czy modelowanie behawioralne jest włączone i czy właściwość łapie wymagany wolumen zdarzeń.
  5. Diagnostyka konwersji w Google Ads. Narzędzia → Pomiar → Diagnostyka konwersji. Komunikat o brakujących zgodach nie zawsze oznacza błąd wdrożenia – często mówi tylko, że część użytkowników odmówiła. Błąd wdrożenia rozpoznasz po tym, że komunikat wisi mimo 100% akceptacji w testach.

Dwa scenariusze, dwa różne błędy. Na czystym profilu sprawdzasz, czy tagi są zablokowane przed zgodą. Na profilu z zapisaną decyzją – czy po powrocie na stronę sygnały startują z granted bez ponownego klikania i czy baner nie wyskakuje drugi raz. Pierwszy test wyłapuje przeciek danych, drugi – zaniżone konwersje u wracających użytkowników, czyli najczęściej u Twoich najlepszych klientów.

Modelowanie konwersji i odzyskiwanie danych: realne liczby i limity

Zacznijmy od progów, bo to one decydują, czy zobaczysz w ogóle jakiekolwiek dane modelowane.

Uwaga o aktualności: Google zmieniał te progi co najmniej raz i podaje je zbiorczo w swojej Pomocy – w sekcji o modelowaniu konwersji w Google Ads i o modelowaniu behawioralnym w GA4. Przed publikacją potwierdź wartości w dokumentacji i wpisz w tym akapicie datę sprawdzenia. Bez tego artykuł po kilku miesiącach będzie wprowadzał czytelnika w błąd.

ElementModelowanie konwersji (Google Ads)Modelowanie behawioralne (GA4)
Gdzie działaw raportach konwersji kampaniiw raportach GA4 i eksploracjach
Po codoliczenie konwersji przypisywanych reklamomuzupełnienie braków w zachowaniu użytkowników
Czego wymagawolumenu konwersji i interakcji w krajuwolumenu zdarzeń w obu stanach zgody

Nie porównuj 1:1. Dane modelowane są oznaczone w raportach i nie mieszają się z danymi obserwowanymi – jeśli zestawisz je z liczbami sprzed wdrożenia Consent Mode, wyciągniesz błędny wniosek o spadku sprzedaży. Zestawiaj kwartał do kwartału po wdrożeniu, nie przed i po.

Enhanced Conversions. Poprawia dopasowanie konwersji do kliknięć szczególnie na mobile i przy długiej ścieżce zakupowej, bo dosyła zahashowane dane z formularza (e-mail, telefon) obok samego kliknięcia. Realnie działa, gdy masz formularz leadowy albo logowanie. Wymaga zgody na ad_user_data – przy jej braku dla ruchu z EEA dane nie zostaną użyte.

Server-side GTM. Daje kontrolę nad tym, co i w jakiej formie wychodzi z Twojej domeny, oraz częściową odporność na blokery i adblocki, bo żądania idą z subdomeny sklepu. Nie załatwia jednak niczego prawnie: jeśli wyślesz dane przy zgodzie denied, naruszasz te same przepisy, tylko trudniej to zauważyć. Konwersje offline z CRM wysyła się przez API Google Ads – i tam również obowiązuje stan zgody.

ElementModelowanie konwersji (Google Ads)Modelowanie behawioralne (GA4)
Gdzie działaw raportach konwersji kampaniiw raportach GA4 i eksploracjach
Po codoliczenie konwersji przypisywanych reklamomuzupełnienie braków w zachowaniu użytkowników
Czego wymagawolumenu konwersji i interakcji w krajuwolumenu zdarzeń w obu stanach zgody

Strona prawna w Polsce: RODO, ePrivacy i Prawo komunikacji elektronicznej

Warstwa prawna i warstwa pomiarowa to dwa różne tematy, które w praktyce wdrożenia łatwo pomylić. Baner CMP nie jest narzędziem analitycznym — zbiera zgodę w rozumieniu RODO i przepisów o komunikacji elektronicznej. Od 10 listopada 2023 obowiązuje Prawo komunikacji elektronicznej: art. 398 PKE zastąpił art. 173 Prawa telekomunikacyjnego i utrzymuje tę samą zasadę — zapisywanie informacji w urządzeniu końcowym (cookies, localStorage, identyfikatory) wymaga uprzedniej zgody, poza przypadkami niezbędnymi do świadczenia usługi. Dla banera oznacza to, że analityka i marketing startują dopiero po decyzji użytkownika, osobno dla każdego celu.

Zgoda musi być uprzednia, konkretna, świadoma i łatwa do wycofania. W praktyce: dwa równorzędne przyciski na pierwszym ekranie — „Akceptuję wszystkie” i „Odrzucam wszystkie” — plus link „Zarządzaj zgodami”. Czego unikać: domyślnie zaznaczonych suwaków przy analityce i marketingu, schowania odmowy na drugim ekranie, formuły „kontynuując przeglądanie, wyrażasz zgodę”. Wycofanie zgody musi być równie proste jak jej udzielenie — stały link w stopce, nie tylko w banerze.

Przekazywanie danych do USA: Google LLC jest certyfikowane w EU-US Data Privacy Framework, co daje podstawę transferu. Nie zwalnia to jednak z obowiązków — potrzebna jest umowa powierzenia (DPA) dostępna w ustawieniach konta Google Ads i GA4 oraz sprawdzenie, czy zakres certyfikacji obejmuje usługi, z których korzystasz. Jeśli dane trafiają do dostawcy spoza DPF, wracasz do standardowych klauzul umownych i własnej oceny ryzyka.

W polityce prywatności i rejestrze czynności przetwarzania opisz: kategorie danych (identyfikatory cookie, adres IP, zdarzenia, identyfikator transakcji), cele (analityka, remarketing, pomiar konwersji), okres retencji oraz odbiorców (Google Ireland Limited, Google LLC, dostawca CMP, firma hostingowa).

Retencja w GA4: w Administracja → Ustawienia danych wybierasz 2 albo 14 miesięcy dla danych zdarzeniowych na poziomie użytkownika i zdarzenia. Standardowe raporty korzystają z danych zagregowanych, ale eksploracje, segmenty i modelowanie zależą od tego okresu. Jeśli w polityce piszesz „14 miesięcy”, a w GA4 masz 2, dokument nie zgadza się ze stanem faktycznym.

Najczęstsze błędy i jak je wykryć

1. Default consent po starcie GTM albo wewnątrz tagu. Sygnał domyślny musi polecieć przed pierwszym tagiem: jako fragment w sekcji <head>, przed snippetem GTM, albo przez szablon Consent Mode w GTM ustawiony na trigger Consent Initialization. Objaw błędu: w DebugView widać zdarzenia z pełnymi parametrami reklamowymi, zanim użytkownik dotknął banera. Test: otwórz stronę w trybie incognito, w GTM Preview wejdź w zakładkę Consent i sprawdź stan domyślny. Potem w DevTools → Network filtruj po „googleads” i „analytics” — żadne żądanie z parametrami reklamowymi nie może polecieć przed decyzją.

2. Brak równorzędnej odmowy albo domyślnie zaznaczone kategorie. Suwaki analityki i marketingu startują jako wyłączone, a przycisk odmowy jest tak samo widoczny jak akceptacja. Test: policz kliknięcia od wejścia do pełnej odmowy (powinno być jedno) i sprawdź, czy po odświeżeniu strony kategorie nadal są wyłączone.

3. Sygnały tylko na części podstron albo tylko dla zalogowanych. Typowe przy agresywnym cache i przy motywach, gdzie skrypt CMP wpięto wyłącznie w header. Test na 5 adresach: strona główna, kategoria, karta produktu, koszyk i strona po złożeniu zamówienia. Na każdej sprawdź w konsoli stan zgody (obiekt gtag lub dataLayer) i porównaj z tym, co pokazuje CMP.

4. Podwójne tagowanie po migracji z Universal Analytics. Dwa kontenery GTM (stary i nowy) albo dwa tagi GA4 na tej samej stronie powodują, że zdarzenie purchase leci dwa razy. Efekt: konwersje w Google Ads zawyżone blisko dwukrotnie, a przychód z jednego zamówienia liczy się podwójnie. Test: Tag Assistant pokaże dwa kontenery, a GA4 → Realtime dwa identyczne zdarzenia w tej samej sekundzie.

5. Zmiana zakresu zgody bez aktualizacji polityki i banera. Doszedł piksel TikToka, Microsoft Clarity albo skrypt czatu, ale w banerze nadal są dwie kategorie, a w polityce nie ma nowego odbiorcy. Test: wypisz wszystkie tagi z kontenera i wtyczek, a potem zestaw je 1:1 z listą odbiorców w polityce prywatności.

BłądNajszybszy sposób wykrycia
Default consent po starcie GTMGTM Preview → zakładka Consent przed kliknięciem w baner; filtr Network po „googleads”
Brak równorzędnej odmowyLiczba kliknięć do pełnej odmowy w trybie incognito; stan checkboxów po odświeżeniu
Sygnały tylko na części podstronTen sam test na 5 adresach: główna, kategoria, produkt, koszyk, podziękowanie
Podwójne tagowanie po migracji z UATag Assistant — liczba kontenerów; GA4 Realtime — duplikaty zdarzeń
Zmiana zakresu zgody bez dokumentacjiZestawienie tagów z GTM i wtyczek z listą odbiorców w polityce prywatności

Ile to zajmuje i ile kosztuje – widełki wdrożenia

Wdrożenie Consent Mode v2 da się rozłożyć na policzalne godziny. Poniższe widełki dotyczą sklepu na jednej domenie, z jednym kontenerem GTM i jednym kontem GA4 — czyli najczęstszego przypadku.

Razem 12–23 godziny. Gdy wystarczy wtyczka z gotową integracją Consent Mode v2, sklep ma jeden kontener i standardowy checkout bez niestandardowych zdarzeń, zamykasz temat w 3–4 godzinach.

Skalę zmieniają: liczba kontenerów i domen (osobny GTM dla sklepu PL i DE niemal podwaja pracę), integracje z ERP i płatnościami (przekazanie identyfikatora zamówienia, wartości i hashowanego e-maila do Enhanced Conversions) oraz niestandardowy checkout. W PrestaShop z mocno zmodyfikowanym szablonem zamówienia zdarzenia często trzeba wysyłać z backendu — wtedy potrzebny jest własny moduł zgodny z dokumentacją dla deweloperów, a nie wtyczka, i zakres rośnie o kolejne 6–10 godzin. Podobnie w WooCommerce, gdy bramka płatności przekierowuje na zewnętrzną stronę i zdarzenie purchase trzeba odtworzyć po powrocie.

Kryteria odbioru: przed decyzją użytkownika żadne żądanie do Google nie zawiera parametrów reklamowych ani identyfikatorów analitycznych; po akceptacji cztery sygnały przyjmują granted, po odmowie denied; zdarzenia e-commerce przechodzą raz, z poprawną wartością i walutą; remarketing i Enhanced Conversions działają tylko dla użytkowników ze zgodą; wycofanie zgody działa z linku w stopce. Na koniec przekazujesz zrzuty konfiguracji i datę wdrożenia.

Najczęstsze błędy i jak je wykryć

CMP wysyła tylko analytics_storage i ad_storage, bez ad_user_data i ad_personalization – typowe dla starszych wersji wtyczek.

Jak wykryć: W Tag Assistant (tryb debug) sprawdź zdarzenie consent default i consent update. Jeśli w obiekcie widzisz tylko dwa klucze, brakuje nowych sygnałów.

Jak naprawić: Zaktualizuj wtyczkę CMP do wersji wspierającej Consent Mode v2 albo skonfiguruj mapowanie sygnałów ręcznie w kodzie banera. Po zmianie zweryfikuj ponownie w Tag Assistant i w raporcie diagnostycznym CMP.

Blok gtag('consent', 'default') ładuje się po kontenerze GTM albo po tagach GA4 i Google Ads.

Jak wykryć: W źródle strony porównaj kolejność skryptów: blok consent default musi być przed snippetem GTM. W Tag Assistant sprawdź, czy zdarzenia tagów nie pojawiają się przed consent default.

Jak naprawić: Przenieś blok consent default do sekcji head, najwyżej jak to możliwe – przed GTM i przed jakimkolwiek tagiem pomiarowym. Wywołanie consent update zostaw w kodzie banera, po kliknięciu użytkownika.

Baner CMP doładowuje się przez lazy load lub po cache, więc startuje po tagach i zgody przyjmują wartość granted.

Jak wykryć: W zakładce Network sprawdź, czy skrypt CMP wczytuje się przed skryptami GA4/Google Ads. W Tag Assistant zobacz, czy consent default ma wartości granted bez decyzji użytkownika.

Jak naprawić: Wyłącz lazy load i odroczenie dla skryptu CMP, wyklucz go z cache (np. serwuj z własnego, niecache'owanego adresu) i upewnij się, że konsent default wykona się jako pierwszy. Po poprawce przetestuj w trybie incognito.

Brak parametru region w consent default – sygnały ustawiane są globalnie, także dla ruchu spoza EEA, gdzie wymogi są inne.

Jak wykryć: W kodzie strony sprawdź, czy w bloku default znajduje się klucz 'region'. Brak klucza oznacza ustawienie globalne.

Jak naprawić: Ustaw region dla obszaru EEA (np. lista krajów lub region jako grupa) i dodaj drugi blok default dla ruchu spoza tego obszaru, jeśli chcesz inaczej traktować te wizyty. Zweryfikuj, czy region pokrywa wszystkie rynki, na które sprzedajesz.

Decyzja użytkownika nie jest zapisywana, więc przy każdej wizycie obowiązuje default, a użytkownik musi klikać baner ponownie.

Jak wykryć: Wejdź na stronę, zaakceptuj zgody, odśwież stronę i sprawdź w Application → Cookies/Local Storage, czy zapis istnieje i czy po odświeżeniu consent default przyjmuje zapisaną wartość.

Jak naprawić: Zapisz decyzję w cookie lub localStorage z rozsądnym czasem życia i odczytaj ją przed ustawieniem consent default. Pamiętaj, że wcześniej wysłane zdarzenia nie są odzyskiwane po zmianie sygnału na granted.

Mylenie ad_storage z ad_user_data – traktowanie ich jako jednego sygnału.

Jak wykryć: Sprawdź, czy zespół lub agencja tłumaczy oba sygnały tak samo. Jeśli w dokumentacji wdrożenia widzisz jedno pole opisane jako 'cookies reklamowe i przesyłanie danych', to błąd.

Jak naprawić: Rozdziel definicje: ad_storage dotyczy zapisu i odczytu plików cookie reklamowych, a ad_user_data dotyczy przekazywania danych użytkownika do Google na potrzeby reklamowe. Oba trzeba ustawiać osobno i osobno testować.

Lista kontrolna do odklikania

Podsumowanie

Consent Mode v2 działa tylko wtedy, gdy cztery sygnały są wysyłane w odpowiedniej kolejności i we właściwym momencie. Najczęstsze problemy to brak ad_user_data i ad_personalization, spóźniony blok consent default oraz baner doładowywany po tagach. Wybór między trybem podstawowym a zaawansowanym ma wymierne konsekwencje w raportach GA4 i Google Ads, więc warto go udokumentować, a nie zostawiać przypadkowi.

Najczęściej zadawane pytania

Czym różni się ad_storage od ad_user_data?

ad_storage decyduje o zapisie i odczycie plików cookie reklamowych w przeglądarce użytkownika. ad_user_data dotyczy przekazywania danych użytkownika do Google w celach reklamowych, na przykład przy Enhanced Conversions czy Customer Match. To dwa osobne sygnały – brak jednego nie jest zastępowany przez drugi.

Co się dzieje, gdy CMP nie wysyła ad_user_data i ad_personalization?

Dla ruchu z EEA Google traktuje brak tych sygnałów jako brak zgody. W praktyce przestają działać funkcje reklamowe oparte na danych użytkownika, a raporty w Google Ads i GA4 pokazują zaniżone wyniki. Samo wysyłanie analytics_storage i ad_storage nie wystarcza.

Czy tryb podstawowy Consent Mode jest wystarczający?

Tryb podstawowy jest świadomym wyborem, gdy nie chcesz wysyłać żadnych pingów przed decyzją użytkownika i akceptujesz uboższe dane. Nie ma w nim modelowania konwersji, więc raporty będą mocno niepełne. Jeśli nie wybrałeś tego trybu świadomie, prawdopodobnie jest to błąd konfiguracji kosztujący dane.

Jak sprawdzić, czy Consent Mode v2 działa poprawnie?

Użyj Tag Assistant w trybie debug i sprawdź kolejność oraz zawartość zdarzeń consent default i consent update. Zweryfikuj, czy wszystkie cztery sygnały są obecne i czy przyjmują właściwe wartości przed startem tagów. Dodatkowo sprawdź w konsoli przeglądarki zapis decyzji użytkownika oraz to, czy skrypt CMP ładuje się przed tagami.

Czy cookieless pingi zawierają dane osobowe?

Nie. Cookieless ping to sygnał bez identyfikatorów urządzenia i bez pełnych danych zdarzenia – służy do modelowania, nie do identyfikacji użytkownika. Nie zawiera też informacji pozwalających powiązać wizytę z konkretną osobą.

Czy po zmianie zgody na granted wcześniejsze zdarzenia wrócą do raportów?

Nie. Wywołanie consent update działa od momentu zmiany w przód. Zdarzenia wysłane wcześniej nie są odzyskiwane, dlatego kolejność kodu i czas reakcji banera mają realne znaczenie dla danych.

Czy trzeba zmieniać politykę prywatności?

Tak, jeśli zmienia się zakres danych przekazywanych do Google. Opis w polityce powinien odpowiadać faktycznie wysyłanym sygnałom i celom, na które zgadza się użytkownik. Warto też wskazać, jak długo przechowywany jest dowód zgody.

Jeśli chcesz sprawdzić, jak obecnie wygląda wdrożenie Consent Mode na Twoim sklepie, napisz do nas – przejrzymy kod i konfigurację CMP oraz wskażemy, co realnie ucina dane w GA4 i Google Ads.

Źródła i materiały