GA4 Consent Mode v2: Der gcd-Parameter entschlüsselt (Deep Dive in Network Requests)
Teil 3 von 4 der Reihe Einwilligung richtig verdrahten
GA4 Consent Mode v2: Der gcd-Parameter entschlüsselt (Deep Dive in Network Requests)
In modernen Digital-Analytics-Architekturen erfordert die Validierung des Datenschutzes weit mehr als die reine Kontrolle, ob ein Cookie-Banner auf der Website sichtbar ist. Während der Standard-Parameter gcs in den Netzwerk-Requests von Google Analytics 4 (GA4) nur ein simples Gesamtergebnis liefert (wie etwa g110 oder g111), verbirgt sich die exakte Logik des Google Consent Mode v2 im kryptischen gcd-Parameter (z. B. 11r1r1r1r5).
Diese technische Analyse schlüsselt die Bit-Logik des gcd-Strings präzise auf, zeigt Methoden zum Debugging im Server-Side Google Tag Manager (ssGTM) und demonstriert, wie sich Race-Conditions zwischen Consent Management Plattformen (wie Usercentrics) und dem initialen Pageview zuverlässig identifizieren lassen.
1. Die Struktur des gcd-Parameters
Im Gegensatz zum gcs-Wert, der ausschließlich meldet, ob Werbe- oder Analyse-Cookies zugestimmt wurde, bildet der gcd-Parameter den vollständigen Lebenszyklus jedes einzelnen Consent-Signals ab. Er zeigt exakt, ob ein Status durch einen Default-Befehl initialisiert, per User-Interaktion aktualisiert (Update) oder gar nicht konfiguriert wurde.
Ein typischer gcd-String folgt immer derselben Struktur: 11<ad_storage>1<analytics_storage>1<ad_user_data>1<ad_personalization>5
| Buchstabencode | Consent-Status | Technische Bedeutung |
|---|---|---|
p | Denied (Default) | Kein Default-Befehl konfiguriert; implizite Ablehnung greift. |
q / r | Denied (Default) | Explizit konfigurierte Ablehnung im Default-Status. |
t | Granted (Default) | Explizit konfigurierte Zustimmung im Default-Status. |
u | Denied (Update) | Aktualisierung auf Ablehnung nach CMP-Interaktion. |
v | Granted (Update) | Aktualisierung auf Zustimmung nach vorherigem Default-Denied. |
l / m / n | Granted / Denied | Spezifische Varianzen für CMP-Templates und Tag-Gateways. |
Der Wert gcd=11r1r1r1r5 steht beispielsweise für eine restriktive Default-Konfiguration, bei der alle vier Parameter (ad_storage, analytics_storage, ad_user_data, ad_personalization) explizit auf Ablehnung stehen (r). Ein String wie gcd=11v1v1v1v5 verifiziert hingegen, dass ein Update-Event erfolgreich verarbeitet wurde und alle Signale auf Zustimmung gewechselt haben (v).
2. Identifikation von CMP-Race-Conditions
Ein häufiger Architekturfehler in Analytics-Setups ist eine Race-Condition zwischen der Initialisierung der CMP (z. B. Usercentrics) und dem Auslösen des ersten GA4-Configuration-Tags. Wenn wiederkehrende Besucher mit bereits gespeicherter Zustimmung beim ersten Pageview im Netzwerk-Request den Code r statt v aufweisen, wurde das Tracking-Tag abgefeuert, bevor die CMP das Update-Event in den DataLayer pushen konnte.
- Symptom: Der erste Pageview-Hit trägt
gcd=11r1r1r1r5(Default Denied), nachfolgende Event-Hits jedochgcd=11v1v1v1v5. - Ursache: Das GA4-Tag wird über All Pages oder Consent Initialization ausgelöst, ohne die asynchrone Status-Auflösung der CMP abzuwarten.
- Lösung: Tracking-Tags ausschließlich an spezifische CMP-Events (wie
consent_status) koppeln oder den Parameterwait_for_updatemit 500 ms Latenz im Default-Snippet setzen.
3. Server-Side GTM Debugging & Validierung
Im Server-Side Google Tag Manager (ssGTM) dient der eingehende GA4-HTTP-Request als Datenträger für sämtliche nachgelagerten Marketing-Tags wie Meta Conversions API (CAPI) und Google Ads. Die Prüfung des gcd-Parameters im ssGTM Preview Mode ist zwingend erforderlich, um illegale Datenweiterleitungen zu unterbinden.
// Beispiel: ssGTM Custom Variable zur Validierung von ad_user_data
const gcd = getRequestQueryParameter("gcd");
if (gcd && gcd.charAt(7) === "v") {
return true; // ad_user_data liegt als granted per Update vor
}
return false;
Durch die Implementierung serverseitiger Trigger-Bedingungen auf Basis des decodierten gcd-Status bleibt die Datenarchitektur absolut rechtskonform (DSGVO & DMA) und verhindert zuverlässig den Versand von Marketing-Payloads, solange sich der Consent im Default-Denied-Zustand befindet.
Einwilligung richtig verdrahten
- Google Consent Mode v2: Implementierung via GTM und Vanilla JS
- Basic vs. Advanced Consent Mode: Die Architektur der Pings
- GA4 Consent Mode v2: Der gcd-Parameter entschlüsselt (Deep Dive in Network Requests)
- Datenschutz-Architektur: Übertragung des Consent-Status von Client-GTM zu Server-Side GTM (Usercentrics, Meta Pixel & CAPI)