Przejdź do treści

Jak sprawdzić, czy Consent Mode działa: Tag Assistant oraz parametry gcs i gcd

Baner może wyglądać poprawnie, a tagi i tak ignorować decyzję użytkownika. Pokazujemy, jak w 20 minut sprawdzić Consent Mode w Tag Assistant, w żądaniach sieciowych i w danych GA4.

Redakcja Pixel Insider9 min czytaniaPoziom: zaawansowany

  • GTM
  • DevTools
  • BigQuery
  • SQL
Spis treści
  1. Trzy scenariusze testowe i oczekiwane wyniki
  2. Jak sprawdzić Consent Mode w Tag Assistant i podglądzie GTM
  3. Parametr gcs: jak czytać stan ad_storage i analytics_storage
  4. Parametr gcd: cztery sygnały i ich pochodzenie
  5. Inne sygnały w żądaniach i plikach cookie
  6. Testy w server-side GTM
  7. Monitoring zgód w danych GA4 i BigQuery
  8. Najczęstsze wyniki testów i co oznaczają
  9. Najczęściej zadawane pytania

Jak sprawdzić Consent Mode? Najpewniej w trzech miejscach jednocześnie: w karcie zgody w Tag Assistant, w żądaniach sieciowych do Google i w plikach cookie przeglądarki. Każdy test przeprowadzasz w trzech scenariuszach – przed decyzją, po odmowie i po akceptacji. W żądaniach odczytujesz dwa parametry: gcs, który pokazuje stan ad_storage i analytics_storage, oraz gcd, który koduje wszystkie cztery sygnały Consent Mode v2 razem z informacją, czy pochodzą z ustawienia domyślnego, czy z aktualizacji. Poniżej znajdziesz procedurę, tabelę oczekiwanych wyników i skrypty do szybkiej diagnozy.

Najważniejsze w skrócie

  • Test obejmuje trzy scenariusze w czystej sesji: brak decyzji, odmowę i akceptację; w każdym sprawdzasz Tag Assistant, żądania i pliki cookie.
  • Parametr gcs ma format G1xy: pierwsza cyfra po G1 to ad_storage, druga analytics_storage; G100 oznacza odmowę obu, a G111 zgodę na oba.
  • Parametr gcd koduje cztery sygnały literami, których Google oficjalnie nie dokumentuje, dlatego jego odczyt zawsze potwierdzaj w karcie zgody Tag Assistant.
  • Zdarzenie Consent ze stanem domyślnym musi pojawić się w podglądzie GTM przed pierwszym tagiem, inaczej tagi startują bez sygnałów zgody.
  • Po wdrożeniu monitoruj udział zdarzeń według stanu zgody w eksporcie BigQuery – nagła zmiana zwykle oznacza modyfikację banera.

Trzy scenariusze testowe i oczekiwane wyniki

Każdy test zaczynaj w oknie prywatnym albo po wyczyszczeniu danych witryny, bo zapisana wcześniej decyzja w banerze zafałszuje wynik. Poniższa tabela pokazuje, czego spodziewać się w poprawnie skonfigurowanym trybie zaawansowanym przy stanie domyślnym denied.

Scenariusz Stan w Tag Assistant gcs w żądaniach GA4 Pliki cookie Google Tryb podstawowy
Brak decyzji, baner otwarty wszystkie cztery sygnały: denied G100 brak _ga, _gcl_au brak żądań do Google
Odmowa wszystkich zgód denied po aktualizacji G100 brak _ga, _gcl_au brak żądań do Google
Zgoda tylko na analitykę analytics_storage: granted G101 _ga i _ga_<ID>, brak _gcl_au tylko tagi analityczne
Akceptacja wszystkich zgód wszystkie cztery: granted G111 _ga, _ga_<ID>, _gcl_au wszystkie tagi Google

Jeśli wynik w którymkolwiek wierszu się nie zgadza, wróć do checklisty wdrożenia Consent Mode v2 i sprawdź kolejność ładowania. Różnice między trybami, widoczne w ostatniej kolumnie, szczegółowo opisujemy w porównaniu trybu podstawowego i zaawansowanego.

Tag Assistant pokazuje stan zgody w momencie każdego zdarzenia, więc pozwala sprawdzić nie tylko wynik końcowy, ale i kolejność. Ogólną obsługę narzędzia omawiamy w poradniku jak sprawdzić, czy tag działa; tutaj skupiamy się na zgodach.

  1. Uruchom podgląd kontenera GTM i połącz go ze stroną w nowym, czystym oknie.
  2. Na osi zdarzeń po lewej stronie znajdź zdarzenie Consent. Powinno być pierwsze lub jedno z pierwszych, przed Initialization i Container Loaded.
  3. Kliknij to zdarzenie i otwórz kartę Consent. Tabela pokazuje dla każdego sygnału stan domyślny na stronie, aktualizację i stan bieżący.
  4. Bez klikania w baner sprawdź, czy stan domyślny dla czterech sygnałów to denied, a kolumna aktualizacji jest pusta.
  5. Kliknij „Odrzucam” w banerze. Na osi powinno pojawić się kolejne zdarzenie z aktualizacją zgody, a stan bieżący pozostać denied.
  6. Powtórz test w nowym oknie, tym razem z akceptacją. Stan bieżący wszystkich sygnałów powinien zmienić się na granted.
  7. Otwórz szczegóły kilku tagów i sprawdź sekcję kontroli zgody: tagi Google powinny mieć wbudowane kontrole, a tagi zewnętrzne – dodatkowe wymogi zgody.
  8. Przejdź na drugą podstronę i sprawdź, czy CMP od razu wysyła aktualizację na podstawie zapisanej decyzji.

Najczęstszy wynik negatywny to brak zdarzenia Consent przed pierwszymi tagami. Oznacza to, że szablon CMP nie jest przypisany do reguły Consent Initialization – All Pages albo że kod stanu domyślnego znajduje się w <head> za fragmentem GTM.

Parametr gcs: jak czytać stan ad_storage i analytics_storage

Parametr gcs to najprostszy wskaźnik stanu zgody. Ma postać G1 i dwie cyfry: pierwsza oznacza ad_storage, druga analytics_storage, przy czym 1 to zgoda, a 0 – odmowa.

  • G100 – odmowa obu zgód,
  • G110 – zgoda na ad_storage, odmowa analytics_storage,
  • G101 – odmowa ad_storage, zgoda na analytics_storage,
  • G111 – zgoda na oba sygnały.

W DevTools otwórz kartę Network i wpisz w filtr gcs=. Zobaczysz żądania GA4 (zawierające w ścieżce /g/collect) i żądania tagów Google Ads. Przy zdarzeniach GA4 parametr gcs znajduje się w adresie, nawet jeśli same zdarzenia są wysyłane w treści żądania POST. Pamiętaj, że gcs nie pokazuje sygnałów ad_user_data i ad_personalization – do tego potrzebny jest gcd.

Parametr gcd: cztery sygnały i ich pochodzenie

Parametr gcd pojawił się razem z Consent Mode v2 i koduje wszystkie cztery sygnały literami. Google nie publikuje oficjalnego opisu tego formatu, a poniższa interpretacja została odtworzona przez społeczność analityków. Traktuj ją jako pomoc w diagnozie, a rozstrzygnięcia szukaj w karcie Consent w Tag Assistant.

W typowym wywołaniu, np. gcd=13r3r3r3r5, litery na pozycjach 3, 5, 7 i 9 odpowiadają kolejno sygnałom ad_storage, analytics_storage, ad_user_data i ad_personalization. Cyfry między nimi i na końcu przenoszą dodatkowe informacje, których znaczenie nie jest publicznie opisane.

Litera Stan domyślny Aktualizacja Interpretacja
l brak brak sygnał nie został ustawiony
p denied brak odmowa domyślna, użytkownik nie zdecydował
q denied denied odmowa domyślna i odmowa w banerze
r denied granted odmowa domyślna, zgoda w banerze
t granted brak zgoda domyślna bez decyzji użytkownika
u granted denied zgoda domyślna, odmowa w banerze
v granted granted zgoda domyślna i zgoda w banerze
m brak denied brak stanu domyślnego, odmowa w aktualizacji
n brak granted brak stanu domyślnego, zgoda w aktualizacji

Dla sklepu z EOG pożądane wartości to p przed decyzją, q po odmowie i r po zgodzie. Litery t, u i v oznaczają domyślną zgodę, co dla ruchu z EOG zwykle wskazuje na błąd. Litery l, m i n sygnalizują brak stanu domyślnego, czyli problem z kolejnością ładowania.

Poniższy skrypt wklejony w konsolę wypisze gcs i rozkodowany gcd dla żądań, które przeglądarka już wysłała. Przed poleganiem na nim porównaj jego wynik z kartą Consent dla jednego żądania:

(function () {
  var opis = { l: 'nieustawiony', p: 'denied (domyślnie)', q: 'denied → denied',
    r: 'denied → granted', t: 'granted (domyślnie)', u: 'granted → denied',
    v: 'granted → granted', m: '– → denied', n: '– → granted' };
  var sygnaly = ['ad_storage', 'analytics_storage', 'ad_user_data', 'ad_personalization'];
  performance.getEntriesByType('resource')
    .map(function (e) { return e.name; })
    .filter(function (u) { return u.indexOf('gcd=') > -1; })
    .forEach(function (u) {
      var p = new URL(u).searchParams, gcd = p.get('gcd') || '';
      var wynik = {};
      sygnaly.forEach(function (s, i) { wynik[s] = opis[gcd.charAt(2 + i * 2)] || '?'; });
      console.log(p.get('en') || '(brak en)', 'gcs=' + p.get('gcs'), 'gcd=' + gcd, wynik);
    });
})();

Oprócz gcs i gcd w żądaniach znajdziesz parametry związane z regulacjami i personalizacją. Parametr dma informuje, czy żądanie jest traktowane jako objęte przepisami aktu o rynkach cyfrowych, co dotyczy ruchu z EOG, a dma_cps opisuje zakres zgód w tym kontekście. W żądaniach reklamowych może pojawić się też npa=1, oznaczający reklamy bez personalizacji.

Drugim źródłem prawdy są pliki cookie. W DevTools w karcie Application sprawdź listę plików dla swojej domeny. Przy odmowie nie powinno być _ga, _ga_<ID>, _gcl_au ani _gcl_aw. Jeśli włączyłeś url_passthrough, po kliknięciu reklamy zobaczysz identyfikator kliknięcia doklejany do linków wewnętrznych – to zamierzone działanie, które pozwala zachować informację o kliknięciu bez plików cookie. Gdy jednocześnie obserwujesz wzrost ruchu bez źródła, sprawdź przekierowania i inne przyczyny opisane w artykule o „(not set)” i ruchu bezpośrednim w GA4.

Sprawdź też pliki cookie innych platform: _fbp dla Meta i _ttp dla TikToka. Ich obecność po odmowie oznacza, że tagi zewnętrzne nie mają dodatkowych kontroli zgody albo zostały wklejone poza GTM. Wpływ zmiany z 15 czerwca 2026 r. na przepływ danych z GA4 do Google Ads opisujemy w tekście o Google Signals i ad_storage.

Testy w server-side GTM

W server-side tagging zgoda przychodzi do kontenera serwerowego razem z żądaniem z przeglądarki. Parametry gcs i gcd są częścią żądania GA4, więc tagi Google w kontenerze serwerowym dostosowują się do nich automatycznie.

Tagi innych platform w kontenerze serwerowym nie odczytują zgody same. Dla tagu Meta Conversions API czy TikTok Events API dodaj w regule warunek oparty na zgodzie. Najprościej utworzyć zmienną typu Query Parameter odczytującą gcs i w regule ustawić warunek dopasowania do wyrażenia regularnego ^G11, co oznacza zgodę na ad_storage. W podglądzie kontenera serwerowego sprawdź w szczegółach żądania, jaka wartość dotarła z przeglądarki. Konfigurację całego kontenera opisujemy w poradniku server-side tagging w praktyce, a tagu Meta – w tekście o Conversions API przez server-side GTM.

Monitoring zgód w danych GA4 i BigQuery

Jednorazowy test nie wystarczy, bo baner zmienia się przy aktualizacjach CMP, wtyczek sklepu i szablonu strony. Dlatego warto obserwować rozkład stanu zgody w danych.

W eksporcie GA4 do BigQuery każde zdarzenie ma rekord privacy_info z polami analytics_storage i ads_storage. W trybie zaawansowanym w eksporcie mogą pojawić się także zdarzenia z odmową, pozbawione identyfikatora użytkownika. Poniższe zapytanie pokazuje rozkład odsłon według stanu zgody w ostatnich 14 dniach:

SELECT
  event_date,
  privacy_info.analytics_storage AS analytics_storage,
  privacy_info.ads_storage AS ads_storage,
  COUNT(*) AS odslony
FROM `twoj-projekt.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN
    FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 14 DAY))
    AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
  AND event_name = 'page_view'
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3;

Nagły spadek udziału zdarzeń ze zgodą zwykle oznacza zmianę wyglądu lub działania banera, a nagły wzrost – błąd w stanie domyślnym. Więcej gotowych zapytań znajdziesz w zestawie 10 zapytań do eksportu GA4 w BigQuery, a automatyczne alerty o takich zmianach opisujemy w tekście o monitoringu tagów na produkcji.

Najczęstsze wyniki testów i co oznaczają

Poniżej zestawienie objawów, które pojawiają się przy testach najczęściej, z prawdopodobną przyczyną.

Objaw Prawdopodobna przyczyna Co zrobić
Brak zdarzenia Consent przed tagami CMP poza regułą Consent Initialization przenieś szablon CMP na właściwą regułę
gcd z literami l, m lub n brak stanu domyślnego dodaj gtag('consent', 'default', …) przed GTM
G100 mimo akceptacji CMP nie wysyła aktualizacji sprawdź integrację CMP z Consent Mode v2
G111 przed decyzją domyślna zgoda dla EOG zmień stan domyślny na denied
_fbp po odmowie piksel Meta bez kontroli zgody dodaj wymóg zgody na ad_storage w GTM
Brak zdarzeń w DebugView tryb podstawowy przed zgodą zaakceptuj zgody i sprawdź ponownie

Ostatni wiersz bywa mylący: w trybie podstawowym przed zgodą GA4 nie dostaje żadnych danych, więc pusty DebugView jest wynikiem prawidłowym. Inne przyczyny braku zdarzeń opisujemy w artykule o problemach z DebugView w GA4. Całość materiałów o zgodach znajdziesz w podtemacie Consent Mode, a o wyborze i konfiguracji banera – w przewodniku o banerze cookies zgodnym z TCF 2.3.

Najczęściej zadawane pytania

Co oznacza gcs=G100 w żądaniu GA4?

Wartość G100 oznacza, że w chwili wysłania żądania zarówno ad_storage, jak i analytics_storage miały stan denied. Tak powinno wyglądać żądanie przed decyzją użytkownika lub po odmowie w trybie zaawansowanym Consent Mode. Jeśli widzisz G100 po akceptacji wszystkich zgód, baner prawdopodobnie nie wysyła aktualizacji zgody do tagów Google.

Czy Google oficjalnie dokumentuje parametr gcd?

Nie. Google nie publikuje opisu formatu gcd, a stosowana w branży interpretacja liter została odtworzona przez społeczność analityków na podstawie testów. Dlatego gcd traktuj jako narzędzie pomocnicze. Oficjalnym sposobem sprawdzenia stanu zgody jest karta Consent w Tag Assistant i podglądzie GTM, która pokazuje stan domyślny, aktualizację i stan bieżący.

Dlaczego w trybie podstawowym nie widzę żadnych żądań do Google przed zgodą?

To prawidłowe działanie. W trybie podstawowym tagi Google nie ładują się, dopóki użytkownik nie wyrazi zgody, więc przed decyzją nie ma żadnych żądań ani parametrów gcs i gcd do sprawdzenia. Test w tym trybie polega na potwierdzeniu, że żądania pojawiają się dopiero po akceptacji i mają wtedy wartość G111.

Pełny test przeprowadź po każdej zmianie CMP, szablonu strony, wtyczek sklepu lub kontenera GTM oraz przed dużymi kampaniami, np. przed Black Friday. Między testami wystarczy automatyczny monitoring udziału zdarzeń według stanu zgody w BigQuery lub GA4, który zasygnalizuje nagłą zmianę wymagającą ręcznej weryfikacji.

Jak sprawdzić zgodę w kontenerze server-side GTM?

Otwórz podgląd kontenera serwerowego i w szczegółach przychodzącego żądania GA4 odczytaj parametry gcs i gcd. Tagi Google w kontenerze serwerowym respektują je automatycznie. Dla tagów innych platform, np. Meta Conversions API, utwórz zmienną odczytującą gcs i dodaj w regule warunek, który dopuszcza wysyłkę tylko przy zgodzie na ad_storage.