Google Consent Mode v2 implementieren
Teil 1 von 4 der Reihe Einwilligung richtig verdrahten

Inhalt
Google Consent Mode v2 übermittelt Einwilligungsentscheidungen an Google-Tags. Das Banner erfasst die Auswahl; Consent Mode verändert das Messverhalten. Zur vollständigen Einrichtung gehören ein Ausgangszustand, Aktualisierungen nach einer Auswahl und die Wiederherstellung gespeicherter Einstellungen auf weiteren Seiten.
Google-Produktvorgaben und geltendes Recht sind getrennt zu prüfen. Consent Mode ist keine allgemeine gesetzliche Pflicht für jede europäische Website. Der Einbau stellt auch keine Rechtskonformität her. Die zulässige Verarbeitung entscheidet darüber, ob vor der Zustimmung begrenzte Anfragen erlaubt sind.
Vier Einstellungen mit unterschiedlichen Aufgaben
analytics_storage: analysebezogene Speicherung.ad_storage: werbebezogene Speicherung.ad_user_data: Übermittlung von Nutzerdaten für Werbung.ad_personalization: personalisierte Werbung.
Basic blockiert die betreffenden Tags bis zur Zustimmung. Advanced lädt einwilligungsabhängige Tags mit restriktiven Ausgangswerten und kann nach abgelehnter Speicherung cookielose Messdaten senden. „Cookielos“ bedeutet keinen vollständigen Verzicht auf Datenübertragung. Verhaltens- und Conversion-Modellierung haben zusätzliche Voraussetzungen und garantieren keine Wiederherstellung fehlender Messwerte.
Methode 1: Google Tag Manager
Unter Verwaltung → Containereinstellungen liegt die Option zum Aktivieren der Einwilligungsübersicht. Die Übersicht erleichtert die Prüfung der benötigten Zustimmungen je Tag.
Ein mit Consent Mode kompatibles CMP-Template verbindet Banner und GTM. Die Ausgangswerte gehören auf Consent Initialization – All Pages. Eigene Templates verwenden setDefaultConsentState und updateConsentState. Wartende gtag-Aufrufe in Custom HTML bieten nicht dieselbe Zusicherung der Reihenfolge. Ob getrennte Default- und Update-Tags nötig sind, hängt von der konkreten CMP-Anbindung ab.
Integrierte Einwilligungsprüfungen verändern das Verhalten eines unterstützten Google-Tags. Zusätzliche Einwilligungsprüfungen verhindern dagegen die Ausführung, bis sämtliche genannten Zustimmungen vorliegen. Bei einer freigegebenen Advanced-Einrichtung lässt „Keine zusätzliche Einwilligung erforderlich“ die integrierten Prüfungen aktiv. Basic blockiert die betreffenden Tags bewusst. Ein fehlender Ping ist deshalb allein kein Grund zum Entfernen einer Sperre.
Methode 2: direkte Einbindung mit gtag.js
Das folgende Beispiel zeigt Advanced. An beiden Stellen benötigt die Platzhalter-Mess-ID die tatsächliche GA4-ID. Die Ausgangswerte stehen vor den Messbefehlen. Ohne regionale Einschränkung gelten diese Werte weltweit.
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('consent', 'default', {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'denied',
wait_for_update: 500
});
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>Die 500 ms sind eine beispielhafte Wartezeit für ein asynchrones Einwilligungsupdate. Der Wert ist weder ein allgemeiner Mindestwert noch eine Frist, nach deren Ablauf Zustimmung entsteht. Nach Ablauf gelten weiterhin die abgelehnten Ausgangswerte.
Updates für Zustimmung, Ablehnung und Widerruf
Die folgende Funktion erwartet vier ausdrückliche boolesche Entscheidungen. Fehlende Werte und andere Datentypen ergeben denied. Die Banner-Anbindung ruft die Funktion nach einer bestätigten Auswahl, nach Widerruf und beim Wiederherstellen einer gültigen gespeicherten Entscheidung auf. Der bloße Seitenaufruf begründet keinen solchen Aufruf mit Zustimmung.
function applyGoogleConsent(choice) {
const state = value => value === true ? 'granted' : 'denied';
gtag('consent', 'update', {
ad_storage: state(choice.adStorage),
ad_user_data: state(choice.adUserData),
ad_personalization: state(choice.adPersonalization),
analytics_storage: state(choice.analyticsStorage)
});
}Die Funktion implementiert weder ein Banner noch die Speicherung der Auswahl. Dafür bleibt die CMP zuständig, einschließlich Gültigkeit, Ablauf und Wiederherstellung auf jeder Seite. Updates müssen Google vor einem Seitenwechsel erreichen. Ein einzelnes gespeichertes Kennzeichen „akzeptiert“ bildet getrennte Kategorien nicht ab.
Prüfung vor der Freigabe
Tag Assistant zeigt die Ausgangswerte im ersten Consent-Ereignis und spätere Aktualisierungen. Zur Prüfung gehören Erstbesuch, vollständige Ablehnung, Zustimmung, Teilauswahl, Folgeseite und Widerruf. Netzwerk- und Speicheransicht des Browsers zeigen das tatsächliche Verhalten im gewählten Basic- oder Advanced-Modus.
Eine fehlende Anfrage kann auch durch Browserblocker, Skriptfehler oder einen eigenen Endpunkt entstehen. Eine ausbleibende Anfrage an google-analytics.com beweist keine bestimmte GTM-Ausnahme.
Optional: URL-Passthrough
URL-Passthrough kann Klickinformationen über Links derselben Domain anstelle von Werbe-Cookies weiterreichen. Bei direktem gtag.js gehört die Einstellung vor config-Befehle:
gtag('set', 'url_passthrough', true);Die Option benötigt kompatible Tags und eine einheitliche Konfiguration. Weiterleitungen und Anwendungsnavigation benötigen Tests mit den zusätzlichen Parametern. URL-Parameter können in Protokolle und Referrer gelangen; die Aktivierung benötigt deshalb eine bewusste Verarbeitungsentscheidung. ads_data_redaction ist eine getrennte Einstellung zum Entfernen von Anzeigenklickinformationen aus betreffenden Anfragen bei verweigerter Werbespeicherung.
Fragen und Antworten
Wartet wait_for_update bis zur Entscheidung?
Nein. Die begrenzte Wartezeit berücksichtigt eine asynchrone Initialisierung. Eine spätere bestätigte Auswahl benötigt weiterhin ein Update.
Ist das Blockieren eines Google-Tags immer falsch?
Nein. Im Basic-Modus ist die Sperre beabsichtigt. Ein Fehler besteht erst bei einer Abweichung von der gewählten und zulässigen Einrichtung.