Guida Avanzata

Guida Avanzata: Come conoscere la città di un utente con Google Tag Manager

[AGGIORNATO 01 Agosto 2022]

Attenzione: in seguito al provvedimento del Garante Privacy italiano che ha dichiarato illecita l’implementazione di Google Universal Analytics (GA3) su un sito web, è necessario eliminare il prima possibile la proprietà di GA3 dai propri progetti web e passare subito a GA4.

Se non hai dimestichezza con GA4 e desideri imparare a padroneggiare nel modo corretto questo strumento, nel mio libro su GA4 “Google Analytics 4 per chi inizia” ti guido passo passo per imparare a utilizzarlo in maniera semplice e pratica.

Probabilmente avrai notato che utilizzando l’IP Anonymize su Google Analytics, improvvisamente i dati relativi ai Paesi e alle Città presenti nei report di Google Analytics hanno iniziato ad essere sballati o semplicemente meno precisi.

Bene, devi sapere che questo è proprio a causa dell’anonimizzazione dell’IP perché fisicamente Google Analytics non possiede più il dato preciso. Doh, che brutta cosa ‘sta GDPR.

Ok, ti ho spiegato come recuperare comunque l’indirizzo IP grazie Google Tag Manager nonostante l’anonymize, ma resta il fatto che su Google Analytics non avrai più il dato preciso (e ti ricordo che secondo le TOS di GA non è possibile salvare dati sensibili).

“Ehi Matteo, ma che c’entra l’IP con l’identificazione della città?”

Oh, ma certo che c’entra. C’entra come la panna su una tazza di cioccolato caldo!

Premessa sul funzionamento dell’IP di navigazione

Devi sapere che grazie all’indirizzo IP è possibile risalire da dove proviene la visita. Quindi quando ti colleghi ad internet e il tuo provider di connettività (quello che ti dà l’ADSL o la fibra per capirci) ti assegna un indirizzo IP di navigazione, di solito da una “cabina” più vicina a te. Quindi, dal tuo PC o Smartphone stai comunicando a tutti che stai navigando da quell’IP che si trova in quel punto perché la “cabina” è fisicamente là.

In realtà per il mobile (brutto maledetto) l’IP continua a cambiare a seconda di dove si trova ma con una precisione non esattamente così fantastica. Io, per esempio, ora sono a Vicenza ma dal mio Smartphone sono con IP che risiede a Rho (che non sta in un’altra regione).

La soluzione potrebbe essere la richiesta di usare la geolocalizzazione dei browser (che ti restituisce la latitudine e longitudine), ma ci vuole l’autorizzazione da parte dell’utente (hai presente il messaggio in alto sulla barra che ti chiede “il sito vorrebbe sapere dove ti trovi”? Ecco, quella roba lì).

Se per il tuo business il riconoscimento della località è un punto fondamentale allora puoi stare tranquillo, perché in questa guida ti spiegherò come recuperare la città attraverso un servizio esterno.

Piccolo appunto: questa guida ha preso spunto dall’articolo di Simo Ahava (trovi il link in fondo). Sia chiaro non ho copiato, ma creato un’alternativa 😉

Step 1 – Registrati sul servizio di ipgeolocation.io

La prima cosa da fare è creare un account sul servizio di ipgeolocation.io

Il servizio è disponibile con diversi tipologie di abbonamento, che differiscono tra loro per il limite di chiamate a disposizione. In base al traffico totale del tuo sito potrai scegliere quello che si adatta meglio alle tue esigenze. La versione base “Developer” gratuita ha un limite di 1000 chiamate al giorno, anche se il suo utilizzo dichiarato è “per fini non commerciali”.

Crea in pochi minuti il tuo account per ottenere la tua API KEY con cui poter fare le richieste da Google Tag Manager.

Una volta che avrai concluso la registrazione, all’interno del tuo profilo avrai la chiave che ti è stata assegnata.

Step 2 – Imposta la variabile contenente la key

Accedi al contenitore di Google Tag Manager dove vuoi implementare questa guida.

Per prima cosa crea una variabile che conterrà la tua API KEY.

  • Sezione Variabili > Definite dall’utente > Nuova
  • Tipo: Costante
  • Valore: incolla l’API KEY
  • Salva con il nome IP Geolocation Key

Step 3 – Crea il tag Html personalizzato

Incolla il seguente script in un nuovo tag. Puoi personalizzarlo in base alle tue esigenze seguendo la documentazione.

  • Sezione Tag > Nuovo > HTML Personalizzato
  • Copia questo script all’interno
<script>
  //by Tag Manager Italia
  var getJSON = function(url, callback) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'json';
    xhr.onload = function() {
      var status = xhr.status;
      if (status == 200) {
        callback(null, xhr.response);
      } else {
        callback(status);
      }
    };
    xhr.send();
  };
  //If you want other parameters refer to the documentation: https://ipgeolocation.io/documentation/ip-geolocation-api.html
  //In this case we request only the City parameter
  getJSON('https://api.ipgeolocation.io/ipgeo?apiKey={{IP Geolocation Key}}&fields=city', function(err, data) {
    if (err != null) {
      console.error(err);
    } else {
      var dlName = google_tag_manager[{{Container ID}}].dataLayer.name;
      window[dlName] = window[dlName] || [];
      //In the dataLayer push add the values you need
      window[dlName].push({
       'event': 'geolocation.get',
        'geolocation.ip': data.ip,
        'geolocation.city': data.city
      })
    }
  });
</script>
  • Imposta come attivatoreTutte la pagine” oppure solo per le pagine che ti interessano
  • Salva con il nome “Script – IP Geolocation API

C’è anche una libreria JavaScript a disposizione, ma con una semplice chiamata GET otteniamo lo stesso risultato, meglio no? Ok, forse la capisce solo un tecnico ‘sta cosa 😛

Step 4 – Verifica il funzionamento

Dai che ci siamo quasi. Verifica che tutto funzioni con il debugger di Google Tag Manager.

Se funziona tutto, guardando il contenuto del dataLayer, dovresti avere l’evento geolocation.get con il dato della città da dove stai lavorando.

Step 5 – Crea la variabile di livello dati

Se tutto funziona, crea una variabile con Tag Manager.

  • Sezione Variabili > Definite dall’utente > Nuova
  • Tipo: Variabile di Livello Dati
  • Nome variabile livello dati: geolocation.city
  • Salvala con il nome “dlv – geolocation.city

Con questa variabile potrai, ad esempio:

  • inviare la città a Google Analytics, attraverso una Dimensione Personalizzata
  • inviare il dato con un evento a Google Analytics
  • mostrare un popup personalizzato in base alla città
  • eventualmente, precompilare i campi di residenza e/o spedizione all’interno di un form

E tu come stai pensando di implementare questa guida? Fammelo sapere nei commenti!

LINK UTILI

Matteo Zambon

View Comments

  • Ciao, premettendo che ho inserito l'ip anonimyzed, adesso ho bisogno di creare un grafico con i dati demografici sulla località(paese e città). Avrei utilizzato il dato che è già presente in analytics pero da come ho capito inserendo l'ip anonimyzed i dati demografici già presenti sono sballati. Ho fatto tutto quello che mi diceva la guida, ho creato il html personalizzato con l'attivatore e la sua variabile. Avendo poi creato la variabile di livello di dati, poi mi dici che posso usare questa variabile per inviare la città a Google Analytics, attraverso una Dimensione Personalizzata o tramite un evento, ma come si fa? Riesco comunque a creare un grafico tipo quello che prendevo direttamente da analytics?

Recent Posts

Attribuzioni errate in GA4: cause e soluzioni al problema

Negli ultimi mesi hai notato in Google Analytics 4 un calo improvviso e inspiegabile nelle…

3 mesi ago

Come creare una Dashboard Ecommerce per analizzare i dati degli acquisti Nuovi e di Ritorno

Se ti trovi su questa guida è perché hai compreso che solo attraverso la Data…

4 mesi ago

Consent Mode v2 e calo dei dati delle audience e del traffico in Google Ads: cause e soluzioni

Da quando hai configurato la Consent Mode v2 (CM v2) hai notato cali improvvisi o…

6 mesi ago

Data Leak Google: Chrome e le implicazioni per la Privacy e la Digital Analytics

Premesso che non è possibile conoscere l'esatto funzionamento né di Chrome, né degli algoritmi di…

6 mesi ago

Come creare Report in GA4 per analizzare campagne advertising e marketing con UTM

Da quale canale di marketing arriva il maggior numero di conversioni? Quale campagna di marketing…

6 mesi ago