Jak Wdrożyć Consent Mode v2 w Google Tag Manager - Krok po Kroku

Marcin
9 marca 2026
9 min czytania
Jak Wdrożyć Consent Mode v2 w Google Tag Manager - Krok po Kroku

Google Consent Mode v2 to dziś standard, a nie opcja — bez niego tracisz dane w Google Analytics 4 i ryzykujesz niezgodność z RODO. W tym tutorialu pokażę Ci, jak skonfigurować Consent Mode v2 przez Google Tag Manager krok po kroku, korzystając z platformy CookiePilot jako CMP.

📌 Jeśli dopiero poznajesz temat, zacznij od naszego wpisu Google Consent Mode v2 — Kompletny Przewodnik 2026, gdzie wyjaśniamy czym jest consent mode i jak działa modelowanie konwersji.


Spis treści

  1. Czego potrzebujesz przed wdrożeniem
  2. Jak działa Consent Mode v2 z GTM — architektura
  3. Krok 1 — Tag CookiePilot: Consent Init
  4. Krok 2 — Tag CookiePilot: Banner
  5. Krok 3 — Publikacja kontenera GTM
  6. Krok 4 — Weryfikacja wdrożenia
  7. Najczęstsze błędy i jak je naprawić
  8. Checklist przed uruchomieniem
  9. FAQ

Czego potrzebujesz przed wdrożeniem

Zanim zaczniesz, upewnij się, że masz:

  • Konto w Google Tag Manager z uprawnieniami do edycji kontenera (gtm.google.com)
  • Konto w CookiePilot — platforma CMP generuje klucz API i zarządza banerem (cookiepilot.io)
  • Dostęp do kodu strony lub wtyczki tagującej (WordPress, Shopify itp.)
  • Skrypt GTM poprawnie zainstalowany na stronie (tag w <head> i <body>)

⚠️ Uwaga: Consent Mode v2 wymaga, by domyślne wartości zgód były ustawiane synchronicznie, zanim załaduje się jakikolwiek skrypt analityczny lub reklamowy. Dlatego kolejność tagów w GTM jest krytyczna — szczegóły poniżej.


Wdrożenie składa się z dwóch tagów uruchamianych w ściśle określonej kolejności:

Strona się ładuje
       │
       ▼
[TAG 1] Consent Init        ← Trigger: Consent Initialization
  gtag("consent","default") ← Blokuje GA4, Ads do czasu zgody
  Odczytuje cookie CMP      ← Jeśli zgoda już była, aktualizuje
       │
       ▼
[TAG 2] Banner              ← Trigger: All Pages
  Ładuje skrypt CookiePilot ← Wyświetla baner (jeśli potrzebny)
  Nasłuchuje na wybór       ← gtag("consent","update") po kliknięciu
       │
       ▼
[Pozostałe tagi]            ← GA4, Google Ads, Pixel itp.
  Czekają na zgody          ← Uruchamiają się tylko gdy granted

Kluczowa zasada: Tag 1 musi odpalić się przed Tag 2 i przed wszystkimi innymi tagami analitycznymi. Trigger Consent Initialization gwarantuje właśnie tę kolejność — jest wbudowanym mechanizmem GTM zaprojektowanym do tego celu.

Więcej o samym mechanizmie przeczytasz w oficjalnej dokumentacji Google dotyczącej Consent Mode.


Ten tag ustawia domyślne wartości zgód (wszystkie denied) i natychmiast aktualizuje je, jeśli użytkownik już wcześniej dokonał wyboru (cookie cookiepilot_consent istnieje w przeglądarce).

1.1 Utwórz nowy tag

W interfejsie GTM: Tagi → Nowy → Typ tagu → Niestandardowy kod HTML

1.2 Wklej kod tagu

<script>
"use strict";
(function(){
  window.dataLayer = window.dataLayer || [];
  window.gtag = function(){ window.dataLayer.push(arguments) };

  // Domyślne odrzucenie wszystkich zgód
  window.gtag("consent", "default", {
    ad_storage:             "denied",
    ad_user_data:           "denied",
    ad_personalization:     "denied",
    analytics_storage:      "denied",
    functionality_storage:  "denied",
    personalization_storage:"denied",
    security_storage:       "granted",
    wait_for_update:        500
  });

  // Odczyt istniejącego wyboru użytkownika z cookie
  var a = document.cookie.match(/(^|;)\s*cookiepilot_consent=([^;]+)/);
  if(a){
    try{
      var e = JSON.parse(decodeURIComponent(a[2]));
      window.gtag("consent", "update", {
        analytics_storage:       e.analytics  ? "granted" : "denied",
        ad_storage:              e.marketing  ? "granted" : "denied",
        ad_user_data:            e.marketing  ? "granted" : "denied",
        ad_personalization:      e.marketing  ? "granted" : "denied",
        functionality_storage:   e.preferences? "granted" : "denied",
        personalization_storage: e.preferences? "granted" : "denied",
        security_storage:        "granted"
      });
    } catch(err){}
  }
})();
</script>

💡 wait_for_update: 500 daje baner 500ms na załadowanie i wysłanie aktualizacji zgód. Dla wolniejszych stron możesz zwiększyć tę wartość do 1000ms.

1.3 Ustaw trigger

Trigger → Nowy → Inicjalizacja zgody — Wszystkie strony (ang. Consent Initialization — All Pages)

Jest to specjalny typ wyzwalacza GTM, który odpala się najwcześniej w cyklu życia strony — przed Initialization - All Pages i All Pages.

1.4 Nazwij i zapisz tag

Nazwa przykładowa: CookiePilot — Consent Init


Krok 2 — Tag CookiePilot: Banner

Ten tag ładuje skrypt banera CookiePilot, który wyświetla interfejs zgody i nasłuchuje na wybory użytkownika. Po kliknięciu przycisku baner automatycznie wywołuje gtag("consent","update") z odpowiednimi wartościami.

2.1 Utwórz drugi tag Custom HTML

Tagi → Nowy → Niestandardowy kod HTML

2.2 Wklej kod tagu

<script>
(function() {
  var s = document.createElement('script');
  s.src = 'https://cdn.cookiepilot.io/cookiepilot.js';
  s.setAttribute('data-cpkey', 'TWÓJ_KLUCZ_API');  // ← wstaw klucz z panelu CookiePilot
  document.head.appendChild(s);
})();
</script>

🔑 Klucz API znajdziesz w panelu CookiePilot w sekcji edycji domeny — kod instalacyjny jest tam gotowy do skopiowania.

2.3 Ustaw trigger

Trigger → Wszystkie strony (All Pages)

W sekcji Zaawansowane ustawienia tagu ustaw:

  • Sekwencja tagów: brak (domyślnie)
  • Opcja uruchamiania: Raz na stronę

2.4 Nazwij i zapisz tag

Nazwa przykładowa: CookiePilot — Banner


Krok 3 — Publikacja kontenera GTM

3.1 Sprawdź kolejność tagów w podglądzie

Przed publikacją użyj trybu Podgląd (Preview):

  1. Kliknij Podgląd w prawym górnym rogu GTM
  2. Wpisz URL swojej strony i kliknij Connect
  3. W panelu debuggera sprawdź zakładkę Tags
  4. Upewnij się, że CookiePilot — Consent Init pojawia się w sekcji Consent Initialization — przed wszystkimi innymi tagami
  5. CookiePilot — Banner powinien być w sekcji All Pages

3.2 Opublikuj kontener

Jeśli podgląd wygląda poprawnie:

  1. Zamknij tryb podglądu
  2. Kliknij Opublikuj (niebieski przycisk, prawy górny róg)
  3. Dodaj opis wersji np. Wdrożenie Consent Mode v2 — CookiePilot
  4. Kliknij Opublikuj


Krok 4 — Weryfikacja wdrożenia

Po publikacji sprawdź poprawność wdrożenia na kilka sposobów:

4.1 Rozszerzenie Google Tag Assistant

Zainstaluj Tag Assistant Companion w Chrome. Odwiedź stronę i sprawdź:

  • Czy gtag("consent","default") jest wywoływane
  • Czy parametry zgód mają wartości denied/granted zgodnie z wyborem użytkownika

4.2 Narzędzia deweloperskie przeglądarki

Otwórz DevTools → Sieć (Network) i wyszukaj żądania do google-analytics.com lub googletagmanager.com. Sprawdź, czy zawierają parametr gcs (Google Consent State):

  • gcs=G100 — wszystkie zgody odrzucone
  • gcs=G111 — analytics i ads przyznane
  • gcs=G1-- — częściowe zgody

W Google Analytics 4 przejdź do: Admin → Zbieranie danych i modyfikacje → Zbieranie danych → Consent Mode

Powinien pojawić się zielony wskaźnik potwierdzający aktywny Consent Mode. Pełne dane modelowania konwersji będą widoczne po 7 dniach zbierania danych.

Więcej o weryfikacji znajdziesz w dokumentacji Google Analytics 4.


Najczęstsze błędy i jak je naprawić

❌ Błąd 1: gtag is not defined

Przyczyna: Tag Consent Init nie odpala się lub odpala za późno. Rozwiązanie: Sprawdź, czy trigger to Consent Initialization — All Pages, a nie All Pages.


❌ Błąd 2: GA4 zbiera dane bez zgody

Przyczyna: Tag GA4 odpalał się przed ustawieniem domyślnych zgód. Rozwiązanie: Upewnij się, że Consent Init ma trigger Consent Initialization i nie ma żadnych niestandardowych priorytetów tagów, które mogłyby go przesunąć.


❌ Błąd 3: Baner wyświetla się mimo istniejącej zgody

Przyczyna: Cookie cookiepilot_consent jest blokowane przez politykę SameSite lub domenę. Rozwiązanie: Sprawdź w DevTools → Application → Cookies, czy cookie istnieje po zapisaniu zgody. Upewnij się, że domena cookie zgadza się z domeną strony.


❌ Błąd 4: wait_for_update timeout powoduje opóźnienie GA4

Przyczyna: Wartość wait_for_update: 500 jest za wysoka dla szybkiej strony. Rozwiązanie: Możesz zmniejszyć do 300ms lub pozostawić 500ms — dla UX i dokładności danych 500ms to bezpieczny kompromis rekomendowany przez Google.


Przyczyna: Dane potrzebują do 7 dni na pojawienie się w raporcie. Alternatywnie: Consent Mode jest aktywny dopiero po publikacji, nie retroaktywnie. Rozwiązanie: Poczekaj 7 dni i sprawdź ponownie. Modelowanie działa tylko do przodu od momentu wdrożenia.


Checklist przed uruchomieniem

Przed upublicznieniem kontenera GTM przejdź przez tę listę:

  • Tag Consent Init ma trigger Consent Initialization — All Pages
  • Tag Banner ma trigger All Pages i opcję Raz na stronę
  • Klucz API CookiePilot jest wklejony w tagu Banner
  • W trybie podglądu GTM tag Consent Init odpala się przed tagami GA4 i Ads
  • Po kliknięciu „Akceptuj" w banerze — cookie cookiepilot_consent pojawia się w przeglądarce
  • Po kliknięciu „Akceptuj" — gtag("consent","update") jest wywoływany z wartościami granted
  • W Google Analytics 4 raport Consent Mode pokazuje aktywne połączenie
  • Strona przeszła test na CookieServe lub podobnym narzędziu audytowym

FAQ

Technicznie tak — możesz napisać własny kod do zbierania zgód. W praktyce jednak platforma CMP (jak CookiePilot) automatycznie obsługuje aktualizacje consent update, przechowuje wybory, generuje baner zgodny z RODO i zarządza dokumentacją zgód. Własne rozwiązanie wymaga znacznie więcej pracy i wiedzy prawnej.

Tak — od marca 2024 Google wymaga Consent Mode v2 dla wszystkich reklamodawców korzystających z Google Ads i Google Analytics na terenie EOG. Bez niego tracisz modelowanie konwersji i remARketing. Szczegóły w przewodniku po Consent Mode v2.

Jak długo trwa pełne wdrożenie?

Samo wdrożenie w GTM zajmuje ok. 30 minut. Konfiguracja banera w panelu CookiePilot (polityka prywatności, wygląd, języki) to dodatkowe 15–30 minut. Raport modelowania w GA4 pojawia się po 7 dniach.

Czy GTM jest jedyną metodą wdrożenia?

Nie. Consent Mode v2 możesz wdrożyć też bezpośrednio przez kod (gtag.js w <head>), przez dedykowane wtyczki WordPress (np. oficjalna wtyczka CookiePilot) lub przez platformy e-commerce (Shopify, PrestaShop). GTM jest najwygodniejszy dla stron, które już z niego korzystają.

Co z cookies stron trzecich po odrzuceniu zgody?

Consent Mode v2 nie blokuje fizycznie plików cookie — blokuje wysyłanie danych do Google. Do fizycznego blokowania skryptów stron trzecich (np. Facebooka, HotJara) potrzebujesz funkcji blokowania skryptów dostępnej w platformach CMP takich jak CookiePilot. Jest to wymagane przez RODO dla cookies niefunkcjonalnych.


Podsumowanie

Wdrożenie Consent Mode v2 przez Google Tag Manager sprowadza się do dwóch tagów:

  1. Consent Init — ustawia domyślne denied i odczytuje istniejące zgody z cookie
  2. Banner — ładuje interfejs CMP i obsługuje consent update po wyborze użytkownika

Kluczem jest właściwy trigger dla każdego tagu i kolejność odpalania. Jeśli zrobisz to poprawnie, Google Analytics 4 będzie odbierać sygnały zgody, modelowanie konwersji zacznie działać, a Twoja strona będzie zgodna z RODO i wymaganiami Google.

Masz pytania? Sprawdź nasz Kompletny Przewodnik po Google Consent Mode v2 lub porównanie platform CMP.

Napisane przez

Marcin

Zespół CookiePilot dzieli się wiedzą o RODO, PKE i zarządzaniu cookies.

Udostępnij ten artykuł: