Tracking & Einwilligung

Google-Tags feuern vor dem Consent-Default der CMP (Ladereihenfolge)

Üblicher Schweregrad: hoch · Aufwand: gering

Woran du es erkennst

Das GTM-/gtag-Snippet startet, bevor die CMP ihren Consent-Mode-Default gesetzt hat: Im dataLayer steht gtm.js vor dem ersten `consent default`, und erste Google-Requests (g/collect, ccm/collect) tragen einen Status-Parameter ohne gesetzten Einwilligungsstatus (gcd=…l…, gcs=G1--) oder gar keinen.

Warum es zählt

Der Default steht zwar „richtig“ auf denied, kommt aber zu spät: Bis die CMP (oft asynchron geladen) ihn pusht, laufen Google-Tags ohne Einwilligungssignal — Messdaten gehen raus, Cookies wie _ga und _gcl_au werden gesetzt. Für Besucher aus dem EWR ist das eine Verarbeitung vor der Einwilligung (§ 25 TDDDG, Art. 6/7 DSGVO), obwohl Consent Mode „eingerichtet“ ist. Das Problem ist timing-abhängig und wird in Tests mit schnellem CMP-Ladevorgang leicht übersehen.

So behebst du es

  1. Den Consent-Default synchron und inline VOR dem GTM-Snippet im <head> setzen: window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('consent','default',{ ad_storage:'denied', analytics_storage:'denied', ad_user_data:'denied', ad_personalization:'denied', wait_for_update:500 });
  2. Die CMP nicht asynchron NACH dem GTM-Snippet laden: Entweder die CMP-Skripte (bzw. ihren Stub) vor GTM einbinden oder den Default direkt inline setzen und die CMP danach nur noch per `consent update` steuern lassen.
  3. Direkt eingebundene Google-Skripte (z. B. ein nachgeladenes gtag.js/Analytics-Snippet im Theme) entfernen oder über GTM mit Consent-Bedingung steuern — sie laufen sonst am Consent-Default vorbei.
  4. Kontrolle im Browser (Tag Assistant / Netzwerk-Tab, frischer Besuch ohne Cookies): Der erste Google-Request darf erst nach dem Default feuern und trägt gcd mit „p“ (denied) statt „l“ (kein Status).

Zum Nachlesen