Consent Mode v2 + Cookiebot + sGTM - pełna konfiguracja
Consent Mode v2 to dziś wymóg dla kampanii Google w EOG. Pełna konfiguracja z Cookiebot i server-side GTM - cztery sygnały zgody, default state, integracja z Meta.
Od marca 2024 Google wymaga Consent Mode v2 dla wszystkich kampanii reklamowych kierowanych do EOG, Wielkiej Brytanii i Szwajcarii. Bez poprawnej konfiguracji kampanie tracą zdolność modelowania konwersji, Smart Bidding traci sygnały, a Enhanced Conversions przestają działać dla użytkowników bez zgody. W praktyce sklep z błędnym Consent Mode dostaje 20-40% mniej danych dla algorytmów Google.
Najczęstsza sytuacja w polskich sklepach: jest baner Cookiebot, jest GTM, jest Pixel - ale Consent Mode v2 nigdy nie został świadomie skonfigurowany. Google dostaje sygnały consent w starym formacie v1 (tylko ad_storage i analytics_storage), a nowe wymagane sygnały (ad_user_data, ad_personalization) są ignorowane. Efekt: brak modelowania konwersji, kampanie europejskie podlegają restrykcjom. To jeden z 15 punktów audytu konwersji Google Ads.
Ten artykuł pokazuje pełną konfigurację Consent Mode v2 dla sklepu Shoper z Cookiebot (najpopularniejszy CMP w Polsce) i server-side GTM. Zasada działa też dla OneTrust, Termly, Klaro i innych - tylko nazwy zmiennych w GTM się różnią.
Cztery sygnały Consent Mode v2
Consent Mode v2 wprowadziło dwa nowe sygnały ponad to, co było w v1:
| Sygnał | Co kontroluje | Wymagany dla |
|---|---|---|
ad_storage | Cookies marketingowe Google (np. _gcl_au, _gcl_aw) | Google Ads remarketing, Conversion Tracking |
analytics_storage | Cookies Google Analytics (np. _ga, _gid) | GA4, GA Universal |
ad_user_data | Wysyłanie danych użytkownika (email, telefon) do Google | Enhanced Conversions, audience matching |
ad_personalization | Personalizacja reklam (lookalike audiences, targeting behawioralny) | Audience Targeting, Customer Match |
Wszystkie cztery muszą być przekazane do gtag('consent', ...) zarówno w default state (przed kliknięciem banera) jak i update state (po decyzji użytkownika).
Brak ad_user_data lub ad_personalization w sygnałach = Google traktuje konfigurację jako v1 = kampanie EOG dostają restrykcje.
Default state - krytyczny moment
Default state to stan zanim użytkownik kliknie cokolwiek na banerze. Google musi dostać gtag('consent', 'default', ...) przed jakimkolwiek innym wywołaniem gtag. Inaczej Pixel albo GA4 odpalą się w stanie “brak consent” i nie da się tego cofnąć.
Standardowy default state dla sklepu kierującego na EOG:
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'functionality_storage': 'granted',
'security_storage': 'granted',
'wait_for_update': 500
});
Kluczowe elementy:
denieddla wszystkich marketingowych sygnałów - przed kliknięciem banera nic nie jest dozwolonefunctionality_storageisecurity_storage=granted- dotyczą koszyka, logowania, podstaw sklepu (nie wymagają zgody RODO)wait_for_update: 500- Google czeka 500ms na update state, dając czas użytkownikowi na kliknięcie banera
Bez wait_for_update Google natychmiast traktuje “denied” jako finalne i wysyła “consent denied” pingi - co skutkuje brakiem modelowania konwersji dla tej sesji.
Krok 1: Konfiguracja Cookiebot
Cookiebot ma wbudowane wsparcie dla Consent Mode v2, ale trzeba go aktywować i zmapować sygnały.
W panelu Cookiebot:
- Configuration → Google Consent Mode → włącz
- Configuration → Categories - upewnij się że masz cztery kategorie:
- Preferences (functionality_storage)
- Statistics (analytics_storage)
- Marketing (ad_storage + ad_user_data + ad_personalization)
- Configuration → Banner - ustaw “Show banner before scripts load”
- Configuration → Integration → Google Tag Manager - skopiuj kod inicjujący Cookiebot do GTM
Kod inicjujący Cookiebot powinien być pierwszą rzeczą w <head> strony - przed GTM, przed jakimkolwiek skryptem reklamowym. W Shoperze klasycznym to edycja szablonu, w Storefront - integracja przez Visual Editor lub moduł własny Premium.
Krok 2: Default Consent State w GTM (przed Cookiebot)
W kontenerze web GTM utwórz Custom HTML tag, który strzela na Consent Initialization - All Pages (specjalny trigger, który zawsze odpala się PRZED innymi tagami):
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'functionality_storage': 'granted',
'security_storage': 'granted',
'wait_for_update': 500
});
</script>
Kolejność uruchamiania w przeglądarce:
- Tag Consent Default (ten kod) - default denied
- Cookiebot ładuje się i pokazuje baner
- Użytkownik klika → Cookiebot przekazuje update do GTM
- GTM odpala tagi marketingowe (Pixel, Google Ads, GA4) z aktualnym consent state
Jeśli pominiesz krok 1, Google dostaje pierwsze pingi w nieokreślonym stanie consent - co Google interpretuje jako problem konfiguracji i potencjalnie filtruje sygnały.
Krok 3: Cookiebot → GTM update events
Cookiebot wysyła do dataLayer event cookie_consent_update (lub podobny, zależnie od wersji) za każdym razem gdy użytkownik zmienia decyzję. W GTM tworzysz tag:
Trigger: Custom Event matching cookie_consent_update
Tag: Custom HTML:
<script>
gtag('consent', 'update', {
'ad_storage': {{Cookiebot Marketing}} === 'true' ? 'granted' : 'denied',
'analytics_storage': {{Cookiebot Statistics}} === 'true' ? 'granted' : 'denied',
'ad_user_data': {{Cookiebot Marketing}} === 'true' ? 'granted' : 'denied',
'ad_personalization': {{Cookiebot Marketing}} === 'true' ? 'granted' : 'denied'
});
</script>
Zmienne {{Cookiebot Marketing}} i {{Cookiebot Statistics}} to DataLayer Variables odczytujące stan zgód z Cookiebot. Konkretne nazwy zależą od wersji Cookiebot - sprawdź w GTM Preview Mode po kliknięciu banera, co Cookiebot pchnął do dataLayer.
Krok 4: Server-side GTM - przekazywanie consent
Server-side GTM musi widzieć stan consent przy każdym evencie. W kontenerze web GTM ustaw Google Tag z parametrem server_container_url wskazującym na Twoją subdomenę sgtm.
W kontenerze server-side:
- Consent Mode w Settings kontenera server-side - włącz integrację Consent Mode v2.
- Google Tags (Ads, GA4) - mają wbudowane respektowanie consent state przekazywanego z web.
- Facebook CAPI tag (jeśli używasz) - musi sprawdzać consent state przed wysłaniem do Meta. Standardowy template Meta dla server-side GTM ma checkbox “Check consent before sending” - włącz go. Pełna konfiguracja CAPI z deduplikacją: Meta CAPI na Shoper bez wtyczek.
Bez tego ostatniego kroku server-side CAPI może wysyłać eventy do Meta mimo braku consent - co w EOG jest naruszeniem RODO i potencjalną karą.
Krok 5: Walidacja - GTM Preview + Chrome Extension
GTM Preview Mode:
- Wejdź na sklep w trybie Preview
- Sprawdź zakładkę “Consent State” w GTM debugger
- Przed kliknięciem banera: wszystkie marketingowe sygnały =
denied - Po kliknięciu “Accept All”: wszystkie marketingowe sygnały =
granted - Po kliknięciu “Reject All”: wszystkie marketingowe sygnały =
denied,functionalityisecurity=granted
Tag Assistant (Chrome extension):
- Po kliknięciu “Accept All” sprawdź czy Google Ads Conversion tag strzela z
consent_state: granted - Po kliknięciu “Reject All” sprawdź czy tagi marketingowe nie strzelają w ogóle albo strzelają z
consent_state: denied
Google Tag Assistant → Consent Mode Status:
- Powinieneś widzieć “Active” lub “Configured” - nie “Not detected”
- Tracking ID Cookiebot zarejestrowany
Krok 6: Modelowanie konwersji w Google Ads
Po prawidłowo skonfigurowanym Consent Mode v2 Google Ads zaczyna modelować konwersje od użytkowników, którzy nie wyrazili zgody. To znaczy:
- Użytkownik kliknął reklamę, ale na sklepie odmówił consent
- Google nie dostaje bezpośredniej konwersji (Pixel nie strzela)
- Google statystycznie modeluje prawdopodobieństwo konwersji na podstawie podobnych użytkowników którzy zgodzili się i kupili
- Smart Bidding dostaje przybliżoną wartość, nie zero
Bez Consent Mode v2 modelowanie nie działa - użytkownicy bez consent są dla Google “niewidzialni”. Z Consent Mode v2 część tych konwersji wraca jako “modeled conversions” (oznaczone w raportach jako szacunkowe). Działa to równolegle z Enhanced Conversions browser-side vs server-side - oba mechanizmy odzyskują dane utracone w warstwie przeglądarki.
Typowy zysk z modelowania konwersji dla sklepu z Consent Mode v2:
- +15-25% Reported Conversions w Google Ads
- Stabilniejszy ROAS w panelu - mniej rozjazdów do realnej sprzedaży w sklepie
- Lepsza wydajność Smart Bidding - algorytm ma więcej sygnałów do uczenia się
Najczęstsze błędy konfiguracji
1. Brak ad_user_data i ad_personalization (Consent Mode v1).
Najpopularniejszy błąd. Stary kod Consent Mode (z 2021-2023) używa tylko dwóch sygnałów. Google traktuje to jako brak v2 i nakłada restrykcje na kampanie EOG. Fix: dorzucić dwa nowe sygnały do gtag('consent', 'default', ...).
2. Default state po Cookiebot, nie przed. Cookiebot ładuje się, pokazuje baner, a default state strzela później. Pierwsze pingi do Google idą bez consent state ustawionego - co skutkuje brakiem modelowania. Fix: tag Consent Default z trigger “Consent Initialization - All Pages” (priorytet ponad innymi).
3. Wtyczka Shopera + Cookiebot równocześnie.
Niektóre sklepy mają wtyczkę cookies Shopera (wbudowaną) i Cookiebot. Dwie warstwy consent walczą o dataLayer. Fix: wyłącz wtyczkę Shopera, zostaw tylko Cookiebot.
4. Brak Consent Mode w server-side GTM. Web GTM ma poprawnie skonfigurowany consent, ale server-side wysyła eventy do Google/Meta mimo braku zgody. To problem prawny (RODO) plus problem techniczny (Meta filtruje takie eventy). Fix: włącz Consent Mode v2 w settings kontenera server-side.
5. Meta CAPI bez sprawdzenia consent. Najgorszy przypadek - sklep ma server-side CAPI, ale tag nie sprawdza stanu zgody. Eventy do Meta lecą zawsze. Fix: w konfiguracji CAPI tag włącz “Check consent before sending” lub dodaj custom trigger sprawdzający consent.
6. wait_for_update ustawione za nisko albo za wysoko.
- Za nisko (poniżej 200ms): Google traktuje denied jako finalne, modelowanie się nie uruchamia.
- Za wysoko (powyżej 1000ms): pierwsze sekundy strony użytkownik widzi pustą stronę bo skrypty czekają na consent. Fix: 500ms to standard.
Podsumowanie
Consent Mode v2 to dziś nie opcja, tylko wymóg dla sklepów wydających na kampanie Google i Meta w EOG. Bez niego sklep traci 20-40% sygnałów konwersyjnych, kampanie nie modelują konwersji od użytkowników bez consent, a Enhanced Conversions przestają działać dla części ruchu.
Pełna konfiguracja z Cookiebot i server-side GTM zajmuje 4-6 godzin (włącznie z testami). Efekty są widoczne po 7-14 dniach - +15-25% Reported Conversions w Google Ads dzięki modelowaniu, stabilniejszy ROAS, lepsze działanie Smart Bidding.
Consent Mode v2 nie jest tylko o zgodności prawnej. To dziś warstwa techniczna, która decyduje czy Smart Bidding widzi 60% czy 90% rzeczywistego ruchu.
Wdrożenie Consent Mode v2 + integracja server-side jest standardowym elementem pakietów Server-Side Start i Server-Side Pro Shoper. Dla sklepów z aktywnym Cookiebot/OneTrust bez Consent Mode v2 - dedykowana usługa w ramach Ads Tracking Cleanup GTM.