Server-side tracking 22 lutego 2026 14 min czytania

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ą.

Consent Mode v2 wprowadziło dwa nowe sygnały ponad to, co było w v1:

SygnałCo kontrolujeWymagany dla
ad_storageCookies marketingowe Google (np. _gcl_au, _gcl_aw)Google Ads remarketing, Conversion Tracking
analytics_storageCookies Google Analytics (np. _ga, _gid)GA4, GA Universal
ad_user_dataWysyłanie danych użytkownika (email, telefon) do GoogleEnhanced Conversions, audience matching
ad_personalizationPersonalizacja 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:

  • denied dla wszystkich marketingowych sygnałów - przed kliknięciem banera nic nie jest dozwolone
  • functionality_storage i security_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:

  1. Configuration → Google Consent Mode → włącz
  2. Configuration → Categories - upewnij się że masz cztery kategorie:
    • Preferences (functionality_storage)
    • Statistics (analytics_storage)
    • Marketing (ad_storage + ad_user_data + ad_personalization)
  3. Configuration → Banner - ustaw “Show banner before scripts load”
  4. 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.

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:

  1. Tag Consent Default (ten kod) - default denied
  2. Cookiebot ładuje się i pokazuje baner
  3. Użytkownik klika → Cookiebot przekazuje update do GTM
  4. 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.

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:

  1. Consent Mode w Settings kontenera server-side - włącz integrację Consent Mode v2.
  2. Google Tags (Ads, GA4) - mają wbudowane respektowanie consent state przekazywanego z web.
  3. 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:

  1. Wejdź na sklep w trybie Preview
  2. Sprawdź zakładkę “Consent State” w GTM debugger
  3. Przed kliknięciem banera: wszystkie marketingowe sygnały = denied
  4. Po kliknięciu “Accept All”: wszystkie marketingowe sygnały = granted
  5. Po kliknięciu “Reject All”: wszystkie marketingowe sygnały = denied, functionality i security = 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.

Porozmawiajmy o Twoim trackingu

30 minut bez zobowiązań. Bez sesji sprzedażowej. Powiem czy mogę pomóc i co realnie da się odzyskać.