Cookie Monster

Internen Traffic via Cookie von Google Analytics ausschließen

Um die Datenqualität in Google Analytics zu verbessern, sollte es Best-Practice sein, internen Traffic, also die eigenen Zugriffe auf seine Website vom Tracking auszuschließen. Denn diese blasen nicht nur die Anzahl an Sitzungen und Seitenaufrufe auf, sondern verfälschen auch Verhaltens-KPIs & Conversion Daten. Dazu müssen wir in Google Analytics aber irgendwie diese eigenen Zugriffe identifizieren.

Hier ein kleines Tutorial, wie man als WordPress User PHP nutzt, um ein Cookie zu setzen und diese Info dann über das Google Analytics Snippet oder den Google Tag Manager als Custom Dimension an Analytics zu senden.

Probleme beim Ausschluss von IP-Adressen

Häufig wurde oder wird als Indentifizeriungsmerkmal von internen Traffic die IP-Adresse genutzt. Diese ist vermeintlich leicht herauszufinden uns schnell per vordefinierten Filter auszuschließen.

Das Problem: Da in der EU die IP-Adressen vor der Übertragung an die Google Server anonymisiert werden müssen, können wir einzelne IP-Adressen gar nicht gezielt ausfiltern. Eine IP-Adresse besteht immer aus 4 Blöcken, sog. „Oktetten“, die jeweils Ausprägungen von 0-255 annehmen können. Weil durch die anonymizeIP Anweisung das letzte Oktett nicht erfasst wird, müsste man daher eine ganze Range von IP-Adresse ausschließen und riskiert so auch 254 tatsächliche User auszuschließen.

Dazu kommen bei der Identifizierung internen Traffics über die IP auch andere Probleme, wie etwa, dass private User von Ihren Internetprovidern oft dynamische IP-Adressen zugewiesen bekommen oder Mitarbeiter nicht nur aus dem Firmennetzwerk, sondern auch von zuhause oder unterwegs auf die Seiten zugreifen.

Cookie zur Identifizierung von internem Traffic nutzen

Es muss also eine andere Lösung her, um interne Zugriffe zu identifizerien, zu segmentieren und auszuschließen. Eine elegantere Variante als über IP-Adressen kann da die Identifizierung über ein Cookie sein.

Dazu setzen wir zunächst bei „internen Usern“ ein First-Party-Cookie, fragen dann vor dem Senden eines PageViews ab, ob dieses Cookie beim Besucher unserer Website existiert und geben optional diese Information als Ausprägung einer Custom Dimension mit an Google Anayltics weiter.

Stellt sich zunächst die Frage, wo und wie wir das Cookie setzen wollen. Über WordPress kann sehr leicht PHP nutzen, um das Cookie zu hinterlegen. Fragt sich nur, wie man „internen Traffic“ identifiziert.  Eine Variante für WordPress User wäre einfach allen Usern, die sich auch im WordPress Backend einloggen können das Cookie mitzugeben. Diese Lösung eignet sich vor allem für Blogger, Einzelunternehmer und kleinere Unternehmen und hat den Vorteil, dass das Cookie automatisch über PHP gesetzt wird, sobald man sich einmal eingeloggt hat, ohne dass irgendeine zusätzliche Aktion ausgeführt werden muss.

Dazu muss lediglich die functions.php Datei des verwendeten (Child)Themes mit folgendem Code erweitert werden:

function exclude_internal_cookie() {
$expire_time = time() + 60 * 60 * 24 * 180;
setcookie( 'internal_traffic', 'true', $expire_time, '/' );
}
if( is_user_logged_in() ) {
add_action('init', 'exclude_internal_cookie');
}

Schon haben alle, die sich einloggen das Cookie im Browser hinterlegt. Das Ganze macht natürlich nur Sinn, wenn sich ausschließlich Administratoren, Autoren & Co auf meinem WordPress einloggen können und es keine allgemeinen User Accounts gibt.

Was aber wenn es  auch eingeloggte User gibt, die nicht als interner Traffic zu zählen sind, oder umgekehrt, wenn nicht alle Mitarbeiter Zugriff auf das WordPress Backend haben aber trotzdem nicht in Google Analytics aufscheinen sollen oder dort zumindest gesondert betrachtet werden sollen?

Dann muss man einen anderen Weg suchen, um das Cookie zu setzen. Zum Beispiel könnte man eine eigene Seite anzulegen, die Mitarbeiter aufrufen, um sich das Cookie abzuholen.

Dazu kann man zum Beispiel eine einfache PHP Datei (etwa interne-zugriffe.php) mit folgendem Code per FTP in das root Verzeichnis der Domain legen:

<?php
$expire_time = time() + 60 * 60 * 24 * 180;
setcookie( 'internal_traffic', 'true', $expire_time, '/' );
?>

Jeder, der dann diese Seite www.meine-domain.com/interne-zugriffe.php aufruft bekommt automatisch das Cookie im Browser hinterlegt.

Im nächsten Schritt können wir jetzt das Vorhandensein unseres Cookies als Bedingung für eine Custom Dimension setzen.

Custom Dimension in Google Analytics

In Google Analytic sollte man immer zumindest zwei Datenansichten anlegen. Eine Ansicht, in der ungefiltert alle Daten hereinkommen und eine Datenansicht, in der man alle unerwünschten Daten ausfiltert.

Damit unser interner Traffic in der ungefilterten Ansicht auch erfasst wird (und wir ihn trotzdem identifizieren können) legen wir in auf Property Ebene eine eigene Custom Dimension an.

Custom Dimension anlegen

Dazu im „Verwalten“ Bereich auf „Benutzerdefinierte Definitionen“ und dann „Benutzerdefinierte Dimensionen“ klicken. Hier legen wir dann eine neue Benutzerdefinierte Dimension an im Umfang „Nutzer“ an und stellen sie auf Aktiv.

Custom Dimension Interner Traffic

Jetzt können wir dieser Dimension über unser Cookie Werte zuweisen.

Per normalem Google Analytics Code

Nutzt man den normalen Google Analytics Code im header.php des WordPress (Child)Themes kann man das einfach durch einen weiteres php Code Schnipsel erweitern:

<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','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXXXX-X', 'auto');
ga('anonymizeIP', 'true');
<?php    if( isset( $_COOKIE['internal_traffic'] ) )
{  echo 'ga(\'set\', \'dimension1\', \'true\');';   }
?>
ga('send', 'pageview');
</script>

Ist das Cookie beim User vorhanden, so wird dadurch die Custom  Dimension auf true gesetzt.

Per Google Tag Manager

Einfacher ist es aber wenn wir den Google Tag Manager nutzen um Informationen an Google Analytics zu schicken.

Dazu legen wir einfach eine neue Variable an, wählen dort als Variablentyp „First-Party-Cookie“ und geben den Namen unseres Cookies, also in unserem Beispiel internal_traffic, an.

First Party Cookei Variable

In den Tags, die wir dann per GTM an Google Analytics (in der Regel Universal Analytics) feuern geben wir jetzt in den weiteren Einstellungen unter Benutzerdefinierten Dimensionen die Indexnummer unserer Dimension ein, und als Dimensionswert unsere First-Party-Cookie-Variable {{Internal Traffic Cookie}}.

Custom Dimension im Tag Manager

Filter & Segmente in Google Analytics anlegen

Jetzt müssen wir in Google Analytics nur noch unsere internen Traffic herausfiltern bzw. Gruppieren.

Dazu legen wir in Google Analytics auf Datenansichtsebene einen neuen benutzerdefinierten Filter an. Unter Ausschließen wählen wir unsere Custom Dimension aus und setzen als Filtermuster „true“ ein.

Google Analytics Filter

In unserer ungefilterten „Alle Website Daten“ Ansicht können wir dazu ein neues Segment hinzufügen, und auch hier nach unserer Custom Dimension „Intern“ filtern und anschließend nur das Segment „Interner Traffic“ zu betrachten oder ihn mit anderen Nutzersegmenten zu vergleichen.

Segement in Google Analytics

Alternativ kann man auch eine weitere Datenansicht mit nur eigenem Traffic anlegen, wo wir einen Filter erstellen, der nur den unsere Custom Dimension Ausprägung einschließt.

 
Bildnachweis:Bearbeitetes Bild von Esti Alvarez – CC BY-NC-SA 2.0