Come filtrare il traffico interno con Anonymize IP in Google Analytics

By Febbraio 18, 2020Marzo 27th, 2020Configurazione Google Analytics

Con l’avvento del GDPR la funzione di anonimizzazone dell’indirizzo IP memorizzato in un account Google Analytics è diventata obbligatoria per legge. Questa semplice impostazione, che permette di mascherare parte degli indirizzi IP degli utenti, ha un side effect piuttosto importante durante la fase di filtraggio del traffico interno (cioè il traffico proveniente, ad esempio, dagli IP aziendali o dagli IP di chi fa smart working). Se mascheriamo l’indirizzo IP di tutti gli utenti, mascheriamo anche l’indirizzo degli utenti interni, di conseguenza non potremmo più scinderli dagli altri utenti basandoci solamente sull’IP.

In questi due schemi riassumo la situazione:

filtro-ip-interno-senza-anonimize
1
L’indirizzo IP dell’utente viene inviato a GA in un hit.
2
Un filtro applicato alla vista elimina il traffico dell’IP desiderato dai report.
3
I report sono “puliti” dal traffico interno

Situazione pre GDPR, senza Anonymize IP

filtro-ip-interno-con-anonimize
1
L’indirizzo IP dell’utente viene oscurato da Anonimize IP e inviato a GA in un hit.
2
Il filtro applicato alla vista è inefficace in quanto l’IP è stato precedentemente “anonimizzato”.
3
I report includono il traffico interno.

Anonymize IP e filtro IP applicati insieme

Sono molte le soluzioni che si possono attuare per risolvere questo problema, dipende dal sistema in cui operate e dai vostri utenti interni. Nei prossimi capitoli vi propongo 3 soluzioni differenti (prima ricorda di verificare se il tuo account ha Anonymize IP attivo).

1. Cattura dell’IP del visitatore tramite data layer

Se hai Google Tag Manager installato nel sito, puoi utilizzarlo per catturare l’IP del visitatore e immetterlo nel data layer, l’oggetto Javascript che Tag Manager utilizza per raccogliere i dati del sito web destinati ad essere immessi nei diversi tag (leggi: Cos’è il data layer). Una volta immesso nel data layer, l’IP sarà poi sottoposto ad un controllo (è un indirizzo interno o esterno all’organizzazione?) e utilizzato come discriminante durante l’attivazione dei tag.

Esistono due modalità per catturare l’IP del visitatore, client side o server side.

In pratica

Intercettare l’IP client side

Puoi intercettare l’IP tramite l’esecuzione di un codice Javascript da attivare nel browser dell’utente. Il codice contatterà un servizio esterno che restituirà l’IP del visitatore. Una volta che l’IP sarà in tuo possesso, potrai verificare tramite una tabella RegEx se questo IP corrisponde o meno ad un IP interno, a quel punto inserire in una hit una dimensione personalizzata che identifica il traffico interno. Vediamo come fare.

  • In Tag Manager, Crea un nuovo tag di tipologia Custom Html e inserisci il seguente codice:
<script type="application/javascript">
function getIP(json) {
	dataLayer.push({"event":"ipEvent","ipAddress" : json.ip});	
}
</script>
<script type="application/javascript" src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
  • Crea un trigger che si attivi solamente quando il valore del referrer non è il dominio del sito stesso, ovvero tutte le page view dopo la prima. Chiaramente dovrai sostituire il mio dominio con il tuo. Associa questo trigger al tag definito sopra.
  • Crea una variabile di tipo Data Layer avente valore ipAdress (lo stesso valore immesso nel data layer attraverso il push dell’event definito sopra).
  • Crea una variabile di tipo Tabella delle espressioni regolari avente valore di input la variabile data layer contenente l’indirizzo IP (o più indirizzi IP, nel caso tu abbia una serie di IP da escludere).
  • Nella variabile di configurazione Analytics, crea una dimensione personalizzata avente come valore la variabile tabella creata nel punto precedente.
  • Crea in Google Analytics la nuova dimensione personalizzata, in Amministratore > Propietà > Definizioni personalizzate > Dimensioni personalizzate.
  • Non rimane che filtrare il traffico tramite un filtro da Amministratore > Vista > Filtri (a livello vista, perché le dimensioni personalizzate sono definite a livello proprietà, dunque non potrai servirti dei filtri a livello account). Fatto!

Pro: questo metodo ti permettere di essere indipendente dal CMS e dalla tecnologia su cui si basa il sito web.

Contro: devi fidarti del servizio esterno che contatti, in primis deve essere affidabile a livello tecnico (se ha down time frequenti il sistema non funzionerà a dovere) e in secondo luogo potresti incappare in violazioni lato GDPR, in quanto passi a terzi informazioni sensibili sui tuoi utenti.

Intercettare l’IP server side

La soluzione server side è identica alla soluzione client side, con l’unica differenza che l’indirizzo IP dell’utente viene generato dal server, attraverso un istruzione in linguaggio back end come PHP, Java o Ruby, e poi immessa attraverso un push del data layer. In esempio una soluzione in PHP.

<script>window.dataLayer = window.dataLayer || [];
  window.dataLayer.push({
    "ipAddress": ""
  });</script>

Plugin WordPress per includere l’IP nel data layer

Se non hai dimestichezza con il codice e stai utilizzando WordPress, puoi installare il plugin Google Tag Manager for WordPress e abilitare con un singolo click questa funzionalità in maniera automatica. Una volta installato il plugin, dal pannello di amministrazione di WordPress vai in Impostazioni > Google Tag Manager, naviga nella tab Basic Data > Visitors e spunta l’opzione Visitor IP.

Una volta che il dato è stato immesso nel data layer, puoi seguire le istruzioni descritte sopra a partire dalla creazione della variabile di tipo Data Layer avente valore ipAdress.

Pro: soluzione robusta che non presenta violazioni lato GDPR.

Contro: potresti aver bisogno di uno sviluppatore per implementare questo metodo.

2. Salvare un cookie se l’utente è loggato (o visita un determinato URL)

Questo approccio è solido, a patto che i visitatori interni tornino nel sito abbastanza spesso, ad esempio settimanalmente. In sostanza, si imposta un cookie che “etichetta” i visitatori come interni a seconda del loro stato, ad esempio la presenza di un login o la visita ad un determinato url. Questa informazione viene poi inviata tramite dimensione personalizzata a Google Analytics.

Potete quindi filtrare i vostri dati di Google Analytics sulla base di questa etichetta, oppure utilizzare GTM per non inviare il traffico alla proprietà di Google Analytics.

In pratica

  • Il primo step consiste nell’attivare la voce “Logged in status” nel plugin Google Tag Manager per WordPress. Nel caso utilizzi un CMS differente è necessario dialogare con gli sviluppatori affinché rendano disponibile nel Data Layer questa informazione durante la sessione loggata nel sistema. Sotto trovi un esempio del codice da utilizzare.
<script>
    window.dataLayer = window.dataLayer || [];
    dataLayer.push({
        'internalUser' : true
    });</script>
  • Una volta attivata l’opzione o “pushata” l’informazione nel Data Layer, dovreste vederla nel debug di GTM.
  • Creiamo ora una variabile di livello dati dove salviamo il valore true o false contenuto nel Data Layer in corrispondenza del VisitorLoginState.
  • Crea un’attivatore che si attivi in alcune Page view, quelle in cui la variabile Data Layer VisitorLoginState è settata su true.
  • Crea un cookie tramite un tag HTML. Assegna l’attivatore creato nel punto precedente al tag. Il cookie, che identificherà l’utente come interno, rimarrà salvato nel device per 3 anni.
<script>
// Imposta la scadenza dei cookie a 3 anni
	var cookieName = "internalTraffic"; // Nome del cookie
	var cookieValue = "true"; // Valore del cookie
	var date = new Date();
	var dateTimeNow = date.getTime();
	date.setTime(dateTimeNow + 94608000000);
	var expiration = date.toUTCString();
	// Imposta il cookie per tutti i sotto domini
	document.cookie = cookieName+"="+cookieValue+"; expires="+expiration+"; path=/; domain=." + location.hostname.replace(/^www\./i, ""); // Sets cookie for all subdomains
</script>
  • Crea una variabile cookie in GTM. Il nome del cookie corrisponde a quello settato nel punto precedente.
  • Nella variabile di configurazione Analytics, crea una dimensione personalizzata avente come valore la variabile tabella creata nel punto precedente.
  • Crea in Google Analytics la nuova dimensione personalizzata, in Amministratore > Proprietà > Definizioni personalizzate > Dimensioni personalizzate.
  • Non rimane che filtrare il traffico tramite un filtro da Amministratore > Vista > Filtri (a livello vista, perché le dimensioni personalizzate sono definite a livello proprietà, dunque non potrai servirti dei filtri a livello account). Fatto!

Pro: è relativamente semplice individuare lo stato “Logged in” a prescindere dal CMS.

Contro: i metodi cookie based sono destinati ad essere sempre meno affidabili causa metodologie di tracking prevention. Inoltre potresti aver bisogno di uno sviluppatore per implementare questo metodo.

3. Estensione per Chrome “Componente aggiuntivo per disattivare Analytics”

Con l’estensione per Chrome Componente aggiuntivo per disattivare Analytics puoi istruire il codice JavaScript di Google Analytics per non inviare informazioni da qualsiasi sito, escludendo in questo modo il traffico proveniente da un determinato browser.

Pro: soluzione semplice per piccoli team o individui, questa soluzione può funzionare anche nel caso di aziende con IP dinamici o persone che lavorano da un indirizzo IP sempre differente. Chiaramente dovrai rendere obbligatorio l’utilizzo di Chrome a tutto il team.

Contro: non hai controllo sui browser utilizzati e non hai controllo sull’effettiva abilitazione/disabilitazione dell’estensione.

Esistono diverse soluzioni al filtraggio degli IP interni con Anonymize IP, spero che questo articolo ti aiuti a prendere coscienza del problema permettendoti di trovare la soluzione più adatta al tuo sistema e alla tua organizzazione. Hai altri metodi interessanti da proporre? Fammelo sapere nei commenti!

Vai all’indice della guida alla configurazione di Google Analytics.

Leave a Reply

Leave a Reply