Modelowane listy odbiorców nie zawierają konkretnych osób, tylko prawdopodobieństwa. Wyjaśniam, jak powstają, gdzie ich szukać w panelu i jak czytać ich raporty.
Termin 6 marca 2024 jest już blisko, a wdrożenia, które oglądam na kontach klientów, dzielą się na dwie grupy. W pierwszej ktoś zaznaczył w banerze opcję z nazwą sugerującą nową wersję i uznał sprawę za zamkniętą. W drugiej nikt nic nie ruszał, bo temat wygląda na techniczny i został odłożony do „kiedyś w lutym”.
Problem polega na tym, że to nie jest przełącznik. Poprawne wdrożenie wymaga, żeby trzy elementy rozmawiały ze sobą w konkretnej kolejności: baner zgody, kontener Tag Managera i same tagi Google. Jeśli którykolwiek z nich nie wie o pozostałych, w Google Ads i tak zobaczysz komunikat o braku zgód, choć na stronie baner wyświetla się bez zarzutu.
Poniżej opisuję kolejność, w której to wdrażam, i miejsca, w których najczęściej się to sypie. Zakładam wariant z Tag Managerem, bo tak wygląda większość sklepów i stron firmowych, z którymi pracuję.
Mechanizm trybu uzyskiwania zgody, który Google od listopada 2023 nazywa Consent Mode v2, sam w sobie nie jest nowy — istnieje od kilku lat i polega na tym, że tagi Google dostają informację o decyzji użytkownika i dostosowują do niej swoje zachowanie. Nowością są dwa dodatkowe sygnały: ad_user_data (czy wolno wysyłać dane osobowe do Google w celach reklamowych) oraz ad_personalization (czy wolno wykorzystywać je do personalizacji i remarketingu).
Do tej pory wystarczały cztery stany, z których w praktyce liczyły się dwa: ad_storage i analytics_storage. Teraz kompletny zestaw ma sześć pozycji i brak tych dwóch nowych oznacza, że wdrożenie jest niepełne — nawet jeśli technicznie działa.
Powód jest regulacyjny, nie produktowy. Google jako podmiot objęty aktem o rynkach cyfrowych musi mieć udokumentowaną podstawę do przetwarzania danych użytkowników z Europejskiego Obszaru Gospodarczego i Wielkiej Brytanii. Od 6 marca 2024 konta, które nie przekazują nowych sygnałów, przestaną zasilać listy odbiorców danymi z tego regionu i stracą dostęp do modelowania konwersji.
Kolejność jest więc prosta: to nie zadanie „do zrobienia przy okazji”, tylko rzecz, którą kończymy w lutym, żeby mieć tydzień lub dwa na sprawdzenie efektu w raportach.
Pierwsza decyzja dotyczy platformy zarządzania zgodami. Sprawdzam trzy rzeczy przed wyborem.
Po stronie konfiguracji samego banera pilnuję jednej rzeczy: kategorie zgód w narzędziu muszą być poprawnie zmapowane na sygnały Google. Zgoda marketingowa powinna odpowiadać za ad_storage, ad_user_data i ad_personalization, zgoda statystyczna za analytics_storage. Domyślne mapowanie u części dostawców pomija nowe pozycje i to jest pierwszy punkt, który weryfikuję po aktualizacji skryptu.
Tu wdrożenia sypią się najczęściej, bo problem jest niewidoczny — wszystko wygląda dobrze, a sygnał leci za późno.
W Tag Managerze istnieje osobny typ reguły: Inicjacja zgody — wszystkie strony. Ta reguła uruchamia się przed regułą „Wszystkie strony” i to jest jedyne miejsce, w którym wolno ustawiać stany domyślne. Jeśli tag ustawiający domyślną odmowę odpali się na zwykłym widoku strony, część tagów Google zdąży już wystartować bez informacji o zgodzie.
Stan domyślny dla ruchu z Europy ustawiam na odmowę wszystkich sygnałów poza bezpieczeństwem. Do tego dwa parametry, o których łatwo zapomnieć: wait_for_update daje banerowi kilkaset milisekund na przekazanie zapisanej wcześniej decyzji, a ads_data_redaction usuwa identyfikatory z żądań reklamowych przy braku zgody. Przydaje się też przekazywanie identyfikatora kliknięcia w adresie URL, jeśli konwersje mają być mierzone bez ciasteczek.
Większość dostawców banerów udostępnia gotowy szablon w galerii Tag Managera, który robi to za nas. Nie zwalnia to z obowiązku sprawdzenia, czy szablon jest przypisany do właściwej reguły i czy w jego ustawieniach zaznaczone są wszystkie sześć sygnałów.
Drugi element to wywołanie aktualizujące stan po kliknięciu w banerze. Robi to skrypt platformy zgód, a moim zadaniem jest sprawdzić, czy faktycznie robi to poprawnie.
Interesują mnie dwie sytuacje. Kiedy użytkownik akceptuje wszystko, stany powinny zmienić się na zgodę i tagi wstrzymane wcześniej muszą wystartować — same, bez odświeżania strony. Kiedy użytkownik odrzuca, stany zostają na odmowie, a tagi Google wysyłają wyłącznie żądania pozbawione identyfikatorów.
Trzecia, rzadziej sprawdzana: użytkownik, który zdecydował wcześniej i wraca na stronę. Wtedy baner nie powinien się pokazać, a zapisana decyzja musi zostać odtworzona przed pierwszym tagiem. Właśnie na tym etapie widzę najwięcej wdrożeń, w których zgoda działa tylko dla pierwszej sesji.
Jeśli baner zamiast standardowego wywołania publikuje własne zdarzenie do warstwy danych, trzeba dodatkowo upewnić się, że nazwa zdarzenia zgadza się z tym, na co nasłuchuje reguła w kontenerze. Literówka w nazwie zdarzenia to najtańszy w naprawie i najtrudniejszy do zauważenia błąd w całym wdrożeniu.
Tagi Google — Google Ads, GA4, tag Google — mają wbudowane sprawdzanie zgody i respektują stany bez dodatkowej konfiguracji. Dlatego nie blokuję ich regułami wyjątków, bo wtedy tracę sens całego mechanizmu: przy odmowie nie polecą nawet żądania bez identyfikatorów, a bez nich nie ma modelowania.
Inaczej jest z tagami, które nie należą do Google. Piksel serwisu społecznościowego, narzędzie do nagrywania sesji, skrypt afiliacyjny — dla nich w Tag Managerze w zakładce ustawień zgody trzeba jawnie wskazać, że tag wymaga dodatkowej zgody. Dopóki tego nie zrobisz, kontener uruchomi je niezależnie od decyzji użytkownika.
Warto też przejrzeć stronę pod kątem tagów wpisanych na sztywno w szablon albo dodanych przez wtyczkę. Kod Google Ads zaszyty bezpośrednio w motywie sklepu nie wie nic o kontenerze i wywołaniach zgody, więc będzie omijał cały mechanizm. Takie znaleziska przenoszę do kontenera albo usuwam.
Nie kończę wdrożenia na publikacji kontenera. Weryfikacja zajmuje kwadrans i zamyka temat na dobre.
Zaczynam od trybu podglądu w Tag Managerze, gdzie widać stan wszystkich sygnałów w każdym kroku — przed decyzją, po akceptacji i po odrzuceniu. Potem podglądam żądania w narzędziach programisty przeglądarki: w wywołaniach do Google jest parametr opisujący stan zgody i po jego wartości od razu widać, czy zmiana została przekazana.
Trzeci krok to test w trybie prywatnym, w którym symuluję trzy scenariusze: akceptację, odrzucenie i brak jakiejkolwiek reakcji. Odrzucenie sprawdzam zawsze, bo to ścieżka, której nikt nie testuje, a właśnie w niej wychodzą błędy mapowania kategorii.
Na koniec zaglądam do diagnostyki tagu w Google Ads i do ustawień strumienia danych w Analytics — informacja o odbieranych zgodach pojawia się tam z opóźnieniem, ale to jedyne potwierdzenie, że sygnał dociera po stronie Google, a nie tylko wychodzi z przeglądarki.
Zbiorczo, w kolejności od najkosztowniejszych.
Jeśli miałbym wskazać jedną rzecz do zrobienia jutro, to nie byłaby to zmiana w kontenerze, a rozmowa z osobą odpowiedzialną za baner: która wersja skryptu jest wgrana i czy dostawca opublikował już aktualizację. Bez tego reszta pracy nie ma na czym stanąć.
Używamy plików cookies, aby ułatwić Ci nawigację oraz wykonywanie określonych funkcji. Szczegółowe informacje o wszystkich plikach cookies znajdziesz w każdej kategorii zgody poniżej.
Pliki cookies oznaczone jako "Niezbędne" są przechowywane w Twojej przeglądarce, ponieważ są one kluczowe dla zapewnienia podstawowych funkcji strony.
Używamy również plików cookies firm trzecich, które pomagają nam analizować, w jaki sposób korzystasz z tej strony, zapamiętują Twoje preferencje oraz dostarczają treści i reklamy odpowiednie dla Ciebie. Te pliki cookies będą przechowywane w Twojej przeglądarce tylko za Twoją uprzednią zgodą.
Możesz zdecydować, czy chcesz włączyć lub wyłączyć niektóre bądź wszystkie te pliki cookies, jednak wyłączenie niektórych z nich może wpłynąć na Twoje doświadczenia podczas przeglądania strony.
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __cf_bm | 13 minutes | Cloudflare bot management — distinguishes humans from bots. |
| rc::* | Persistent | Google reCAPTCHA — localStorage holding anti-bot challenge state. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| wpEmojiSettingsSupports | Session | WordPress — sessionStorage flag caching whether the browser can render emoji (feature detection). |
| ytidb* | Persistent | YouTube — IndexedDB storing playback/search state for embedded videos. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| _ga_* | 400 days | Google Analytics 4 — persists session state per property. |
| _ga | 400 days | Google Analytics — distinguishes unique users via a client id. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| NID | 183 days | Google — stores preferences for personalized ads. |
| fr | 90 days | Meta — encrypted Facebook id and browser id for ads. |
| _gcl_au | 90 days | Google AdSense/Ads — experiments with advertising efficiency (conversion linker). |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __Secure-YNID | 180 days | |
| YSC | Session | |
| __Secure-ROLLOUT_TOKEN | 180 days | |
| VISITOR_INFO1_LIVE | 180 days | |
| VISITOR_PRIVACY_METADATA | 180 days | |
| datr | 400 days | |
| sb | 400 days | |
| wd | 7 days |