Klient dzwoni, że w GA4 widzi mniej zakupów niż zamówień w sklepie, a w Google Ads konwersje przestały się zliczać. Potem wpisuje w Google „consent mode v2 wdrożenie” i trafia na dziesięć poradników, z których każdy zaczyna się od innej wtyczki, a żaden nie mówi, jak sprawdzić, czy to w ogóle zadziałało. Dlatego ten wpis prowadzę inaczej: od tego, co się psuje bez zgód, przez samo wdrożenie, do testu, który odpowiada „działa” albo „nie działa”.
Consent Mode to mechanizm, w którym Twoja strona mówi skryptom Google, na co klient się zgodził, zanim te skrypty zaczną cokolwiek zapisywać. Wersja druga dołożyła do tego dwa nowe sygnały dotyczące danych reklamowych. Bez nich część funkcji reklamowych Google dla ruchu z Europejskiego Obszaru Gospodarczego przestaje działać tak, jak oczekujesz - i to jest zwykle moment, w którym ktoś do mnie dzwoni.
Od razu jedna rzecz na początek: piszę to z perspektywy praktyka, który wdraża i testuje pomiar, a nie prawnika. Sam obowiązek pytania o zgodę na ciasteczka bierze się z przepisów o ochronie danych osobowych i o komunikacji elektronicznej, nie z wymogu Google. Jak dokładnie sformułować treść zgody i politykę prywatności, potwierdź u prawnika - ja odpowiadam za to, żeby po stronie kodu zgoda była naprawdę respektowana.
Co to jest Consent Mode v2 i co się dzieje bez niego
Technicznie Consent Mode to zestaw ustawień przekazywanych tagom Google przed ich uruchomieniem. Wersja pierwsza znała dwa stany: ad_storage (ciasteczka reklamowe) i analytics_storage (ciasteczka analityczne). Wersja druga dołożyła ad_user_data (czy wolno przesyłać dane użytkownika do celów reklamowych) i ad_personalization (czy wolno personalizować reklamy, czyli remarketing). Cztery przełączniki, każdy w stanie „granted” albo „denied”.
Co się dzieje, gdy tego nie ma? Scenariusz pierwszy, częstszy u klientów: baner zgód stoi, wygląda ładnie, ale nie jest połączony ze skryptami Google. Ciasteczka lecą niezależnie od tego, co klient kliknie, bo baner tylko chowa okienko. Pomiar jest pełny, ale zgoda jest fikcją - i to realne ryzyko, nie teoria.
Scenariusz drugi: baner blokuje skrypty, ale Google nie dostaje żadnej informacji o stanie zgody. Po odwiedzających, którzy zgody nie dali, nie zostaje wtedy żaden ślad - ani ciasteczko, ani bezciasteczkowy sygnał. Dla Google ta część ruchu nie istnieje, więc kampanie optymalizują się na uciętych danych. W obu scenariuszach decyzje o budżecie podejmujesz na podstawie liczb, które nie opisują rzeczywistości - ten sam problem, który rozkładam na części w porównaniu SEO i Google Ads pod kątem opłacalności.
Ile kosztuje wdrożenie - widełki rynkowe
Koszt rozkłada się na trzy części i warto je rozdzielić, bo każda zachowuje się inaczej.
- Baner zgód (CMP). Wtyczki do WordPressa mają zwykle darmowy plan dla małego ruchu i płatny abonament wyżej - od kilkudziesięciu do kilkuset złotych rocznie, zależnie od liczby odsłon i tego, czy potrzebujesz wersji wielojęzycznej. Google prowadzi listę certyfikowanych platform zgód i przy części swoich produktów reklamowych oczekuje właśnie takiej, więc przed zakupem sprawdź, czy wybrana wtyczka na tej liście jest.
- Konfiguracja i połączenie z tagami. To jest praca, nie licencja: ustawienie domyślnych stanów, podłączenie banera do GTM albo do gtag, sprawdzenie kolejności ładowania. Na rynku samo wdrożenie na typowej stronie czy sklepie to zwykle kilkaset złotych do około 2500 zł netto, zależnie od zakresu - podkreślam, to orientacyjne realia rynku, nie cennik.
- Test i porównanie z realnymi zamówieniami. Najczęściej pomijany, a bez niego nie wiesz, czy pierwsze dwie pozycje coś dały.
W górę widełek podbija wycenę wiele źródeł tagów naraz, motyw ze skryptami wklejonymi na sztywno w header.php, wielojęzyczność i agresywny cache. W dół - czysty WordPress i jeden kontener GTM.
Co pomaga: zanim zapłacisz za cokolwiek, sprawdź w narzędziach deweloperskich przeglądarki, ile ciasteczek strona zapisuje przed kliknięciem czegokolwiek w banerze. Jeśli zapisuje analityczne i reklamowe, masz odpowiedź, od czego zacząć - i argument, żeby nie kupować najdroższego planu „na wszelki wypadek”.
Jak wdrożyć na WordPressie i WooCommerce
Kolejność ma tu znaczenie większe niż wybór wtyczki. Consent Mode musi ustawić stan domyślny przed uruchomieniem jakiegokolwiek tagu Google - jeśli zrobi to sekundę później, pierwsze żądanie i tak poleci bez informacji o zgodzie.
W praktyce robię to tak:
- Wybieram jedną wtyczkę zgód i wyłączam resztę. Dwa banery naraz to najczęstsza przyczyna tego, że „wdrożenie nie działa”. Zdarza się, że jeden baner siedzi we wtyczce, a drugi w motywie od poprzedniego wykonawcy.
- Włączam w niej tryb Consent Mode v2 i sprawdzam, czy obsługuje wszystkie cztery sygnały, a nie tylko dwa ze starszej wersji. Dobre wtyczki piszą to wprost w ustawieniach.
- Ustawiam stan domyślny na „denied” dla ruchu z Europejskiego Obszaru Gospodarczego i dopiero po kliknięciu zgody podnoszę go do „granted”.
- Łączę to z tagami. Jeśli strona ma Google Tag Manager, stan zgody wstrzykuję raz, w GTM, i tam w każdym tagu ustawiam wymagane zgody - Consent Mode v2 w GTM jest wygodniejszy, bo nie dotykasz kodu motywu przy każdej zmianie. Jeśli pomiar idzie przez samo gtag, wtyczka musi wywołać
gtag('consent', 'default', ...)przed załadowaniem GA4. - W WooCommerce sprawdzam zdarzenia zakupu. Zdarzenie
purchaseodpala się na stronie podziękowania, a ta strona nie może być cache’owana i nie może gubić skryptu zgody. Tu powtarza się dokładnie ta sama pułapka cache, którą opisuję przy technicznych przyczynach porzucania koszyków. - Czyszczę cache i testuję w oknie prywatnym, bo własna przeglądarka pamięta Twoją wcześniejszą zgodę i pokazuje stan, którego nowy klient nie zobaczy.
Jeśli motyw ma skrypty wklejone na sztywno w nagłówku, samo ustawienie wtyczki nie wystarczy - trzeba je przenieść pod kontrolę zgody. To moment, w którym zwykle wchodzę ja: przebudowuję i naprawiam istniejące strony oraz sklepy, więc takie skrypty porządkuję przy okazji całego pomiaru, zamiast obkładać je kolejną wtyczką.
Tryb basic czy advanced - co wybrać
To jedyna decyzja w całym wdrożeniu, która wymaga świadomego wyboru, a nie odhaczenia.
Basic oznacza, że tagi Google w ogóle się nie uruchamiają, dopóki klient nie kliknie zgody. Nic nie leci, żadnego żądania. Jest prościej i jest to najbardziej zachowawcze podejście, ale o odwiedzających bez zgody nie dowiesz się niczego.
Advanced ładuje tagi od razu, z wszystkimi zgodami ustawionymi na „denied”. Tag wysyła wtedy bezciasteczkowy sygnał - bez identyfikatora, bez zapisu na urządzeniu - a Google na tej podstawie modeluje brakujące konwersje. Dostajesz więcej danych w raportach, ale ruch do Google leci jeszcze przed kliknięciem zgody, co trzeba opisać w polityce prywatności i, moim zdaniem, potwierdzić u prawnika.
Co wybieram u klientów: advanced przy sklepach, które realnie wydają pieniądze na Google Ads, bo tam modelowanie wyraźnie pomaga optymalizacji kampanii. Basic przy stronach wizytówkowych i wszędzie, gdzie klient chce maksymalnej ostrożności i nie prowadzi płatnych kampanii. Zmiana trybu później to kwestia jednego ustawienia, więc to nie jest decyzja na zawsze.
Jak sprawdzić, czy Consent Mode v2 działa
Tu kończą się poradniki, a zaczyna robota. Nie wierzę komunikatowi wtyczki „Consent Mode aktywny” - sprawdzam ruch sieciowy. Wiele osób szuka w tym miejscu gotowego narzędzia typu „consent mode v2 checker”, ale wszystko, czego potrzebujesz, masz w przeglądarce.
- Otwórz stronę w oknie prywatnym i w narzędziach deweloperskich przejdź do zakładki sieci. Odfiltruj żądania do Google.
- Przed kliknięciem czegokolwiek w banerze popatrz na parametr
gcsw żądaniu.G100oznacza oba stany odrzucone,G111oba udzielone. Brak parametrugcsto zły znak: Consent Mode się nie wczytał albo wczytał się za późno. - Sprawdź obok parametr
gcd- tego kroku brakuje w większości poradników.gcskoduje tylko dwa starsze stany, czyli wersję pierwszą; nowe sygnały z wersji drugiej (ad_user_dataiad_personalization) jadą wgcd. Jestgcs, nie magcd- strona wysyła nadal sam Consent Mode v1, a wtyczka pokazuje zielony komunikat. Wszystkie cztery stany po ludzku opisuje też Tag Assistant w zakładce zgód. - Kliknij zgodę i odśwież. Kod
gcspowinien zmienić się naG111, a dopiero teraz w zakładce aplikacji powinny pojawić się ciasteczka analityczne i reklamowe. - Kliknij odmowę w nowym oknie prywatnym i sprawdź, że ciasteczek nie ma. To test, który wyłapuje baner-atrapę: jeśli ciasteczka są mimo odmowy, zgoda nie jest respektowana.
- Zajrzyj do DebugView w GA4 - zdarzenia powinny mieć widoczny stan zgody, a w panelu Google Ads diagnostyka konwersji nie powinna zgłaszać braku sygnałów zgody.
Jedno zdanie ostrzeżenia, żeby nie było rozczarowania: po poprawnym wdrożeniu GA4 pokaże mniej zakupów niż WooCommerce, a nie tyle samo. Każda odmowa zgody to realnie ucięty pomiar i żadne wdrożenie tego nie odwróci.
Co robię inaczej - porównanie z zamówieniami po wdrożeniu
Standardowe wdrożenie kończy się na tym, że wtyczka pokazuje zielony komunikat. Ja kończę na liczbach z dwóch źródeł.
Po wdrożeniu biorę liczbę zamówień z panelu WooCommerce za ten sam okres i liczbę zdarzeń purchase z GA4. Różnica między nimi to nie błąd, tylko mapa: pokazuje, jaka część klientów odmawia zgody i ile pomiaru realnie tracisz. Dopiero z taką liczbą można rozmawiać o tym, czy włączyć tryb advanced, czy przeprojektować sam baner - bo baner, który odstrasza, jest problemem konwersyjnym, nie tylko pomiarowym. Przy okazji wychodzą rzeczy zupełnie niezwiązane ze zgodami, zbierane u mnie w jednym miejscu: typowe przyczyny niskiej konwersji strony.
Drugi test, który robię zawsze: przechodzę całą ścieżkę zakupu w oknie prywatnym z odmową zgody i sprawdzam, czy sklep w ogóle działa. Widziałem konfigurację, w której odmowa blokowała skrypt koszyka, bo ktoś wrzucił go do tej samej grupy co analitykę. Sklep nie mierzył i nie sprzedawał, a nikt tego nie zauważył, bo właściciel klikał „zgadzam się” odruchowo.
Podsumowanie
Consent Mode v2 to przekazanie czterech stanów zgody tagom Google, zanim te cokolwiek zapiszą. Na WordPressie i WooCommerce wdrożenie sprowadza się do jednego banera, ustawienia stanu domyślnego na „denied”, podłączenia go do GTM albo gtag przed tagami Google i pilnowania, żeby strona podziękowania nie wpadła w cache. Potem wybierasz basic albo advanced, a na końcu sprawdzasz w przeglądarce parametry gcs i gcd oraz porównujesz GA4 z zamówieniami w sklepie.
Najgorszy wynik to baner, który wygląda poprawnie, a nie robi nic: ryzyko po stronie zgód i dziura w pomiarze naraz. Pięć minut w narzędziach deweloperskich rozstrzyga to raz na zawsze.
Najczęstsze pytania
Czy Consent Mode v2 jest obowiązkowy? Obowiązek pytania o zgodę na ciasteczka wynika z przepisów, nie z regulaminu Google. Consent Mode jest technicznym sposobem przekazania tej zgody narzędziom Google i warunkiem działania części ich funkcji reklamowych dla ruchu z Europejskiego Obszaru Gospodarczego. Czyli: zgody musisz zbierać tak czy inaczej, a Consent Mode decyduje o tym, czy Twój pomiar i kampanie coś z tego mają. Zakres obowiązków prawnych potwierdź u prawnika.
Czy wystarczy wtyczka z banerem zgód? Sama wtyczka wystarcza tylko wtedy, gdy obsługuje Consent Mode v2 i naprawdę kontroluje wszystkie skrypty na stronie. Jeśli motyw albo stara wtyczka wklejają kod Google na sztywno w nagłówku, baner ich nie zablokuje i wdrożenie będzie pozorne. Dlatego po instalacji zawsze sprawdzam ciasteczka w przeglądarce, a nie komunikat w panelu.
Dlaczego po wdrożeniu mam mniej konwersji w GA4? Bo tak to działa i jest to oczekiwane. Odwiedzający, którzy odmówili zgody, nie zostawiają pełnego śladu, więc raporty są niższe od liczby zamówień w WooCommerce. Tryb advanced część tej luki uzupełnia modelowaniem, ale nigdy nie wraca do stanu z czasów, gdy ciasteczka leciały wszystkim bez pytania.
Wdrażać przez Google Tag Manager czy przez gtag? Jeśli GTM już na stronie jest, zostaję przy nim: wymagane zgody ustawia się tam per tag, bez ruszania kodu motywu. Jeśli strona ma tylko wklejony fragment gtag, zostaję przy nim, byle wtyczka ustawiała stan domyślny przed załadowaniem GA4. Najgorszy wariant to oba naraz.
Masz to u siebie i nie wiesz, od czego zacząć? Przyspieszam i naprawiam istniejące strony i sklepy - Core Web Vitals, awarie, rozbudowa o funkcje, których brakuje. Porozmawiajmy o projekcie.