Background Image
30.09.2024, Kai Gertz

Consent Management: Klaro + Tag Manager

Eine einfache und schnelle Methode für das Consent Management lässt sich mit Klaro und einem Tag Manager implementieren.

Wann lässt sich sinnvoll Klaro in Kombination mit einem Tag Manager verwenden?

Wir setzen gerne die Open Source Anwendung Klaro ein, um das DSGVO-konforme Consent Management für Websites zu realisieren und allen Anforderungen des Datenschutzes gerecht zu werden. Im Zusammenspiel mit einem Tag Manager wie Matomo oder auch dem Google Tag Manager ist damit unter bestimmten Voraussetzungen eine schnell und einfach implementierbare Lösung machbar. Die Vorteile davon sind:

  • einfache und schnelle Umsetzbarkeit
  • Kunden und externe (z.B. SEA Agenturen) können unabhängig und ohne Entwickler selbständig Änderungen an den eingesetzten Skripten, Anzeigen und Diensten machen.

Klaro als unabhängige Consent Management App

In diesem Ansatz werden Klaro und die spezifische Konfiguration für die jeweilige Website zwar durch ein (custom) Drupal-Modul eingebettet, aber mehr Berührungspunkte gibt es nicht. Klaro und Drupal funktionieren eigenständig und müssen weiter nichts voneinander wissen.

Der eingesetzte Tag Manager fungiert als Komplement zum Consent Management Dialog und lädt die jeweiligen Dienste bzw. setzt sie in seinen Container innerhalb der Website ein, sobald sie vom Benutzer akzeptiert werden (und erst dann). 

Im Vordergrund ist ein Consent Management Dialog ("Cookie Banner") zu sehen, dahinter eine abgedunkelte Webseite

Der Consent Management Dialog: hier können Nutzer auswählen, welche Dienste aktiv sein sollen.

Im Consent Management Dialog werden diejenigen Dienste ausgewählt, die aktiv sein sollen (daneben gibt es auch Dienste, die für die Funktion der Seite unerlässlich sind – die sind nicht an- und abschaltbar, müssen aus Transparenzgründen aber dennoch gelistet werden.)

In der Callback-Funktion, die wir definiert haben und die von Klaro beim Akzeptieren eines Dienstes (und immer auch beim Laden einer Seite) aufgerufen wird, werden dem Tag Manager alle aktiven Dienste mitgeteilt:

onAccept: `
        var _mtm = window._mtm = window._mtm || [];
        // we notify the tag manager about all services
        // that were accepted. You can define a custom event
        // in MTM to load the service if consent was given.
        for(let k of Object.keys(opts.consents)){
            if (opts.consents[k]){
                let eventName = 'klaro-'+k+'-accepted'
                _mtm.push({'event': eventName});
                console.debug('accepted: ' + k)
            }
        }
    `

Im Tag Manager ist folgendes definiert:

  • sog. Trigger, die durch die Übermittlung von Klaro ausgelöst werden und die beim Akzeptieren eines einzelnen Dienstes aktiv werden
  • die Tags (zusätzlicher HTML- oder Javascript-Code), die nach dem Akzeptieren durch die Nutzer einen zusätzlichen Dienst integrieren 

So etwa sähe eine einfache Konfiguration im Tag Manager aus – hier sind die Tags definiert, die (erst) nach dem Akzeptieren eines Dienstes in die Website eingesetzt werden:

Screenshot des Matomo Tag Managers mit zwei definierten Tags

Der Ablauf insgesamt ist also folgender: 

  • Ein Benutzer kommt auf die Website und bekommt (sofern er das nicht schon gespeichert hat) den Consent Management Dialog präsentiert
  • Der Benutzer willigt beispielsweise ein, dass Google Analytics verwendet werden darf, um seine Seitenbesuche mit in die Statistik aufzunehmen
  • Die App Klaro sendet eine Nachricht an den Matomo Tag Manager: "Google Analytics wird nun akzeptiert" – der Trigger mit der Bezeichnung klaro-google-analytics-accepted wird ausgelöst
  • Der Matomo Tag Manager setzt das entsprechende Skript für Google Analytics auf der Website in einen sog. Container ein und der Dienst wird daraufhin aktiv
  • Wann immer der Benutzer den Consent Management Dialog wieder aufruft und seine Präferenzen ändert, spiegelt sich das sofort wider: schaltet zum Beispiel jemand seine Zustimmung zu Google Analytics aus, wird sofort der Dienst aus dem Container entfernt und ist nicht mehr auf der Website aktiv. Ebenso werden alle Cookies, die zuvor von Google Analytics gesetzt wurden, gelöscht.

Fazit

Der hier beschriebene Ansatz nutzt eine vergleichsweise lose Kombination aus Drupal, Klaro und einem Tag Manager, um DSGVO-konformes Consent Management zu gewährleisten. Dieses Setup ist einfach und schnell implementiert und bietet sich dann an, wenn ohnehin nur externe Dienste gemanaged werden, die nur Javascript oder Embed-Codes in die Seite einschleusen müssen, damit sie funktionieren (z.B. Google Analytics, YouTube, Instagram, LinkedIn ...).

In komplexeren Fällen, in denen Drupal-Module im Consent Management mitverwaltet werden müssen (siehe z.B. Diskussion bei Drupal Starshot) oder die Abhängigkeit zu einem externen Tag Manager nicht in Frage kommt (z.B. im Szenario, dass Drupal bereits out of the Box ohne weitere Konfiguration funktionieren muss), taugt dieser "simple" Ansatz natürlich nicht mehr. In dem Fall muss man dann etwas mehr Aufwand betreiben. Das behandeln wir noch in einem separaten Blogartikel.