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.
_ga, _ga_<ID kontenera>) oraz rozpoznanie powracającego użytkownika. Nie dotyczy reklam: tagi Google Ads mogą działać dalej._gcl_au, _gcl_aw, cookie linkujące konwersje). Odpowiada na pytanie: czy wolno cokolwiek zapisać po stronie przeglądarki.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 blokuje | Co konkretnie przestaje działać |
|---|---|---|
| analytics_storage | Cookies analityczne i identyfikatory sesji | Rozpoznanie powracających użytkowników, ścieżki wielosesyjne, część raportów GA4 opartych na sesjach |
| ad_storage | Cookies reklamowe i identyfikatory kliknięć | Remarketing Google Ads, listy odbiorców, konwersje z ostatniego kliknięcia, linkowanie konwersji |
| ad_user_data | Przekazywanie danych użytkownika do Google | Enhanced Conversions, Customer Match, importy konwersji offline i rozszerzonych |
| ad_personalization | Wykorzystanie danych do personalizacji reklam | Remarketing (w tym dynamiczny), budowa i odświeżanie list odbiorców, reklamy personalizowane |
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.
| Element | Tryb podstawowy (Basic) | Tryb zaawansowany (Advanced) |
|---|---|---|
| Ruch bez zgody | Brak jakiegokolwiek żądania do Google | Cookieless ping bez identyfikatorów |
| Modelowanie konwersji i behawioralne | Praktycznie brak podstawy do modelowania | Działa na danych z pingów |
| Cookies i rozpoznanie użytkownika | Nie zapisuje i nie odczytuje | Nie zapisuje i nie odczytuje (identycznie) |
| Typowe zastosowanie | Ruch głównie poza EEA, twarde wymagania prawne | Standard dla sklepów i leadgenu z ruchem z EEA |
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ń:
gtag(). Funkcja musi istnieć wcześniej – standardowy stub window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);}.default z czterema sygnałami. Dla ruchu z EEA ustaw denied, chyba że masz podstawę prawną, by zrobić inaczej.region. Wartość ['EEA'] sprawia, że blok default dotyczy tylko użytkowników z Europejskiego Obszaru Gospodarczego. Możesz też podać kody krajów (np. ['PL','DE']). Jeśli chcesz różne ustawienia dla EEA i reszty świata, wywołaj default dwa razy – Google stosuje najbardziej szczegółowy pasujący blok.wait_for_update: 500. To czas w milisekundach, przez który tagi czekają na decyzję przekazaną przez CMP. 500 ms to bezpieczna wartość – baner ma szansę odczytać zapis i odpowiedzieć, a strona nie stoi.localStorage. Odczyt musi nastąpić przed wywołaniem default, a jego wynik ustawia wartości na granted lub denied. Bez tego powracający użytkownik po każdej wizycie będzie traktowany jak nowy.gtag('consent', 'update', ...). Wcześniej wysłane zdarzenia nie są „odzyskiwane” – pingi już poszły bez identyfikatorów i nie zostaną dopisane do sesji. Zgoda działa tylko w przód.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 na sklepie MŚP musi robić cztery rzeczy naraz. Brakuje jednej i Consent Mode v2 nie działa, choć baner wyświetla się poprawnie.
denied, tagi GA4 i Ads odpalają się dopiero po sygnale granted.analytics_storage, ad_storage, ad_user_data, ad_personalization.Wybór między SaaS a wtyczką to w praktyce wybór tego, kto pilnuje zmian w kodzie, gdy Google coś zmieni.
| Podejście | Koszt (sklep MŚP) | Czas wdrożenia | Kto aktualizuje po zmianach |
|---|---|---|---|
| SaaS (Cookiebot, Usercentrics) | abonament miesięczny zależny od liczby domen i odsłon | 1–3 h | dostawca, Ty tylko wgrywasz skrypt |
| Wtyczka w sklepie | licencja jednorazowa lub roczna | 2–6 h plus testy | Ty, 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ście | Koszt (sklep MŚP) | Czas wdrożenia | Kto aktualizuje po zmianach |
|---|---|---|---|
| SaaS (Cookiebot, Usercentrics) | abonament miesięczny zależny od liczby domen i odsłon | 1–3 h | dostawca, Ty tylko wgrywasz skrypt |
| Wtyczka w sklepie | licencja jednorazowa lub roczna | 2–6 h plus testy | Ty, po każdej aktualizacji rdzenia i wtyczek |
Ten zestaw testów nie wymaga czekania na dane z kilku dni. Kolejność jest istotna, bo każdy krok sprawdza co innego.
denied. Widzisz granted – CMP ładuje się za późno.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.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ł.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.
Zacznijmy od progów, bo to one decydują, czy zobaczysz w ogóle jakiekolwiek dane modelowane.
analytics_storage = denied i 1 000 zdarzeń dziennie z analytics_storage = granted, w co najmniej 7 z ostatnich 28 dni, liczone osobno dla właściwości.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.
| Element | Modelowanie konwersji (Google Ads) | Modelowanie behawioralne (GA4) |
|---|---|---|
| Gdzie działa | w raportach konwersji kampanii | w raportach GA4 i eksploracjach |
| Po co | doliczenie konwersji przypisywanych reklamom | uzupełnienie braków w zachowaniu użytkowników |
| Czego wymaga | wolumenu konwersji i interakcji w kraju | wolumenu 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.
| Element | Modelowanie konwersji (Google Ads) | Modelowanie behawioralne (GA4) |
|---|---|---|
| Gdzie działa | w raportach konwersji kampanii | w raportach GA4 i eksploracjach |
| Po co | doliczenie konwersji przypisywanych reklamom | uzupełnienie braków w zachowaniu użytkowników |
| Czego wymaga | wolumenu konwersji i interakcji w kraju | wolumenu zdarzeń w obu stanach zgody |
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.
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łąd | Najszybszy sposób wykrycia |
|---|---|
| Default consent po starcie GTM | GTM Preview → zakładka Consent przed kliknięciem w baner; filtr Network po „googleads” |
| Brak równorzędnej odmowy | Liczba kliknięć do pełnej odmowy w trybie incognito; stan checkboxów po odświeżeniu |
| Sygnały tylko na części podstron | Ten sam test na 5 adresach: główna, kategoria, produkt, koszyk, podziękowanie |
| Podwójne tagowanie po migracji z UA | Tag Assistant — liczba kontenerów; GA4 Realtime — duplikaty zdarzeń |
| Zmiana zakresu zgody bez dokumentacji | Zestawienie tagów z GTM i wtyczek z listą odbiorców w polityce prywatności |
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.
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ć.
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.
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.
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.
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.
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.
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ą.
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.
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.