Ratgeber

Google Consent Mode v2 einrichten – Anleitung mit Code

Aktualisiert:

Google Consent Mode v2 teilt den Google-Tags mit, ob ein Besucher Cookies für Analyse und Werbung zugestimmt hat. Ohne ihn nimmt Google Besucher aus dem Europäischen Wirtschaftsraum nicht in deine Werbe-Zielgruppen auf. Hier findest du eine Einrichtung mit gtag.js zum Kopieren – und wie du prüfst, ob sie funktioniert.

Was Consent Mode v2 ist

Consent Mode ist eine Reihe von Signalen, die deine Website an Google-Tags sendet (Google Analytics 4, Google Ads, Floodlight). Jedes Signal ist granted oder denied, und die Tags passen ihr Verhalten an. Version 2 vom November 2023 hat zwei Signale zu Werbedaten ergänzt:

SignalWas es steuert
ad_storageSpeicherung, etwa Cookies, für Werbung
analytics_storageSpeicherung, etwa Cookies, für Analyse (zum Beispiel Besuchsdauer)
ad_user_data (neu in v2)Übermittlung werbebezogener Nutzerdaten an Google
ad_personalization (neu in v2)Personalisierte Werbung, etwa Remarketing

Wer ihn braucht

Seit März 2024 erwartet Google Einwilligungssignale für Besucher im Europäischen Wirtschaftsraum. Fehlen sie, landen diese Besucher nicht in den Zielgruppen der Google-Werbeprodukte, Remarketing und personalisierte Anzeigen funktionieren für sie nicht mehr. Für personalisierte Werbung müssen sowohl ad_user_data als auch ad_personalization erteilt sein.

Hat deine Website keine Besucher aus Europa und nutzt du kein Google Ads, ist Consent Mode optional. Nutzt du eine von Google zertifizierte Consent-Management-Plattform, sendet sie die Signale wahrscheinlich schon – prüfe zuerst deren Einstellungen.

Basis- oder erweiterter Modus

BasisErweitert
Bevor der Besucher antwortetGoogle-Tags werden gar nicht geladenTags laden mit dem Standardzustand (meist denied)
Wenn der Besucher ablehntEs wird nichts an Google gesendetCookielose Pings ohne Kennungen werden gesendet
Conversion-ModellierungAllgemeines ModellGenaueres, werbetreibendenspezifisches Modell

Der Code unten ist die erweiterte Einrichtung: Die Tags laden sofort und warten im abgelehnten Zustand auf die Antwort. Für den Basis-Modus lädst du das Google-Tag erst nach der Zustimmung.

Schritt 1. Standardwerte vor dem Google-Tag setzen

Der Standardzustand muss gesetzt sein, bevor das Tag etwas sendet. Füge dieses Snippet im <head> oberhalb des Google-Tags bzw. des Tag-Manager-Snippets ein:

Standard: alles abgelehnt, bis der Besucher antwortethtml
<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, // ms Wartezeit auf ein asynchron geladenes Banner
  });
</script>

<!-- danach das Google-Tag oder das Google-Tag-Manager-Snippet -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"></script>
<script>
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXX');
</script>

Um nur in bestimmten Ländern standardmäßig abzulehnen, ergänzt du region mit ISO-Codes, etwa region: ['DE', 'AT', 'CH']. Standardwerte ohne region gelten überall sonst.

Schritt 2. Die Entscheidung des Besuchers senden

Klickt der Besucher einen Button im Banner, rufst du update auf. Speichere die Entscheidung und sende sie zu Beginn jedes weiteren Seitenaufrufs erneut, direkt nach den Standardwerten:

Ein minimales Bannerhtml
<div id="cookie-banner" hidden>
  <p>Wir nutzen Cookies für Analyse und Werbung. Einverstanden?</p>
  <button type="button" data-choice="granted">Akzeptieren</button>
  <button type="button" data-choice="denied">Ablehnen</button>
</div>

<script>
  const KEY = 'cookie_choice';
  const send = (state) => gtag('consent', 'update', {
    ad_storage: state,
    ad_user_data: state,
    ad_personalization: state,
    analytics_storage: state,
  });

  const saved = localStorage.getItem(KEY);
  const banner = document.getElementById('cookie-banner');
  if (saved) send(saved); else banner.hidden = false;

  banner.addEventListener('click', (e) => {
    const state = e.target.dataset.choice;
    if (!state) return;
    localStorage.setItem(KEY, state);
    send(state);
    banner.hidden = true;
  });
</script>

Optional: url_passthrough und ads_data_redaction

Zwei Einstellungen helfen, wenn Werbe-Cookies abgelehnt sind:

gtag('set', 'url_passthrough', true);     // Klickdaten in Links statt in Cookies weitergeben
gtag('set', 'ads_data_redaction', true);  // Klick-IDs schwärzen, solange ad_storage abgelehnt ist

Mit Google Tag Manager

Im Tag Manager gehören die Standardwerte in ein Tag mit dem Trigger Consent Initialization – All Pages (Einwilligungsinitialisierung), der vor allen anderen auslöst. Die meisten Consent-Plattformen bieten dafür eine fertige Vorlage in der Community Template Gallery; das update sendet dann die Plattform, sobald der Besucher antwortet.

Consent Mode prüfen

  1. Öffne deine Website über Tag Assistant und sieh dir den Tab Consent an: Zuerst muss der Standardzustand erscheinen, nach einem Klick im Banner das Update.
  2. Öffne in den Entwicklertools des Browsers den Tab Netzwerk und filtere nach collect: Anfragen an Google Analytics enthalten den Parameter gcs, der nach der Zustimmung von G100 (abgelehnt) zu G111 (erteilt) wechselt.
  3. Lade die Seite nach der Zustimmung neu: Die gespeicherte Entscheidung muss erneut gesendet werden, ohne dass das Banner erscheint.

Ein Banner für Google und deine anderen Tools

Consent Mode betrifft nur Google-Tags. Andere Skripte auf der Website brauchen dieselbe Antwort. Das Widget von Sitecog zum Beispiel hat einen eigenen Einwilligungsmodus: Ergänze data-consent="required" an seinem Tag, dann wartet die Analyse auf die Einwilligung, während Formulare und Live-Chat weiter funktionieren. Google-Einwilligungssignale sendet es nicht – gib die Antwort aus deinem Banner an beide weiter:

Google und Sitecog mit einem Klickhtml
<script src="https://widget.sitecog.com/widget.js" data-consent="required" defer></script>

<script>
  window.crmConsent = window.crmConsent || [];   // eine Warteschlange: funktioniert auch vor widget.js

  function applyChoice(state) {
    gtag('consent', 'update', {
      ad_storage: state,
      ad_user_data: state,
      ad_personalization: state,
      analytics_storage: state,
    });
    crmConsent.push(state === 'granted' ? 'grant' : 'deny');
  }
</script>

Häufige Fragen

Ist Consent Mode ein Cookie-Banner?

Nein. Consent Mode gibt nur die Entscheidung des Besuchers an Google-Tags weiter. Du brauchst weiterhin ein Banner (eigenes oder von einer Consent-Management-Plattform), das fragt und den update-Befehl aufruft.

Brauche ich Consent Mode v2 außerhalb des EWR?

Google verlangt Einwilligungssignale für Besucher im Europäischen Wirtschaftsraum. Anderswo ist es optional, du kannst es aber trotzdem nutzen – mit dem Parameter region lehnst du standardmäßig nur in den Ländern ab, in denen es nötig ist.

Was passiert, wenn ein Besucher Cookies ablehnt?

Im Basis-Modus senden die Google-Tags nichts. Im erweiterten Modus senden sie cookielose Pings ohne Kennungen, die Google für die Conversion-Modellierung nutzt.

Macht Consent Mode meine Website DSGVO-konform?

Nicht allein. Consent Mode respektiert die Entscheidung des Besuchers; ob du richtig, rechtzeitig und verständlich fragst, hängt von deinem Banner und deiner Datenschutzerklärung ab.

Richtet Sitecog Google Consent Mode für mich ein?

Nein. Das Sitecog-Widget hat einen eigenen Einwilligungsmodus für seine Analyse und sendet keine Google-Einwilligungssignale. Verbinde beides mit demselben Banner, wie in dieser Anleitung gezeigt.