Blog Datenschutzkonforme Integration des Google Tag Managers in Borlabs Cookie

Datenschutzkonforme Integration des Google Tag Managers in Borlabs Cookie

Der Google Tag Manager (kurz GTM) ist ein Tool, welches von Websitebetreibern genutzt wird, um das Management und die Implementierung von Tracking-Skripten auf ihren Websites zu vereinfachen. Anstatt jedes einzelne Tag manuell in den Website-Code einzufügen, kann der Tag Manager verwendet werden, um Skripte wie z. B. Google Analytics oder das Facebook-Pixel zentral zu verwalten. Der Tag Manager ermöglicht es, Skripte hinzuzufügen, zu bearbeiten oder zu entfernen, ohne den Code der Website direkt zu ändern. Dadurch wird die Implementierung von Tracking- und Analysetools effizienter und flexibler.

Das WordPress-Plugin Borlabs Cookie ist eine praktische Lösung für Websitebetreiber, um die Cookie-Richtlinien und den Datenschutz auf ihrer Website wirksam umzusetzen. Mit dem Plugin können individuelle Cookie-Banner erstellt werden, die den Besuchern klare Informationen über die verwendeten Cookies liefern und ihnen die Möglichkeit bieten, ihre Zustimmung zur Cookie-Nutzung zu geben.

Verwendung von Borlabs Cookie trotz Google Tag Manager. Geht das?

Da es sich bei dem GTM und den meisten darüber einzubindenden Dienste um Skripte handelt, die auf externen Servern, ggf. sogar außerhalb der EU, liegen, dürfen diese meist nicht ohne Zustimmung des Nutzers geladen werden. Daher sollte man den Tag Manager und dessen Skripte z. B. mit Borlabs Cookie verbinden, damit die Nutzer über den Cookie-Banner die Nutzung der externen Dienste steuern können.

Borlabs selbst bietet eine sehr gute und umfangreiche Anleitung (https://de.borlabs.io/kb/google-tag-manager-nutzen/) zur Verwendung des GTMs in Kombination mit Borlabs Cookie. Diese Anleitung sieht vor, dass der Google Tag Manager als „essenziell“ hinterlegt wird, es also keiner Zustimmung des Nutzers bedarf und der GTM damit immer geladen wird. Nur die einzelnen Dienste, die über den Tag Manager geladen werden sollen (z. B. Google Analytics oder der Facebook-Pixel) werden „blockiert“ und erst durch den Nutzer freigeschaltet, wenn dieser zustimmt.

Das Problem:

Allerdings weist Borlabs schon selbst in dem Artikel darauf hin, dass die Einordnung des GTMs als „essenziell“ oder „technisch notwendig“ u. a. in der EU rechtlich umstritten ist. Der Grund dafür ist, dass es sich bei Google um eine Firma aus der USA handelt und der Google Tag Manager selbst ebenfalls von einem externen Server geladen wird. Zudem ist es schwierig, den GTM als technisch notwendig für den Betrieb der Website darzustellen.

Wichtiger Hinweis: Mit diesem Blogartikel findet keine Rechtsberatung statt, da wir keine Juristen oder Datenschutzbeauftragte sind! Wir empfehlen daher, sich eigenständig über die rechtlichen Anforderungen im eigenen Land zu informieren. Im Zweifel ist es sinnvoll, juristischen Rat einzuholen. Eine Haftung für die hier enthaltenen Angaben kann nicht übernommen werden.

Wir haben daher nach einer alternativen Art der Einbindung des Google Tag Managers in eine WordPress-Website gesucht, bei der der Nutzer die Möglichkeit hat, das Laden des GTMs zu verhindern.

Die einfachste Lösung?

Man könnte vermuten, die einfachste Lösung sei es den Tag Manager als „nicht-essenziellen“ Dienst zu hinterlegen, damit ein Nutzer dessen Einbindung ablehnen kann. Dies ist zwar nicht „falsch“, hat aber den ein oder anderen Haken:

Nutzer stimmt dem GTM zu, aber nicht einem der darüber geladenen Dienste:

Der Tag Manager wird ebenfalls ohne Funktion geladen, zwar nur mit Zustimmung des Nutzers, aber trotzdem „unnötig“.

Nutzer stimmt einem der über den GTM geladenen Dienste zu, nicht aber dem GTM selbst:

Es wird nichts geladen und getrackt, obwohl der Nutzung des Dienstes zugestimmt wurde.

Nutzer stimmt sowohl dem GTM, als auch einem der darüber geladenen Dienste zu:

Bei der Einbindung des Google Tag Managers als „essenziell“, wird dieser immer direkt beim Laden der Website geladen und ist somit immer vor der Einbindung der einzelnen Dienste aktiv. Wenn die Einbindung des GTMs aber als „nicht-essenziell“ erfolgt, wird der Tag Manager, wie die anderen Dienste, in einer nicht definierbaren Reihenfolge geladen. Es kann daher dazu kommen, dass der GTM erst nach der Einbindung der einzelnen Dienste geladen wird und es trotz aller notwendigen Zustimmungen dazu kommen kann, dass kein Tracking erfolgt.

Die Lösung: Bedarfsabhängiges Laden des Google Tag Managers

Unser Lösungsansatz ist daher folgendermaßen: Der GTM wird nur und immer dann geladen, wenn er tatsächlich benötigt wird — also wenn mindestens einem der darüber verwendeten Dienste zugestimmt wird. Dieser Ansatz gibt Websitebetreibern mehr Kontrolle über die Verwendung des Google Tag Managers und hilft dabei, Datenschutzrichtlinien besser einzuhalten, da der GTM nicht mehr als „essenziell“ geladen wird.

Wie kann man dies erreichen:

1. Einbindung einer JavaScript-Datei mit den notwendigen Funktionen

Man erstellt eine JavaScript-Datei, zum Beispiel im Child-Theme der Website, mit dem Namen „google-tag-manager.js“ und folgendem Inhalt:

function googleTagManagerIsLoaded() {
	return window.dataLayer && true;
}

function loadGoogleTagManager() {
	(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({"gtm.start":
	new Date().getTime(),event:"gtm.js"});var f=d.getElementsByTagName(s)[0],
	j=d.createElement(s),dl=l!="dataLayer"?"&l="+l:"";j.async=true;j.src=
	"https://www.googletagmanager.com/gtm.js?id="+i+dl;f.parentNode.insertBefore(j,f);
	})(window,document,"script","dataLayer","{GTM-ID}");
}

Die erste der beiden Funktionen (googleTagManagerIsLoaded) gibt an, ob der GTM bereits geladen wurde, indem es die, vom Tag Manager standardmäßig gesetzte Variable „window.dataLayer“ prüft.

Die zweite Funktion (loadGoogleTagManager) lädt beim Aufruf den GTM mithilfe des klassischen Einbindungs-Codes, den auch Borlabs Cookie hier verwenden würde. Da hier natürlich der passende Google Tag Manager geladen werden soll, muss dort im unteren Bereich noch der Platzhalter „{GTM-ID}“ durch die passende GTM-Container-ID ersetzt werden, die man im Google Tag Manager selbst herausfindet.

Damit diese Funktionen für die Nutzung verfügbar sind, muss diese Datei dann noch geladen werden (z. B. über die functions.php des Child-Themes). Dafür verwendet man z. B. folgenden Code:

add_action( 'wp_enqueue_scripts', 'wpw24_enqueue_gtm_script' );
function wpw24_enqueue_gtm_script() {
	wp_enqueue_script( 'wpw24-google-tag-manager', get_stylesheet_directory_uri() . 'google-tag-manager.js' );
}

2. Laden des Google Tag Managers bei den jeweiligen Diensten

Anschließend kann man die Dienste, die den GTM nutzen, gemäß der Borlabs-Anleitung (https://de.borlabs.io/kb/google-tag-manager-nutzen/) einrichten. Die Einbindung des Google Tag Managers über Borlabs Cookie als „essenziell“ überspringt man dabei einfach und beachtet bei der Einrichtung der einzelnen Cookies folgende Punkte:

Beschreibung des Cookies

Der Nutzer muss natürlich erfahren, dass bei Zustimmung des jeweiligen Dienstes der GTM mit geladen wird. In der Beschreibung des Dienstes muss daher ein kurzer zusätzlicher Text hinzugefügt werden, der die Nutzer darauf hinweist, dass der Google Tag Manager hier bei Zustimmung mit geladen wird. Der Text sollte zudem eine Verlinkung auf die Datenschutzerklärung beinhalten, wo das ganze noch einmal ausführlicherer beschrieben werden sollte.

„Opt-In“-Feld

Der Code den Borlabs hier, lt. Anleitung, vorschlägt, lautet:

<script>
	window.dataLayer = window.dataLayer || [];
	window.dataLayer.push( {
		event: 'borlabsCookieOptInGoogleAnalytics',
	} );
</script>

Dieser Code teilt dem GTM mit, dass die Zustimmung für den jeweiligen Dienst (in diesem Falle Google Analytics) erfolgt ist, indem das Event „borlabsCookieOptInGoogleAnalytics“ gefeuert wird. Da der Google Tag Manager aber nun nicht mehr als „essenziell“ geladen wird, müssen wir sicherstellen, dass der GTM auch sicher geladen wird, wenn dem Dienst zugestimmt wird. Daher ergänzen wir den Code um eine Zeile wie folgt:

<script>
	googleTagManagerIsLoaded() || loadGoogleTagManager();
	
	window.dataLayer = window.dataLayer || [];
	window.dataLayer.push( {
		event: 'borlabsCookieOptInGoogleAnalytics',
	} );
</script>

Diese Zeile nutzt die Funktionen, die wir zuvor über die eigene JS-Datei eingebunden haben, um zu prüfen, ob der GTM bereits geladen ist (googleTagManagerIsLoaded) und falls nicht, diesen lädt (loadGoogleTagManager). Danach kommt weiterhin das Feuern des Events, welches dem GTM mitteilt, dass die Zustimmung erfolgt ist.

Sollte der Tag Manager schon durch einen anderen „Cookie“, bzw. einen anderen Skript-Eintrag in Borlabs Cookie, geladen worden sein, wird das Laden einfach übersprungen, um zu verhindern, dass dieser mehrfach geladen wird.

Durch die Implementierung dieser Lösung wird daher sichergestellt, dass der GTM nur und immer dann genau einmal geladen wird, wenn ein Dienst aktiviert wird, der über den Google Tag Manager eingebunden ist. Der Nutzer muss also mindestens einem dieser Dienste zustimmen, bevor der GTM geladen wird. Auf diese Weise behalten Websitebetreiber die Kontrolle über die Ladereihenfolge des Google Tag Managers und erfüllen gleichzeitig die Anforderungen des Datenschutzes.

Fazit

Diese alternative Einbindung des GTMs in Borlabs Cookie bietet eine funktionierende Lösung für Websitebetreiber, die zwar den Google Tag Manager verwenden möchten, dem Nutzer aber die Möglichkeit geben wollen (oder müssen ;-D) diese Einbindung zu verhindern. Indem der GTM nur dann geladen wird, wenn er benötigt wird, können die Datenschutzrichtlinien besser eingehalten werden, trotz korrekter Ladereihenfolge der Komponenten.

Wir hoffen, dass dieser Artikel bei der Einbindung des Google Tag Managers in Borlabs Cookie geholfen hat. Solltet Ihr noch Fragen oder Anmerkungen haben, lasst es uns bitte in den Kommentaren wissen!
Darüber hinaus können wir euch bei der Integration auch gerne unterstützen! Kontaktiert uns einfach hier!

Schreibe einen Kommentar