Skip to content

Digital Analytics Blog

von Marcus Stade

Menu
Menu
Worklfow des Tracking Consents

Google Analytics Einwilligungslösung im Google Tag Manager umsetzen

Posted on 19. November 201920. November 2019 by mstade

Nach Einschätzung der Datenschutzbehörden bedarf die Nutzung von Google Analytics der Einwillung des Nutzers. Das heißt, ein bloßer Hinweis, beispielsweise ein Cookie Banner ist nicht ausreichend. Auf dem Markt existieren schon fertige Consent-Management-Lösungen, die einfach einzubauen sind. Hier stelle ich einen technischen (nicht rechtlichen 😉 ) Proof of Concept vor, eine Consent Management Lösung ausschließlich im Google Tag Manager umzusetzen. Diese Umsetzung ist sehr einfach von der Ausführung kann aber flexibel an die unterschiedlichen Bedürfnisse angepasst werden.

Auswahl von bestehenden Lösungen

Für eine bessere Übersicht vorab einige Consent Management Lösungen:

  • OneTrust
  • TrustArc
  • TrustCommander
  • CookieRobot

Workflow

Der Workflow für die beschriebene Consent-Lösung sieht folgendermaßen aus:

Worklfow des Tracking Consents
Worklfow der Tracking Consent Lösung

Vorbereitungen

Für das Speichern der Einstellungen werden neben der Trackingeinstellung auch ein Identifier, im folgenden GUID genannt, genutzt. Diese ist eindeutig pro User. Da es vielfältige Implementierungsmöglichkeiten gibt, wird im folgenden nicht darauf eingegangen, sondern die GUID in der gleichnamigen Variable vorrausgesetzt. Der Algorithmus zur Implementierung findet sich u.a. hier.

Schritt 1: Consent Popup ausspielen

Für das Banner wird das HTML und CSS-Snippet per Custom HTML Tag im GTM direkt in die Seite eingefügt. Das erfolgt in vier Schritten:

  1. Schritt: CSS einfügen
    Hier wird folgender Code verwendet, der das Banner nur formatiert, unsichtbar im Hintergrung platziert und den Schalter für Tracking auf „AUS“ setzt.
  2. Schritt: HTML einfügen
    Danach wird der HTML Code für das Banner eingefügt.
  3. Schritt: Einstellungen für das aktuelle Tracking setzen
    Hier wird der Schalter auf den aktuellen Wert gesetzt.
  4. Schritt: dataLayer Event senden
    Sind alle Schritte erledigt, wird ein dataLayer Event ausgelöst.

Diese vier Schritte werden in ein Custom-HTML Tag, hier „CC-Inject“ abgebildet:

Tracking Consent Lösung einfügen

Mit document.head.innerHTML += werden die CSS Elemente für das Banner eingefügt. Mit document.body.innerHTML folgen dann die HTML Elemente. Die Elemente sind noch auf unsichtbar und werden auf allen Seiten auf Pageview eingefügt. Somit ist das Banner immer im Hintergrund und kann einfach ein- und ausgeblendet werden.

Wenn der User in der Vergangenheit bereits eine Entscheidung getroffen hat, soll natürlich der aktuelle Stand angezeigt werden. Dies erfolgt in der nächsten Codezeile. In diesem Fall liegt der aktuelle Wert der Einstellungen (true wenn Tracking aktiviert oder false wenn deaktiviert) im LocalStorage des Browser mit dem Key „Tracking“. Wie dieser Wert an diese Stelle kommt, wird später erläutert.

Dieser wird über eine Custom Javascript Variable, hier JS – Tracking, im Google Tag Manager ausgelesen:

Local Storage Variable für Tracking
JS-Tracking: Local Storage Variable für Tracking

Der Status des Schalters für das Tracking wird dann auf den Wert gesetzt.

Consent-Toogle-setzen
Setzen des Schalters auf den aktuellen Wert

Nachdem der Code in die Seite eingefügt wurde, wird ein Event an den dataLayer gesendet. Dieses kann dazu verwendet werden, um sicherzugehen, das der Code bereits auf der Seite ist bevor er verwendet wird.

Um das Banner Nutzern zu zeigen, die bisher noch nicht auf der Seite waren (bzw. bisher keine Entscheidung getroffen haben), wird ein Pageview Trigger angelegt, der den Wert von JS – Tracking darauf prüft, das dieser weder true oder false ist.

Undefined Consent bei Pageview
Trigger zur Einblendung des Consent Banners bei Pageview

An diesen Trigger wird das Tag “ CC – DisplayTrackingSettings “ gebunden. Dies blendet das bereits eingebundene aber bisher unsichtbare Banner ein. Dies erfolgt durch die Änderung von „display=none“ auf „display=block“.

Consent Einblenden
Das Consent-Banner per Tag einblenden

Um dem User eine Widerspruchsmöglichkeit zu geben, kann ein zusätzlicher Trigger eingerichtet, so das beim Klick auf einen Link ebenfalls das Banner eingeblendet werden kann.

Damit ist die Ausspielung des Consent Banners komplett. Im nächsten Schritt schauen wir uns an, was im Banner selbst passiert.

Einstellungen des Users speichern

Die Funktionalität des Consent Banners ist bereits mit dem Tag „CC-InjectLayer“ integriert. Der Schalter ist per HTML und CSS eingebunden und hat selbst keine andere Funktion, als den Status anzuzeigen. Erst beim Klick auf den Button, hier „Weiter“ wird das Ergebnis gespeichert. Im Tag „CC-InjectLayer“ ist bei dem Button ein onclick-Event hinterlegt, das das Event „trackingupdate“ in den dataLayer pusht.

Trackingevent bei Consent-Auswahl
Auslöser des Events ‚trackigupdate‘ im dataLayer

Dieses Events dient als Trigger für drei Tags. Hier konzentrieren wir uns auf den Tag „CC – SaveTrackingSettings“. Diese enthält drei Anweisungen.

Zuerst wird die GUID in den LocalStorage geschrieben, danach der Wert der Checkbox. Der Wert der Checkbox wird über die Custom Javascript Variable „Tracking Checked“ eingelesen und entspricht damit der gewünschten Einstellung.

Checkbox auslesen für Trackingeinstellung
Checkbox auslesen für Trackingeinstellung
Trackingeinstellung speichern und Banner ausblenden
Trackingeinstellung speichern und Banner ausblenden

Danach wird das Banner wieder ausgeblendet.

Bei jedem Event im Google Tag Manager wird eine Variable im Google Tag Manager aktualisiert, entsprechend ist in der Variable „JS-Tracking“ der neue Wert sofort vorhanden. In den Trigger für Tracking-Tags kann dieser dann als Bedingung hinzugefügt werden, so das eine Ausführung nur erfolgt, wenn dieser Wert true ist.

Damit ist die Grundfunktionalität komplett.

Landingpage-Tracking von neuen Usern ergänzen

Solange der User dem Tracking nicht zugestimmt hat, soll kein Pageview ausgelöst werden. Entsprechend wird der Pageview erst ausgelöst, wenn der User das Banner schließt und dem Tracking zugestimmt wurde. Hier wird ein Trigger auf das Event ‚trackingudate‘ mit dem Wert true in JS -Tracking genutzt.

Pageview nach Trackingconsent
Pageview nach Trackingconsent

Damit wird auch ein Pageview gesendet, wenn der User das Banner mit der Tracking Zustimmung verlässt. Damit ein mehrfaches Senden des Pageviews unterbunden wird, kann die Einstellung für das Google Analytics Tag auf „Once per Page“ gesetzt werden.

Pageview nur einmal pro Seite ausführen
Pageview nur einmal pro Seite ausführen

Änderung der Einstellung an BigQuery senden

Um zu dokumentieren, welche Einstellungen User vorgenommen haben, kann die GUID und die gespeicherten Einstellung an BigQuery gesendet werden.

Hierfür wird ein BigQuery Table angelegt. In diesem Beispiel wird lediglich die GUID, die Trackingeinstellung und die Zeitangabe gespeichert. Je nach Anforderungen können natürlich auch andere Daten dort gespeichert werden.

BigQuery Table zur Speicherung der Daten
BigQuery Table zur Speicherung der Daten

Um die Daten nach BigQuery zu schreiben, wird ein Endpoint benötigt, der diese Daten aus dem Google Tag Manager empfängt und in BigQuery schreibt. Hier kommt eine Cloud Function, geschrieben in Python, ins Spiel, die als Endpoint die zwei Parameter als GET-Parameter erwartet, einen Timestamp errechnet und alles nach BigQuery schreibt.

Rohversion der Cloudfunction
Rohversion der Cloudfunction

Danach muss nur noch ein Tag im Google Tag Manager mit dem Trigger ‚trackingupdate‘ angelegt werden. Der Tag heißt hier „SendtoBQ“ und ruft den Endpoint in einem Javascript Tag auf.

Aufruf der Cloudfunction
Aufruf der Cloudfunction

Damit sind diese Daten in BiqQuery verfügbar und es besteht die Möglichkeit, auszuwerten, wie das Banner genutzt wird.

1 thought on “Google Analytics Einwilligungslösung im Google Tag Manager umsetzen”

  1. Pingback: BP 3.04: Opt-Out, Opt-In, Consent... was denn nun? Podcast

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Keep in Touch

Supporter: InPignus GmbH

ImPignus

mohrstade

mohrstade.de

Analytics Pioneers

Schlagwörter

App+Web App-Tracking Basic Big Query Customer Data Platform DataQuality DataStudio Events Google Analytics für Firebase ITP Machine Learning Property PWA Quick-Tipp User-Journey Wordpress Überblick

Podcast Empfehlung:

beyond pageview

Neueste Beiträge

  • Tag Management Platform: Commanders Act Platform X – DataCollection (Teil 2)
  • Tag Management Platform: Übersicht (Teil 1)
  • IP und User Agent Identifier: Nachteile
  • GA4 Recipes: Machine Learning Features für Predictive Audiences in anderen Tools nutzen, am Beispiel von Tealium AudienceStream
  • Quick Tipp: GA4 Configuration Tag vs. Universal Analytics Setting Variable – Sequence matters

Kategorien

  • Allgemein
  • Cloud
  • Dashboard
  • Firebase Analytics
  • Google Analytics
  • Google Analytics 4 (App+Web)
  • Google Optimize
  • Google Tag Manager
  • Machine Learning
  • Matomo
  • Tag Management

Links

  • Datenschutzerklärung
  • Hear Me Speak
  • Impressum
  • Meet & Eat
  • Über den Blog
©2023 Digital Analytics Blog | Built using WordPress and Responsive Blogily theme by Superb