Google Analytics: AnonymizeIP entspannt einbinden in Universal Analytics (mit und ohne Google Tag Manager)

Wer in Deutschland datenschutzkonform mit Google Analytics arbeiten will, kommt nicht drumherum: Die IP-Adresse des Besuchers muss anonymisiert werden. Das ging in Universal Analytics mithilfe von “anonymizeIP”. Wie das ins Tracking eingebaut wird, mit oder ohne den Google Tag Manager, erklärt dieser kurze Beitrag.

Spoiler vorweg: Für GA4 gilt das nicht mehr!

Du bist wegen Anonymisierung der IP-Adresse in GA4 hier?
In Google Analytics 4 ist die Anonymisierung automatisch integriert.
Du musst dort nichts Spezielles einstellen.
Laut Google werden dort keine IP-Adressen mehr gespeichert.

s. https://support.google.com/analytics/answer/2763052?hl=en

Sofern du planst, die IP-Adresse schon beim Absenden eines Messpunktes vor GA zu verbergen, empfehlen wir den Einsatz eines server-side Google Tag Managers. Sprich uns einfach darauf an.

Das findest du hier

  1. Was steckt hinter “anonymizeIP”
  2. Was passiert bei “anonymizeIP”?
  3. Anonymisieren mit Universal Analytics (analytics.js) (Hard Coded oder via Google Tag Manager)
  4. Anonymisieren mit Global Site Tag (gtag.js) (Hard Coded oder via Google Tag Manager)
  5. Anonymisieren mit Classic Analytics (ga.js) (Hard Coded oder via Google Tag Manager)

Was steckt hinter “anonymizeIP” für Universal Analytics?

Google hatte seinerzeit durch die deutschen Datenschutzbehörden einige Regeln auferlegt bekommen, die aus Sicht der Behörden dafür sorgen, dass Google Analytics in Deutschland rechtskonform genutzt werden kann. Dazu gehören folgende Punkte:

  1. Vertrag zur Auftragsdatenverarbeitung muss mit Google geschlossen werden (§ 11 BDSG – Vertrag)
  2. das Widerspruchsrecht der Betroffenen (also der Besucher der Seite) muss eingeräumt werden
  3. eine angepasste Datenschutzerklärung ist erforderlich
  4. ggf. die Löschung von Altdaten nötig
  5. und vor allem: die Anonymisierung der IP-Adressen muss erfolgen

Der letzte Punkt diente dabei dazu, die Eindeutigkeit einer IP-Adresse zu verändern, so dass ein einzelner Nutzer nicht mehr “eindeutig” erkennbar ist.

Was passiert bei “anonymizeIP” in Universal Analytics?

Im Grunde genommen ist es einfach. Um die IP-Adresse in Universal Analytics zu anonymisieren, wird einfach das letzte Oktett der IPv4-Adresse gelöscht (bei IPv6 sind es die letzten 80 der 128 Bit). Genauer gesagt wird dort anstelle der eigentlich vorhandenen Zahl einfach eine “0” gesetzt.

anonymizeIP im Einsatz
So funktioniert anonymizeIP

Und schon ist das Problem erledigt. Nachteil: Nun können wir tatsächlich nicht mehr die einzelnen Nutzer anhand ihrer IP-Adresse auseinanderhalten. Allerdings muss ich sagen, dass man davon in der Praxis nichts bemerkt. Vorteil: Wir bekommen keine Probleme mit dem Datenschutz mehr. 🙂

Wie wird das Ganze denn nun eingebaut? Denn per se ist diese Funktion im Google Analytics Tracking Code natürlich noch nicht enthalten. Denn anders als in Deutschland ist die Anonymisierung nicht in allen Ländern nötig.

Zunächst einmal unterscheiden wir zwischen dem (Universal Analytics) Trackingcode, ferner dem seit 2017 in der Beta befindlichen Global Site Tag (gtag.js) und dem alten (Classic Analytics). Und dort lässt sich jeweils noch unterscheiden, ob der Tracking Code mit dem Tag Manager ausgespielt wird oder ob er “hard coded” eingebettet ist.

Anonymisieren mit Universal Analytics (analytics.js)

Hard coded Universal Analytics Code

Ist der Universal Analytics Code “hart” im Quellcode eingebettet worden, ist in der Regel im Quellcode so etwas zu sehen:

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXXXX-X', 'auto');
ga('require', 'displayfeatures');
ga('require', 'linkid', 'linkid.js');
ga('send', 'pageview');
</script>

Um die anonymizeIP-Funktion für alle Hits zu nutzen, die auf der Seite stattfinden, muss nun eine Zeile ergänzt werden:

ga('set', 'anonymizeIp', true);

Und zwar im Code noch VOR dem Senden des Pageviews, etwa so:

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXXXX-X', 'auto');
ga('require', 'displayfeatures');
ga('require', 'linkid', 'linkid.js');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
</script>

Es gibt neben der “kompletten” Möglichkeit, wie oben beschrieben, auch noch die Möglichkeit, nur einzelne Hits zu anonymisieren. Dafür kann anonymizeIP einfach an den entsprechenden Hit gehängt werden, etwa so:

ga('send', 'pageview', {
'anonymizeIp': true
});

Doch da vor allem in Deutschland ohnehin alles anonymisiert werden muss, ist das eher akademisch als praktisch.

anonymizeIP im Universal Analytics Code mit Google Tag Manager und Settings-Variable

Wer seinen Universal Analytics Tracking Code mit dem Google Tag Manager eingebunden hat, hat seit Kurzem gleich zwei Möglichkeiten, die anonymizeIP-Funktion einzubinden. Entweder in jedem einzelnen Google-Analytics-Tag oder mithilfe der neuen Google-Analytics-Settings-Variablen. Ich beschreibe hier mal, wie das mit der neuen Settings-Variablen funktioniert.

Neue Variable im Google Tag Manager anlegen
Neue Variable im Google Tag Manager anlegen
Variablentyp "Google Analytics Einstellungen" im Google Tag Manager wählen
Variablentyp “Google Analytics Einstellungen” wählen
Google Analytics Einstellungen im Google Tag Manager
Ggf. Basis-Einstellungen wie Tracking ID vornehmen und unter “Festzulegende Felder” “Feld hinzufügen” drücken
Eintrag anonymizeIP und dazugehöriger Wert
Dort händisch “anonymizeIP” unter Feldname eintragen und “true” als Wert definieren.

Wenn das erledigt ist, muss nur noch bei allen Pageview-Tags ergänzt werden, dass auf die Google-Analytics-Basis-Einstellungen zurückgegriffen werden soll. Das funktioniert über ein Dropdown im  Tag.

Standard-Pageview-Tag in Google Tag Manager mit gewähltem Basis-Setting
Die Basis-Einstellungen im Pageview-Tag auswählen

Alternativ dazu kann man natürlich auch in jedes Google-Analytics-Tag einzeln das anonymizeIP-Feld eintragen – sofern es mehrere gibt. Das geht dann im Prinzip genau so, aber statt in einer Variablen dann eben in jedem einzelnen Tag. Auch dort findet sich unter “Festzulegende Felder” die Möglichkeit “anonymizeIP” und dessen Wert “true” zu ergänzen.

Nach der Änderung nicht vergessen: Testen, ob der Tag Manager alles richtig ausspielt und dann Änderungen veröffentlichen.

Anonymisieren mit Global Site Tag (gtag.js)

Für diejenigen von euch, die bereits das seit September 2017 in der Beta befindliche neue Global Site Tag (gtag.js) nutzen, ist das Prinzip sehr ähnlich.

[Randnotiz: Zum Stand Oktober 2017 muss niemand plötzlich auf das neue Global Site Tag umstellen. Es bedient mit einer neuen Syntax und vielen codeseitigen Vereinfachungen nach wie vor das Universal Analytics. Wer dennoch umstellen möchte oder muss (weil Google Analytics primär nur noch gtag.js-Trackingcode vorgibt), findet hier, wie es geht. Allerdings werden auf Dauer weitere Google Analytics Features wohl im Wesentlichen für das Global Site Tag gtag.js entwickelt.]

Hard coded Global Site Tag

Bei gtag.js sieht der Standard-Code so aus:

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXX-X"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-XXXXXXXX-X');
</script>

Um die anonymizeIP-Funktion für alle Hits zu nutzen, die auf der Seite stattfinden, muss nun eine Zeile ergänzt werden:

gtag('config', 'UA-XXXXXXXX-X', { 'anonymize_ip': true });

Und im Gesamtkunstwerk sieht der Code dann so aus:

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXX-X"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-XXXXXXXX-X', { 'anonymize_ip': true });
</script>

Es gibt neben der “kompletten” Möglichkeit, wie oben beschrieben, auch noch die Möglichkeit, nur einzelne Hits zu anonymisieren. Dafür kann anonymizeIP einfach an den entsprechenden Hit gehängt werden, etwa so:

gtag('event', 'your_event', {'anonymize_ip': true});

Doch wie bei Universal Analytics zuvor auch: Da vor allem in Deutschland ohnehin alles anonymisiert werden muss, ist das eher akademisch als praktisch.

Alternativ Global Site Tag mit Tag Manager

Die erfreuliche Nachricht: Wenn ihr derzeit euer Tracking auf Basis des Universal Analytics Tags mit dem Google Tag Manager aufgesetzt habt, müsst ihr NICHTS machen. Zwar ist das neue gtag.js mit einer neuen Syntax ausgestattet, diese bedient aber letztlich weiterhin das Universal Analytics Tag, das ihr weiter oben schon gesehen habt oder ihr bislang sogar nutzt.

Anonymisieren mit Classic Analytics (ga.js)

Wer den alten asynchronen Trackingcode immer noch nutzt, sollte sich mal überlegen, ob es nicht langsam an der Zeit wäre zu wechseln, denn für den alten Code werden jetzt schon eine Menge Features aus Google Analytics nicht mehr angeboten. Aber das ist ein anderes Thema.

Hard coded Classic Analytics Code

Ist der Trackingcode “hart” auf der Seite implementiert worden, also direkt in den Quellcode hineingeschrieben worden, steht er in etwa so auf der Seite:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

Auch hier muss das “anonymizeIP” VOR dem Senden des Pageviews eingebettet werden, am besten an folgender Stelle.

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
_gaq.push (['_gat._anonymizeIp']);
_gaq.push(['_trackPageview']);
...

Alternativ Classic Analytics mit Tag Manager

Wer den Classic Analytics Code mit dem Tag Manager eingebunden hat, kann leider nicht auf die Settings-Variable zurückgreifen. Die funktioniert nur mit Universal Analytics. Also muss in jedem Google-Analytics-Tag die Funktion der IP-Anonymisierung einzeln ergänzt werden. Das geht im Tag für Klassisches Analytics sogar noch einfacher als im Universal Analytics Tag (was DEFINITIV kein Grund zum Zurückwechseln ist 🙂 ).

Feld zum Anhaken für klassisches Analytics im Google Tag Manager
Für klassisches Analytics gibt es sogar ein eigenes Feld zum Anhaken im Tag Manager

Also, einfach Haken setzen, testen, veröffentlichen und fertig.

Fazit: Ja, muss gemacht werden. Ist aber einfach.

Um dem Datenschutz genüge zu tun, muss(te) anonymizeIP in Universal Analytics eingebaut werden, ohne wenn und aber. Das geht aber ziemlich entspannt sowohl mit als auch ohne Google Tag Manager und ganz gleich ob für Universal Analytics, das Global Site Tag oder das klassische Google Analytics.

Für GA4 ist die Anonymisierung der IP-Adresse automatisch aktiv und daher ohne Anleitung.

Maik Bruns

Noch mehr Insights

Was ist Unassigned Traffic in GA4, wo finde ich ihn und wie lässt er sich beheben?

Keine klare Zuordnung des Traffics zu Kanälen, kein direkter Zusammenhang zu euren Marketing-Maßnahmen – und dementsprechend keine Aussagekraft, ob eure Kampagnen wirken oder nur Geld verbrennen und euren ROI runterdrücken. Nervig, oder? Genau das passiert in vielen Setups, die wir sehen, durch den sogenannten “Unassigned”-Traffic. 

Dadurch verliert ihr wertvolle Einblicke, weil GA4 euren Traffic nicht eindeutig zuordnen kann.

Mehr erfahren >
Top