Comment exclure le trafic interne dans Google Analytics, tout en respectant le RGPD ?

par Mar 19, 2020Analytics, Google Universal Analytics1 commentaire

Tout le monde en parle, le Règlement Général de la Protection des Données (RGPD) régit le monde de la data et nous devons faire face à de nombreuses parades pour conserver l’anonymat des internautes. Ici, nous parlerons de l’anonymisation des IP dans Google Analytics, afin de pouvoir exclure le trafic interne de vos rapports dans Google Analytics tout en respectant le RGPD. Le fait d’enlever les IP internes permet de ne comptabiliser que les sessions « réelles » réalisées.
Là où, avant, nous utilisions une simple règle de filtrage dans Google Analytics (autrement dit, exclusion des IP en clair), nous allons faire face désormais à une manipulation plus fastidieuse mais efficace, pérenne et surtout légale.
Ancienne méthode :
Capture d’écran 2020-03-19 à 10.04.18
Cette technique est obsolète et nous passerons désormais par Google Tag Manager pour gérer les IP internes. En effet, lorsque nous définissons le champ “anonymizeIP” dans la balise Google Analytics dans Google Tag Manager, ce filtre n’a plus aucun sens et ne fonctionne plus car les adresses IP deviennent cryptées.
Pour contrer cela, nous allons procéder par étape : 

  • Étape 1 : Savoir écrire son adresse IP sous forme de REGEX (expression régulière)

De nombreux sites permettent d’écrire facilement des REGEX. Ainsi, deux adresses IP lambda notées 195.162.1.1 et 194.188.5.1 seront notées de cette façon en REGEX : (195\.162\.1\.1|194\.188\.5\.1)

  • Étape 2 : Ajout du script Javascript

Ensuite, il suffit de créer une balise contenant ce script dans GTM
JavaScript

<script>
//Define cookie functions - used to create and read cookies
function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/"; //Regular cookie
    
    //Create a cookie for main domain (coded for root domain and www. domain only)
    var domain = location.hostname;
    document.cookie = name+"="+value+expires+"; path=/;domain="+domain+";"; //Regular cookie
    var domain = domain.replace("www","");
    document.cookie = name+"="+value+expires+"; path=/;domain="+domain+";";
}
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function eraseCookie(name) { createCookie(name,"",-1); } //Check if internal or external IP function getIP(){ var HttpClient = function() { this.get = function(aUrl, aCallback) { var anHttpRequest = new XMLHttpRequest(); anHttpRequest.onreadystatechange = function() { if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200) aCallback(anHttpRequest.responseText); } anHttpRequest.open( "GET", aUrl, true ); anHttpRequest.send( null ); } } var client = new HttpClient(); client.get('https://api.ipify.org?format=json', function(response) { var result = JSON.parse(response); var ip = result.ip; var ipInternal = /^(195\.162\.1\.1|194\.188\.5\.1)$/i; //replace with your own IP adresses if(ip.search(ipInternal) >=0) {
//Is internal IP
createCookie("isInternal",1,30); //Save for 30 days
eraseCookie("isExternal");
console.log("Is internal IP: " + ip);
} else {
//Is external IP
createCookie("isExternal",1,7); //Save for 7 day
eraseCookie("isInternal");
console.log("Is external IP: " + ip);
}
});
}
getIP(); 
</script>

Ce long script permet, en outre, de vérifier si l’IP est interne ou non. Si l’IP est comprise dans la REGEX, un cookie propriétaire sera attribué à l’utilisateur le définissant sur isInternal. Sinon, le cookie attribué sera isExternal, tout simplement. 
Capture d’écran 2020-03-19 à 11.25.18

  • Étape 3 : Définir les cookies dans GTM sous forme de variables

Ensuite, nous récupérons les cookies propriétaires sous forme de variables dans GTM.Capture d’écran 2020-03-20 à 15.50.04

Capture d’écran 2020-03-20 à 15.52.27

  • Étape 4 : S’assurer que le script ne se déclenche pas à chaque rechargement de page

Capture d’écran 2020-03-20 à 15.54.47
La manipulation est simple, il faut ajouter des exceptions sur le déclencheur du type : si la variable cookie (externe ou interne) n’est pas définie (undefined), on déclenche le script jusqu’à ce que le cookie soit défini.

  • Étape 5 : Réunir les 2 variables cookies en une seule

JavaScript

function () {
var returnValue = "true";
var external = {{cookie - External traffic}};
var internal = {{cookie - internal traffic}};
 
if(external == 1) {
returnValue = "true";
}
else if (internal == 1) {
returnValue = "false";
}
else {
    returnValue = "true";
    }
  
return returnValue;
}

Pour permettre d’obtenir une variable qui renverra de façon binaire « TRUE » ou « FALSE » selon les valeurs des cookies.

  • Étape 6 : Créer un tableau de conversion 

Ce tableau de conversion a pour objectif d’anonymiser toutes les IP externes (autrement dit, lorsque la variable JS sera définie sur “true”.
Capture d’écran 2020-03-20 à 15.56.04Attention : Ne pas oublier de mettre les ‘ ‘ car seul les informations booléennes sont prises en compte.

  • Étape 7 : Ajouter toutes ces modifications dans la balise GA Settings

Comme à chaque fois, il faut bien veiller à ajouter une ligne pour la dimension personnalisée liée à la variable créée ainsi qu’ajouter un champ à définir sur la balise pour garantir l’anonymisation des IP (sinon tout ce que nous venons de faire ne servirait à rien).
Capture d’écran 2020-03-20 à 16.08.30
Enfin, il suffit d’aller dans Google Analytics pour traduire tout ce que nous venons de faire dans GTM. 

  • Créer la dimension personnalisée correspondante

Capture d’écran 2020-03-20 à 16.11.24
Ici, veillez à bien conserver le même index entre celui attribué dans GTM et celui attribué dans GA, il doit être identique (dans l’exemple ici, l’index est le 15).

  • Créer un filtre se basant sur la dimension personnalisée créée juste au dessus

Capture d’écran 2020-03-19 à 11.37.48
Voici comment anonymiser les IP des visiteurs tout en permettant l’exclusion du trafic interne sur vos vues Google Analytics. 
Pour toute demande de renseignement ou d’accompagnement, n’hésitez pas à entrer en contact avec l’équipe MYD.