Google Analytics IP Anonymisierung

Um beim Tracking einer Webseite länderspezifische Datenschutz-Richtlinien und Vorschriften einzuhalten, sollte man in jedem Fall bei der Einrichtung eines Analytics Trackings die IP Anonymisierung aktivieren. Leider ist in vielen Ländern nicht abschließend geklärt, ob es sich bei einer IP Adresse um personenbezogene Daten (PII) handelt oder nicht.
Diese Seite soll eine Übersicht geben, welche Möglichkeiten der IP Anonymisierung bei Google Analytics bestehen.


Standard IP Anonymisierung bei Classic Analytics

Um das Feature zur IP Anonymisierung für Legacy Analytics (Asynchrone Script Version) zu aktivieren, muss einfach die folgende Zeile bei der Initialisierung des Trackes hinzugefügt werden.

_gaq.push (['_gat._anonymizeIp']);

Sofern der Google Tag Manager eingesetzt wird, so kann man die Option zur IP Anonymisierung direkt über eine Checkbox im GTM Web Interface aktivieren

GTM Legacy Analytics IP Anonymization Option

Standard IP Anonymisierung in Universal Analytics

Um das Feature zur IP Anonymisierung für Universal Analytics zu aktivieren, muss die folgende Zeile bei der Initialisierung des Trackes hinzugefügt werden.

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

Wenn der Google Tag Manager eingesetzt wird, kann die IP Anonymisierung über das setzen des zusätzlichen Feldes "ipAnonymization" im GTM Web Interface aktiviert werden.

GTM Universal Analytics IP Anonymization Option

Erweiterte IP Anonymisierung in Universal Analytics

In Ausnahmefällen kann es Sinn machen, eine erweiterte IP Anonymiserung für Analytics zu implementieren, die beispielsweise die letzten beiden IP Blöcke ausmaskiert. Da eine derartige Implementierung nicht mit den Standard Optionen von Analytics umsetzbar ist, muss hier ein etwas komplexerer Code eingesetzt werden, der den Analytics Measurement Protocol Tracking Request vor dem Versenden bearbeitet, um eine einene, serverseitig anonymisierte IP Adresse zu übergeben.

Hierzu muss die Analytics Funktion sendHitTask mit einer eigenen Version der folgenden Art überschrieben werden (ANONYMIZED_CLIENTIP muss durch die serverseitig anonymisierte IP Adresse ersetzt werden).

function sendHitTask(model){ 
    var payLoad = model.get('hitPayload');
    var trackingBaseUrl = '//www.google-analytics.com/collect?';

    if (payLoad.length < 400) {
        var collectUrl = window.location.protocol + trackingBaseUrl + payLoad + '&uip=' + ANONYMIZED_CLIENTIP;
        var myImage = new Image();
        myImage.src = collectUrl;
    } else {
        var r = window.ord || Math.floor(Math.random() * 1e16);

        var myIframe = document.createElement('IFRAME');
        myIframe.width = "1px";
        myIframe.height = "1px";
        myIframe.style.display = 'none';
        myIframe.name = "tiframe_" + r;

        var myForm = document.createElement('FORM');
        myForm.method = 'POST';
        myForm.action = window.location.protocol + trackingBaseUrl;
        myForm.target = "tiframe_" + r;
                
        var parameterValuePairs = payLoad.split('&');

        for (var vpi=0; vpi < parameterValuePairs.length; vpi++) {
            var splittedParameterValuePair = parameterValuePairs[vpi].split('=');
            var parameterName = decodeURIComponent(splittedParameterValuePair[0]);
            var parameterValue = (splittedParameterValuePair.length == 1) ? '' : decodeURIComponent(splittedParameterValuePair[1]);

            var parameterInput = document.createElement('INPUT');
            parameterInput.type = 'HIDDEN';
            parameterInput.name = parameterName;
            parameterInput.value = parameterValue;
            myForm.appendChild(parameterInput);
        }

        var parameterInput = document.createElement('INPUT');
        parameterInput.type = 'HIDDEN';
        parameterInput.name = 'uip';
        parameterInput.value = ANONYMIZED_CLIENTIP;
        myForm.appendChild(parameterInput);

        document.body.appendChild(myForm);
        document.body.appendChild(myIframe);
        myForm.submit();
    }
}

Um letztendlich die sendHitTask Funktion zu überschreiben, muss man folgenden Aufruf bei der Initialisierung des UA Trackers ergänzen bzw. wiederum das Gleiche über das GTM Interface realsieren: sendHitTaskFunction als Custom JavaScript Variable definieren und anschließend als sendHitTask Feld beim Analyitcs Tag übergeben.

ga('create', 'UA-XXXX-Y', 'auto');

ga(function(tracker) {
  tracker.set('sendHitTask', function(model) {
        // enter your send hit task function here
  });
});
GTM sendHitTask Override

Nachteile von IP Anonymisierung

  • Praktisch keine Nachteile bei Ausmaskierung der letzten 8 Bit der IP Adresse (Standard Funktion zur IP Anonymisierung in Analytics)
  • Sofern mehr als die letzten 8 Bit der IP Adresse ausmaskiert werden, ist eine Auswertung des Nutzer-Standortes nicht mehr möglich. Insofern können die Analytics Auswertungen zum Nutzer-Standort nicht mehr verwendet werden.
  • Vorsicht ist generell bei der Einrichtung von IP Filtern für Analytics Datenansichten zu beachten, da die Filter auf die bereits anonymisierten IP Adresses angewendet werden. Es kann somit keine einzelne Adresse herausgefiltert werden - ein Fliter kann minimal einen Block von 256 Adressen filtern (beispielsweise 192.168.10.0/24)