Filtro IP in Google Tag Manager

ip-networkArticolo un po’ tecnico per gli utilizzatori del Google Tag Manager (GTM). C’è una cosa che manca in GTM ed è la possibilità di creare dei Trigger in base all’indirizzo IP.

Perché manca una cosa così importante? Perché il GTM è uno strumento che lavora esclusivamente lato client, ovvero sul browser dell’utente che esegue una pagina. Sostanzialmente non è altro che una serie di javascript che in base a determinati input, fa cose. Ma cose tutte sul browser del nostro caro e amato utente.

Javascript, nativamente, non ha la possibilità di reperire l’indirizzo IP dell’utente che sta navigando: è una funzionalità riservata solamente ai linguaggi server-side (asp, php, coldfusion, …). Quindi? Ci sono 2 strade:

  • Passiamo l’IP del nostro utente (preso dalla variabile server HTTP_HOST) tramite il dataLayer
  • Cerchiamo di ottenere l’IP tramite un tecnicismo definito IP_Barbatrucco

 

Trovare l’IP in Javascript

Ecco il titolo è bello e eloquente, la risposta però – come detto sopra – è “NON SI PUO'”. Piano però… in javascript possiamo sfruttare le chiamate asincrone (presente AJAX?) ovvero chiamate che non interrompono l’esecuzione della pagina ma che ci consentono di andare a prendere dati fuori dalla pagina stessa, un po’ come se aprissimo una nuova tab nel browser dell’utente ma a sua insaputa… (silenzio!).

Quindi a questo punto cosa ci serve per completare la ricetta e ottenere in Javascript l’IP dell’utente?

  • Una chiamata asincrona in javascript
  • Verso un sito esterno
  • Che mi dia l’indirizzo IP di chi ha fatto la chiamata (lo script, ma per conto dell’utente)

Un po’ di ricerche e ZAC uno spettacolare post di uno dei siti più belli del mondo: stackoverflow. Et voilà lo script pronto, con una leggerissima mia revisione ottimizzante:

function () {
	if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
	else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);
	xmlhttp.send();
	hostipInfo = xmlhttp.responseText.split("\n");
	for (i=0; hostipInfo.length >= i; i++) {
		ipAddress = hostipInfo[i].split(":");
		if ( ipAddress[0] == "IP" ) return ipAddress[1];
	}
	return false;
}

Se ti stai chiedendo perché la funzione non ha il nome, il motivo è che quella funzione la inseriamo in Google Tag Manager, come variabile di tipo “Custom JavaScript”.

GTM: Get User IP

 

La funzione ti restituirà l’IP dell’utente navigatore, proprio qualcosa tipo: 192.168.0.1 (o molto simile…).

Il gioco è praticamente fatto. Non ti resta che creare un Trigger (come diavolaccio vuoi te) e nelle condizioni mettere “User IP” e le condizioni che desideri (stringa secca, regexp, …).

Quando usarla? Tipo per fare in modo che determinati script di tracking (penso al mondo dell’usabilità) non traccino il proprio IP mentre si fanno i test.
Dubbi? Citofonare Trocca… ah ah ah  che ringrazio per il guest post di qualche settimana fa a tema GTM e Trigger Tracking.

Loading Facebook Comments ...

2 pensieri su “Filtro IP in Google Tag Manager

  1. Paolo Selva

    Molto interessante, grazie. Sto scoprendo giorno dopo giorno le possibilità di Google Analytics, ma è difficile trovare un buon manuale. Sapete consigliare qualche valida pubblicazione in merito? Grazie, Paolo.

    Rispondi
    1. Merlinox Autore articolo

      Paolo in Italia consiglio di seguire Filippo Trocca e Marco Cilia e i loro rispettivi siti.
      In realtà – se posso consigliarti – secondo me più importante studiare l’analytics (intesa come teoria) che studiare uno strumento che è in costante evoluzione, come Google Analytics.

      Se però vuoi approfondire quello trovo l’infinito anche solo nella guida ufficiale di Google o nel percorso di formazione per acquisire la certificazione Google Analytics.

      Rispondi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *