LW IT Solutions
« Blog Overview /Digital Analytics / GA4 Consent Mode v2: parametr gcd, wyścigi...
This post in other languages:

GA4 Consent Mode v2: parametr gcd, wyścigi CMP i debugowanie po stronie serwera

Część 3 z 4 serii Jak poprawnie okablować zgodę

GA4 Consent Mode v2: Dekodowanie parametru gcd (Analiza żądań sieciowych)
Spis treści
  1. GA4 Consent Mode v2: Dekodowanie parametru gcd (Analiza żądań sieciowych)
  2. 1. Struktura parametru gcd
  3. 2. Wykrywanie błędów Race Condition
  4. 3. Debugowanie w Server-Side GTM
  5. Źródła

GA4 Consent Mode v2: Dekodowanie parametru gcd (Analiza żądań sieciowych)

W nowoczesnych architekturach analityki internetowej weryfikacja zgodności z przepisami o prywatności wymaga znacznie głębszej analizy niż tylko sprawdzanie obecności banera cookie. Standardowy parametr gcs w żądaniach sieciowych Google Analytics 4 (GA4) dostarcza jedynie podstawowej informacji (np. g110 lub g111), nie ujawniając rzeczywistego mechanizmu stanów zgód. Cała złożoność Google Consent Mode v2 jest zakodowana w zagadkowym parametrze gcd (np. 11r1r1r1r5).

Poniższa analiza techniczna wyjaśnia logikę bitową ciągu gcd, przedstawia metody debugowania sygnałów w Server-Side Google Tag Manager (ssGTM) oraz pokazuje, w jaki sposób identyfikować błędy typu race condition między platformami CMP (np. Usercentrics) a pierwszym wyświetleniem strony.

1. Struktura parametru gcd

W przeciwieństwie do parametru gcs, który informuje wyłącznie o ogólnej zgodzie na pamięć reklamową lub analityczną, parametr gcd precyzyjnie określa pełny cykl życia sygnału. Ujawnia on, czy dany status został ustawiony jako domyślny (default), zaktualizowany przez akcję użytkownika (update), czy też pozostał nieskonfigurowany.

Typowy ciąg parametru gcd ma następującą strukturę: 11<ad_storage>1<analytics_storage>1<ad_user_data>1<ad_personalization>5

Kod literowyStan zgody (Consent State)Znaczenie techniczne
lNieustawioneBrak stanu domyślnego i brak aktualizacji; Consent Mode nie jest skonfigurowany dla tego sygnału.
pOdrzucono (Domyślnie)Stan domyślny odmowny, brak aktualizacji.
qOdrzucono (Domyślnie + Aktualizacja)Stan domyślny odmowny, aktualizacja również odmowna.
rWyrażono zgodę (Aktualizacja)Stan domyślny odmowny, aktualizacja na zgodę.
tWyrażono zgodę (Domyślnie)Stan domyślny na zgodę, brak aktualizacji.
uOdrzucono (Aktualizacja)Stan domyślny na zgodę, aktualizacja na odmowę.
vWyrażono zgodę (Domyślnie + Aktualizacja)Stan domyślny na zgodę, aktualizacja również na zgodę.
mOdrzucono (Aktualizacja)Brak polecenia default, aktualizacja na odmowę.
nWyrażono zgodę (Aktualizacja)Brak polecenia default, aktualizacja na zgodę.

Przykładowo, wartość gcd=11p1p1p1p5 oznacza restrykcyjny stan wyjściowy, w którym wszystkie cztery parametry (ad_storage, analytics_storage, ad_user_data, ad_personalization) mają domyślnie status odmowny i nie dotarła jeszcze żadna aktualizacja (p). Z kolei wartość gcd=11r1r1r1r5 potwierdza, że nastąpiło zdarzenie aktualizacji i wszystkie cztery sygnały zostały zmienione z domyślnej odmowy na zgodę (r). Ciąg złożony z kodów v opisuje natomiast inny przypadek: zgodę już na poziomie stanu domyślnego, potwierdzoną przez aktualizację.

Diagram do artykułu: Objaw, Przyczyna, Rozwiązanie
3 elementów artykułu w skrócie: Objaw, Przyczyna, Rozwiązanie.

2. Wykrywanie błędów Race Condition

Częstym błędem architektonicznym jest wyścig (race condition) pomiędzy ładowaniem skryptu CMP (np. Usercentrics) a uruchomieniem pierwszego tagu konfiguracyjnego GA4. Jeśli powracający użytkownik posiada zapisaną zgodę, jednak pierwsze żądanie sieciowe zawiera kody p zamiast r, oznacza to, że tag śledzący wysłał dane, zanim platforma CMP zdążyła przekazać zaktualizowany stan do DataLayer.

  • Objaw: Pierwszy hit pageview zawiera gcd=11p1p1p1p5 (domyślna odmowa, brak aktualizacji), podczas gdy kolejne zdarzenia mają już kod gcd=11r1r1r1r5 (domyślna odmowa, aktualizacja na zgodę).
  • Przyczyna: Uruchomienie tagu GA4 następuje na standardowym wyzwalaczu All Pages lub Consent Initialization bez oczekiwania na asynchroniczną inicjalizację CMP.
  • Rozwiązanie: Konfiguracja tagów analitycznych w oparciu o dedykowane zdarzenia CMP (np. consent_status) lub zastosowanie parametru wait_for_update z limitem 500 ms w kodzie domyślnym.

3. Debugowanie w Server-Side GTM

W środowisku Server-Side Google Tag Manager (ssGTM) przychodzące żądanie HTTP GA4 stanowi podstawowy nośnik danych dla tagów vendorów zewnętrznych, w tym Meta Conversions API (CAPI) czy Google Ads. Analiza parametru gcd w trybie podglądu ssGTM jest kluczowa dla zapobiegania wysyłce niedozwolonych danych.

// Przykład: Logika zmiennej ssGTM weryfikująca stan ad_user_data
// Struktura: 11<ad_storage>1<analytics_storage>1<ad_user_data>1<ad_personalization>5
// ad_user_data znajduje się zatem na indeksie 6; indeks 7 to stały separator "1"
const gcd = getRequestQueryParameter("gcd");
const adUserData = gcd ? gcd.charAt(6) : "";
// Kody oznaczające zgodę: t (default), v (default i update), r (default denied, update granted), n (brak default, update granted)
if (adUserData === "t" || adUserData === "v" || adUserData === "r" || adUserData === "n") {
  return true; // ad_user_data ma status granted
}
return false;

Dzięki wdrożeniu reguł wyzwalających opartych na zdekodowanym stanie gcd, architektura danych zachowuje pełną zgodność z RODO oraz Aktem o rynkach cyfrowych (DMA), gwarantując blokadę pakietów marketingowych przy braku zgody użytkownika.

Jak poprawnie okablować zgodę

  1. Jak wdrożyć Google Consent Mode v2
  2. Jak działają pingi bez cookies w Google Consent Mode
  3. GA4 Consent Mode v2: parametr gcd, wyścigi CMP i debugowanie po stronie serwera
  4. Jak przekazać zgody z Client GTM do Server-Side GTM
Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Komentarze: 2

  1. Klaus Riedinger

    Tabela kodów literowych jest tym, czego brakuje w dokumentacji — bez niej ciąg gcd pozostaje szumem, który wszyscy pomijają w zakładce sieci.

    Pytanie o granice przydatności: w codziennej kontroli zwykle wystarcza parametr gcs. Kiedy naprawdę warto sięgać po gcd, a kiedy to nadmiar?

    1. Lukas Wojcik Autor

      Oba odpowiadają na różne pytania i dobrze jest je rozdzielić, zamiast zawsze czytać trudniejszy z nich.

      gcs mówi, jaki był stan zgody w chwili wysyłki żądania — i to wystarcza do kontroli typu „czy przy odmowie nadal coś się zapisuje”. Jest krótki, czytelny bez tabeli i nadaje się do zrzutu ekranu w dokumentacji.

      gcd mówi dodatkowo, skąd ten stan się wziął: czy istniał domyślny stan, czy przyszła aktualizacja, czy sygnał w ogóle nie został skonfigurowany. Ta różnica ma znaczenie w jednym konkretnym przypadku — przy podejrzeniu wyścigu z banerem. Tylko gcd rozróżnia „odmowa z domyślnego stanu, aktualizacja jeszcze nie dotarła” od „odmowa potwierdzona przez użytkownika”, a to są dwa zupełnie różne problemy: pierwszy jest usterką kolejności, drugi poprawnym działaniem.

Napisanie komentarza

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

ALL ARTICLES & CATEGORIES

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (43) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (25) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (15) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Śledź tę kategorię przez RSS