Kom uden om IP-anonymisering efter GDPR: 2 alternativer til IP-filtre i Analytics

Anonymiserede du alle IP-adresser i Google Analytics for at blive GDPR-kompatibel? Hvis du gjorde, fungerer dine eksisterende IP-filtre i Google Analytics ikke længere – medmindre du har justeret sporingen.

IP-anonymisering i Google Analytics blokerer den sidste oktet af IP-adressen, før den sendes afsted, og dine IP-filtre matcher derfor ikke længere din interne trafik.

Eksempelvis er vores IP-adresse for Aarhus-kontoret 78.143.96.185. Efter at have slået IP-anonymisering til, erstatter Google Analytics den sidste oktet med 0, så vi i stedet sender fra adressen 78.143.96.0.

For at fortsætte filtreringen bliver vi i denne opsætning derfor nødt til matche mod de forrige tre oktetter af IP’en. Det efterlader et potentiale for støj og frasortering af de kunder (og omsætning), som vi deler disse tre første oktetter med. Det bliver hurtigt til flere tusinde, hvis vi skal frasortere både vores arbejdspladser, hjemmekontorer og samarbejdspartnere.

I dette indlæg løber jeg igennem mulighederne for at fortsætte filtreringen af dine egne og eventuelle samarbejdspartneres besøg og testkøb på din hjemmeside uden at skulle sende IP-adresser til 3-part.

Vi gør det ved at sætte en tilpasset dimension på de hits, vi sender til Google Analytics, som så giver os mulighed for at frasortere den interne trafik i et tilpasset filter.

Det kan lade sig gøre, fordi vi kan nå at matche op mod de IP-adresser, vi får ind i serverloggen. På den måde får vi mulighed for at identificere intern trafik her, før vi scrubber/anonymiserer IP’erne, som serveren modtager.

Sæt en cookie ved interne besøg

Mulighed #1: Opret en skjult landingsside

Opret en skjult landingsside, hvor du sætter en cookie for alle besøgende.

Ideen er, at det så kun er dine kollegaer og samarbejdspartnere, der får tilsendt linket.

Hvis du benytter Google Tag Manager, kan du bruge det til at sætte en cookie for alle sidebesøg på denne nye landingsside.

Brug et Custom HTML-tag med nedenstående kode og sæt en Page View-trigger til landingssidens URL. Du kan selv give den et passende navn og en anden værdi end true, hvis det giver bedre mening:

<script>

(function() {

  var setCookie = function(cname, cvalue, exdays) {

  var d = new Date();

  d.setTime(d.getTime() + (exdays*24*60*60*1000));

  var expires = "expires="+ d.toUTCString();

  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";

}

  setCookie('NAVN PÅ COOKIE', true, 3600);

})();

</script>

 

Fordele ved mulighed #1

  • Det kræver ikke udviklerhjælp og kan hurtigt eksekveres, hvis du sidder på et mindre kontor med færre medarbejdere
  • Det vil ikke frasortere dine kunder, hvis de ofte er til møde hos jer og benytter jeres wifi

Ulemper ved mulighed #1

  • Overskueligheden og kontrollen med denne løsning formindskes jo flere personer, der skal frasorteres
  • Egner sig ikke til store organisationer med mange samarbejdspartnere, da det er svært at sikre sig, at alle får besøgt landingssiden
  • Er ekstra følsom overfor de personer, som jævnligt sletter deres cookies

Mulighed #2: Sæt en cookie via serverside script

Ved alle hjemmesidebesøg skal serveren modtage brugerens IP-adresse for at kunne behandle anmodningen.

Det udnytter vi til at sætte en cookie, når anmodningen matcher en af vores interne IP-adresser.

PHP-scriptet her modtager brugerens IP og matcher det op mod en defineret liste (her er der to IP-adresser, men der kan tilføjes flere efter behov).

Hvis den finder et match, sætter den en cookie med navnet ip_ignore og værdien true – ellers sker intet:

<?php
/*
Plugin Name: OP IP cookies for GTM
Author: OnlinePartners
Author URI: http://onlinepartners.dk/
Version: 0.0.1
Description: Adds a cookie indicating "internal" IP - to use in GTM to ignore traffic
*/

function ip_cookies_for_gtm($in)
{
     $ips = [
          '78.143.96.185',
          '176.23.175.110',
     ];

     $visitorIP = ip_get_the_user_ip();

     if(in_array($visitorIP, $ips)) {
          $cookieName = 'ip_ignore';
          setcookie($cookieName, "true", time()+(3600*24), COOKIEPATH, COOKIE_DOMAIN);
     }
}
add_filter('init', 'ip_cookies_for_gtm' );

function ip_get_the_user_ip() {
     if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
          //check ip from share internet
          $ip = $_SERVER['HTTP_CLIENT_IP'];
     } elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
          //to check ip is pass from proxy
          $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
          $ip = $_SERVER['REMOTE_ADDR'];
     }

     return $ip;
}

Fordele ved mulighed #2

  • Det er mere robust end #1, da det bliver fornyet, hver gang besøget sker fra en af IP-adresserne, der matches mod. Det er derfor mindre følsomt overfor udløb og sletning af cookies.

Ulemper ved mulighed #2

  • Det kan kræve udviklerhjælp at få det implementeret serverside såvel hver gang der skal tilføjes endnu en IP-adresse til listen

Bonus: Stop alle trackingscripts ved match

Hvis du er ligeglad med at kunne kigge på din interne trafik, er en anden mulighed at få server-scriptet til at stoppe alle 3-parts scripts fra overhovedet at eksekvere, når IP’en matcher listen.

Det besværliggør dog fejlfinding i sporingen, da der ikke er mulighed for at kigge på de data, som (ikke) bliver sendt.

Filtrer din trafik

I GTM kan du nu oprette en Førstepartscookie-variabel med det navn, du har valgt, så du kan benytte værdien fra cookien i dine tags.

Herefter skal vi medsende cookiens værdi i vores Page View tag under Flere indstillinger -> Tilpassede dimensioner. Her skal du krydse af i Aktivér tilsidesættelse af indstillinger i dette tag for at synliggøre punktet Flere indstillinger.

Ideelt set har du dog sat det op via en Google Analytics-indstillinger-variabel, hvor du indsætter Førstepartscookien som dimensionsværdi. Indeks skal sættes til det samme indeks, som står ud for dimensionen, når du opretter den i Google Analytics:

Nu modtager Google Analytics alt den data, vi skal bruge for at kunne filtrere.

Opret en tilpasset dimension og sæt omfang til “Bruger”. Dermed bliver dimensionen lagt i den besøgendes Google Analytics-cookie. Det betyder, at uanset hvorfra de fremadrettet benytter deres browser, så vil GA genkende dem – medmindre GA-cookien udløber eller bliver slettet.

Nu kan vi opsætte filteret. Vælg Ekskluder og tag din nye tilpassede dimension under Filterfelt. Filtreringsmønster er lig med ‘true’, som er værdien i cookien, hvis du benytter de scripts, der står ovenfor.

Ovenstående kan også vendes rundt til Inkluder, hvis du har en visning, hvor du vil undersøge den interne trafik.

    Du kan efterfølgende tjekke og validere, om du bliver sorteret fra via Realtidsrapporten i Google Analytics, eller hvorledes hittet bliver behandlet i Google Analytics via en recording i Google Tag Assistant.

    I Google Tag Assitant vil det blive anført, hvorvidt hittet blev sorteret fra af et filter:

     

    Har du input eller spørgsmål?

    Hvis du har erfaring med øvrige filtreringsmuligheder, efter du er begyndt at anonymisere dine IP-adresser – eller har spørgsmål til ovenstående, så hører jeg gerne fra dig.

    Hold dig ikke tilbage fra at benytte kommentarfeltet nedenfor til input eller yderligere afklaring.

     

    Klaus Wrensted Jensen
    Skrevet af
    Klaus Wrensted Jensen
    Brugbar artikel? Del gerne med dit netværk

    Et svar til “Kom uden om IP-anonymisering efter GDPR: 2 alternativer til IP-filtre i Analytics

    1. Et alternativ er, kun at anonymizere IPen for brugere der ikke har givet consent.
      Det gør vi i vores tilfælde. Alle der besøger siden har som udgangspunkt anonymiseret IP, ligesom Ad features i GA er slået fra osv. Men så snart de giver deres accept i vores cookiebar/GDPR-bar, så aktiverer vi IP sporing, Ad features mv.

      Vi får selvfølgelig nogle hits der er misvisende, indtil folk giver deres consent, men derefter mener jeg, at vi har et mere overskueligt setup end det I beskriver her.
      Det er også lige så let at bede de interne samt samarbejdspartnere om at besøge hjemmesiden og give accept i cookiebaren, som at bede dem besøge en landingsside til formålet.

    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

    Mød vores team

    Meet out team