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

Inhalt
- Warum ist Consent Mode v2 so entscheidend?
- Was bewirkt er für Google-Tags (Ads, Floodlights, SA360, GA4)?
- Methode 1: Implementierung über Google Tag Manager (GTM)
- Methode 2: Implementierung via Vanilla JavaScript
- Zusammenfassung
- Signale prüfen und Anzeigenklicks ohne Cookies erhalten
- Fragen und Antworten
- Quellen
Wer im Europäischen Wirtschaftsraum (EWR) tätig ist oder Daten europäischer Nutzer verarbeitet, für den ist der Google Consent Mode v2 keine “Nice-to-have”-Funktion mehr, sondern eine zwingende Anforderung (seit März 2024). Durch das Gesetz über digitale Märkte (DMA) hat Google die Datenverarbeitung seiner Werbe- und Analyseplattformen grundlegend geändert.
Ein Fehlen des Consent Mode v2 bedeutet den Verlust von Remarketing-Funktionen und eine drastische Verschlechterung der Conversion-Messung. Das Ziel ist es, die Datenqualität zu erhalten und gleichzeitig strikt die Datenschutzprotokolle einzuhalten. Hier ist eine detaillierte Anleitung, warum Consent Mode v2 wichtig ist, wie er den GMP-Stack beeinflusst und wie er korrekt implementiert wird.
Warum ist Consent Mode v2 so entscheidend?
Im Kern schlägt der Consent Mode die Brücke zwischen den Privatsphäre-Entscheidungen der Nutzer und den Datenerfassungssystemen. Wenn ein Nutzer mit dem Cookie-Banner interagiert, kommuniziert der Consent Mode dessen Auswahl (granted oder denied) an die Google-Tags. Die Einführung der Version 2 brachte zwei kritische neue Parameter mit Fokus auf Werbung:
- ad_user_data: Setzt die Zustimmung für das Senden von Nutzerdaten an Google zu Werbezwecken.
- ad_personalization: Setzt die Zustimmung für personalisierte Werbung (Remarketing).
Was bewirkt er für Google-Tags (Ads, Floodlights, SA360, GA4)?
Bei korrekter Konfiguration im “Advanced Consent Mode” laden die Tags vor der Entscheidung, ändern aber ihr Verhalten drastisch basierend auf dem Zustimmungsstatus:
- Google Analytics 4 (GA4): Wenn
analytics_storageverweigert wird, liest oder schreibt GA4 keine Cookies. Stattdessen sendet es “Cookieless Pings”. GA4 nutzt maschinelles Lernen, um mittels Verhaltensmodellierung die Datenlücken zu schließen, ohne die Privatsphäre zu verletzen. - Google Ads & SA360: Wenn
ad_storageoderad_user_dataverweigert wird, senden Werbe-Tags anonyme Conversion-Pings. Die Google-Engine nutzt dann Conversion-Modellierung, um verlorene Conversions wiederherzustellen, damit ROAS-Berechnungen und automatische Gebotsstrategien stabil bleiben. - Floodlights (Campaign Manager 360): Ähnlich wie bei Google Ads respektieren Floodlight-Tags den Zustimmungsstatus und nutzen aggregierte Daten und Modellierung zur genauen Conversion-Zuordnung in Display- und Video-Kampagnen, ohne auf Third-Party-Cookies angewiesen zu sein.
Ohne Version 2 verwirft Google nicht zugestimmte Daten, was Messung und Zielgruppenaufbau lahmlegt.
Methode 1: Implementierung über Google Tag Manager (GTM)
Für die meisten Setups ist GTM der sauberste Weg, um Zustimmungen zu verwalten, da er als zentrales Nervensystem der Tracking-Architektur dient.
Schritt 1: Consent Overview aktivieren In den GTM-Arbeitsbereich > Verwaltung > Containereinstellungen wechseln und “Consent Overview” aktivieren. Dies schaltet ein Schild-Symbol in der Tag-Ansicht frei, um Zustimmungen einfach zu verwalten.
Schritt 2: CMP-Template oder Consent Mode Template nutzen Anstatt eigene Logik zu bauen, nutze ein zertifiziertes CMP (z.B. Cookiebot, OneTrust, CookieYes) aus der Community Template Gallery.
- Das CMP-Template hinzufügen und mit der eigenen CMP-ID konfigurieren.
- Als Trigger dient Consent Initialization – All Pages. Dies ist ein spezieller Trigger, der vor normalen Seitenaufrufen feuert und garantiert, dass Zustimmungsstandards vor Google-Tags gesetzt werden.
- Wenn das CMP direkt implementiert ist, empfiehlt sich das Template “gtm-templates-simo-ahava”. Zwei Instanzen als Tags hinzufügen:
- Default Tag: Feuert bei Consent Initialization, alles auf “Denied”.
- Update Tag: Feuert bei Consent Update vom CMP.
Schritt 3: Tag-Zustimmungseinstellungen konfigurieren Google-Tags (GA4, Google Ads) haben eingebaute Prüfungen. Man muss sie nicht blockieren:
- Den GA4- oder Google Ads-Tag öffnen.
- Zu Erweiterte Einstellungen > Zustimmungseinstellungen wechseln.
- Stelle sicher, dass er
ad_storageund/oderanalytics_storagebenötigt. Der Tag erledigt den Rest – er feuert normal bei Zustimmung oder sendet anonyme Pings bei Ablehnung.
Methode 2: Implementierung via Vanilla JavaScript
Bei hochoptimierten Frontends oder SPAs, bei denen GTM zu schwerfällig ist, ist die direkte Implementierung via Vanilla JS der richtige Weg.
1. Der Standardzustand (Platzierung im <head>) Das Skript muss vor gtag.js ausgeführt werden. Es weist Google an, standardmäßig alles abzulehnen.
<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>2. Der Aktualisierungszustand (getriggert durch Nutzeraktion) Wenn der Nutzer auf “Akzeptieren” klickt, muss ein Update an das dataLayer gepusht werden.
document.getElementById('btn-accept-all').
addEventListener('click', function() {
gtag('consent', 'update', {
'ad_storage': 'granted',
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'analytics_storage': 'granted'
});
document.getElementById('cookie-banner').style.display = 'none';
});Falls nötig, ist die ID des Buttons “btn-accept-all” anzupassen.
Zusammenfassung
Die Implementierung des Google Consent Mode v2 ist der definitive Weg, um digitale Analytics- und Werbeinfrastrukturen zukunftssicher zu machen. Ob über die GTM-Schnittstelle oder per Vanilla JavaScript – die korrekte Definition von Standardzuständen und Aktualisierungen stellt die Rechtskonformität sicher und ermöglicht es den Algorithmen von Google gleichzeitig, Datenlücken zu schließen.
Signale prüfen und Anzeigenklicks ohne Cookies erhalten
Ob Standard- und Aktualisierungsbefehl wie vorgesehen ankommen, zeigt der Tag Assistant, den die Vorschau von GTM öffnet. In der Summary zeigt das früheste Consent-Ereignis unter API Call den Standardzustand mit den Parametern ad_storage, ad_user_data, ad_personalization und analytics_storage. Nach einer Auswahl im Banner muss das jüngste Consent-Ereignis die aktualisierten Werte tragen. Der Tab Consent im Bereich Output fasst beides in den Spalten On-page Default und On-page Update zusammen.
URL-Passthrough
Nach einem Anzeigenklick können Informationen zum Klick als Query-Parameter an die URL der Landingpage angehängt werden. Normalerweise landen sie in First-Party-Cookies, was bei verweigertem ad_storage nicht möglich ist. URL-Passthrough trägt sie stattdessen in der URL weiter: Interne Links können dann die Parameter gclid, dclid, gclsrc, _gl und wbraid erhalten.
gtag('set', 'url_passthrough', true);
In GTM geschieht dasselbe über ein Feld url_passthrough mit dem Wert true im Google-Tag. Google nennt die Bedingungen: ein einwilligungsfähiges Google-Tag auf der Seite, ein implementierter Consent Mode, ein ausgehender Link auf dieselbe Domain wie die aktuelle Seite und, bei Google-Ads- und Floodlight-Tags, eine GCLID oder DCLID in der URL. Weiterleitungen müssen die Parameter erhalten, Analytics-Berichte sollten sie in Seiten-URLs ignorieren, und Seiten, deren Inhalt von Query-Parametern abhängt, müssen sie vertragen.
Verwandt ist gtag('set', 'ads_data_redaction', true): Solange ad_storage verweigert ist, schwärzen Google-Ads- und Floodlight-Tags dann die Klick-IDs in ihren Netzwerkanfragen.
Fragen und Antworten
Wonach richtet sich der Wert von wait_for_update, wenn Besucher sich oft erst nach einigen Sekunden entscheiden?
Der Wert wartet nicht auf die Entscheidung, sondern auf das Consent-Werkzeug. Er sagt den Google-Tags, wie lange sie auf ein mögliches update warten sollen, bevor sie mit dem Standard arbeiten. Gemeint ist damit die Ladezeit des Banner-Skripts, nicht die Bedenkzeit davor.
Das ist auch der Grund, warum ein großzügiger Wert nichts verbessert. Wer zehn Sekunden einträgt, verzögert jede Messung um zehn Sekunden für alle, die gar nicht klicken, und die Entscheidung, die danach fällt, wird ohnehin über update nachgereicht und wirkt ab diesem Moment.
Brauchbar ist deshalb ein gemessener Wert statt eines geschätzten: Im Netzwerk-Tab lässt sich ablesen, wann das CMP-Skript geladen ist, und der Wert sollte knapp darüber liegen. Die 500 Millisekunden aus dem Beispiel entsprechen dem Mindestwert, den Google nahelegt, sobald Netzwerkanfragen im Spiel sind; mehr lohnt nur, wenn die Messung es verlangt. Alles darüber verschiebt nur die cookielosen Pings nach hinten, die sonst längst unterwegs wären.
Schadet es, den GA4-Tag bei fehlender Zustimmung zusätzlich per Ausnahme zu blockieren?
Ja, und zwar unsichtbar. Ein hart blockierter Tag sendet gar nichts, auch keinen cookielosen Ping.
Diese Pings sind aber die Datengrundlage der Modellierung, die den Verzicht auf Cookies ausgleichen soll. Der Container arbeitet damit formal im erweiterten Modus und liefert die Daten eines einfachen: Die Zustimmungseinstellungen im Tag sind gesetzt, die Modellierung bekommt trotzdem nichts zu rechnen, und in den Berichten fehlt schlicht der Anteil der ablehnenden Besucher.
Nachweisen lässt sich das in wenigen Minuten: Nach einer Ablehnung im privaten Fenster geht im erweiterten Modus eine Anfrage an google-analytics.com hinaus, nur ohne Identifikatoren. Geht überhaupt keine hinaus, greift noch die Ausnahme, und die ist dann ersatzlos zu entfernen, denn die eingebaute Prüfung im Tag erledigt dieselbe Aufgabe, nur ohne die Pings zu unterdrücken.