Jak wdrożyć CMP przez Google Tag Manager (poprawnie)
Krok po kroku: szablon Consent Mode v2 w GTM, default deny, listener tag, gating per-tag i trzy pułapki, które wyciszają połowę Twoich tagów na wieki.
Większość developerów wkleja tag <script> CMP bezpośrednio w head strony i kończy temat. Działa — ale jeśli i tak już używasz Google Tag Managera, wpięcie przez GTM jest znacznie czystsze: dostajesz gating per-tag, łatwy debug i jeden source of truth dla całego stacku trackingu. Tu jest plan, jak to zrobić poprawnie.
Krok 1 — Powiedz GTM o Consent Mode
W GTM → Container Settings → włącz Consent Overview. To odblokowuje sekcję „Consent settings” per-tag, której będziemy potrzebować w kroku 4.
Krok 2 — Zainstaluj szablon GTM od CMP
Większość CMP-ów (CookieGuard, Cookiebot, Iubenda) publikuje darmowy szablon GTM w Community Templates. Dodaj go z Tag → New → Template Gallery. Szablon:
- Wykona
gtag('consent', 'default', …)ze wszystkim ustawionym na denied. - Zaciągnie loader skryptu CMP.
- Nasłuchuje na update event z CMP i wykonuje
gtag('consent', 'update', …).
Ustaw trigger na Consent Initialization — All Pages(nie zwykły page-view trigger). Consent Initialization odpala się przed wszystkim innym, co jest krytyczne.
Krok 3 — Skonfiguruj zmienne specyficzne dla CMP
Zwykle wypełniasz trzy pola szablonu:
- Domain ID — identyfikator, który dał Ci CMP.
- Consent version — zwiększ przy każdej zmianie bannera lub listy vendorów.
- Region behavior — strict EOG, opt-out California, soft elsewhere.
Krok 4 — Bramka per tag
Otwórz każdy istniejący tag (GA4, Floodlight, Meta Pixel itd.) i ustaw consent settings:
| Tag | Wymagana zgoda |
|---|---|
| GA4 Configuration | analytics_storage |
| GA4 Event | analytics_storage |
| Google Ads Conversion | ad_storage, ad_user_data |
| Google Ads Remarketing | ad_storage, ad_personalization |
| Meta Pixel | ad_storage, ad_user_data, ad_personalization |
| LinkedIn Insight | ad_storage, ad_user_data |
| Hotjar / FullStory | analytics_storage |
Z bramkami GTM kolejkuje te tagi do momentu zgody, a potem je wykona — automatycznie, bez pisania custom triggerów.
Krok 5 — Zweryfikuj w Tag Assistant
Otwórz tagassistant.google.com, połącz się ze swoim dev URL i obserwuj:
- Panel Consent powinien pokazać defaulty załadowane PRZED pierwszym hitem GA4.
- GA4 hity przed zgodą powinny być cookieless — bez
_gaw żądaniu. - Po kliknięciu „Akceptuję” powinieneś zobaczyć Consent update event oraz kolejne GA4 hity z pełnym payload.
Trzy pułapki
Pułapka 1: GTM ładowane przed Consent Initialization
Jeśli Twój CMS wstawia gtm.js w <head>, ale loader CMP zaczyna się gdzieś niżej — masz race condition. Naprawa: blok default-consent CMP musi być przed snippetem GTM, nawet jeśli reszta CMP ładuje się później. CookieGuard rozwiązuje to przez tiny loader stub, który rekomendujemy wkleić zaraz nad snippetem GTM.
Pułapka 2: Brak wait_for_update
Bez wait_for_update: 500 w Twoim default consent, Google zakłada, że użytkownik już miał czas na decyzję i denied jest finalny. To psuje consent modeling. Zawsze wpisuj.
Pułapka 3: Traktowanie Consent Mode jako zamiennika gating-u tagów
Consent Mode mówi Google, jaką masz zgodę. Nie zatrzymuje Twoich innych tagów (Meta, LinkedIn, TikTok) przed odpaleniem. Wciąż musisz bramować te tagi przez GTM-owe consent settings per tag albo przez warunki triggera. Zapomnienie tego było przyczyną wpadki niemieckiego Federalnego Sądu na początku 2024 r.
Skrót
Szablon GTM CookieGuard ma wszystkie powyższe presety gatingu. Zainstaluj, wpisz Domain ID, gotowe.