Guida Avanzata

Guida Avanzata: Tracciare User ID di Hotjar in Google Analytics

[Aggiornata 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.

In fondo a questo articolo troverai il link alla guida su come tracciare lo User ID di Hotjar in GA4 🙂

Fammi indovinare, stai già usando Hotjar e vorresti spingere l’integrazione con Google Analytics.
Come possiamo fare?

Ovviamente devi aver già configurato Hotjar con Google Tag Manager e avere disposizione almeno una dimensione personalizzata.

Devi sapere che, come per molti tool di web analytics, Hotjar utilizza un cookie per capire se sei un utente nuovo o di ritorno. Dentro alle statistiche di Hotjar è presente un valore “univoco” per utente derivato proprio da quel cookie. Ecco un esempio:

Quindi se riuscissimo ad utilizzare quel cookie e importalo su Google Analytics potremmo utilizzare la potenza di fuoco di GA.

La bella notizia è che è possibile farlo.

L’ottima notizia è che te la sto per spiegare passo passo.

STEP 1 – CREIAMO UNA VARIABILE JAVASCRIPT PERSONALIZZATA

Update: Hotjar ha cambiato ancora e ora bisogna aspettare qualche secondo per avere l’informazione necessaria

Estrapoliamo il valore completo del cookie attraverso la libreria JS di Hotjar, che “splittiamo”, recuperando la porzione di valore che ci interessa.

  • Variabili > Nuova > Configurazione variabile.
  • Tipo di variabile: Javascript personalizzato.
  • Inserisci questo codice Javascript:
function() {
  var hotjarUserId = hj.globals.get("userId").split("-");
  
  if(hotjarUserId[0] != undefined)
  {
    return hotjarUserId[0];
  }
  else
  {
    return 0;  
  }
}
  • Nome della Variabile: “Hotjar – User Id”.

STEP 2 – CREA LA DIMENSIONE PERSONALIZZATA

Ora non ci resta che salvare questo dato su Google Analytics su una dimensione personalizzata:

  • Vai su Google Analytics.
  • Clicca su Amministrazione > Proprietà > Definizioni personalizzate > Dimensioni personalizzate.
  • Nuova dimensione personalizzata.
  • Nome: Hotjar User Id.
  • Ambito: Sessione.

Tieni a mente il valore numerico dell’indice (da 1 a 20). Nel mio caso è 1.

 

Non sai cos’è una dimensione personalizzata e vorresti capirne di più su Google Analytics?

STEP 3 – ATTIVATORE DI TIPO TIMER

Per permettere alla funzione di estrapolare lo user ID di Hotjar, dobbiamo attendere il caricamento della pagina. Quindi dobbiamo creare un nuovo attivatore che si attivi al dopo un tot di tempo. Dai miei test un timer di 3 secondi va più che bene. Chiaramente se un utente scappa prima che ci sia questa fase non avrai l’evento su Google Analytics (e nemmeno il valore di Hotjar User ID).

Creiamo l’attivatore:

  • Attivatori > Nuovo > Configurazione attivatore.
  • Tipo di attivatore: Timer
  • Interval: 3000
  • Limit: 1
  • Enable this trigger: Page Path > matches RegEx > .*

STEP 4 – INSERIAMO LA DIMENSIONE IN UN EVENTO DI GOOGLE ANALYTICS

Bene, ora abbiamo una dimensione su Google Analytics pronta a ricevere dati e l’attivatore pronto. Non ci resta che passare il valore della seconda variabile creata a Google Analytics, che contiene effettivamente il codice ID di Hotjar.

Inizialmente sfruttavo già il Tag di Google Analytics relativo alla PageView che è già presente in GTM. Purtroppo non è più possibile usare questo meccanismo perché il il valore dello User Id di Hotjar ci mette qualche secondo dopo l’evento Window Loaded. Lo tracceremo quindi con un Tag di tipo Evento di Google Analytics.

 

A questo punto inseriamo la dimensione personalizzata. Basterà scorre in basso e andare su

  • Altre impostazioni > Dimensioni personalizzate.
  • Clicca Aggiungi dimensione personalizzata.
  • Indice: qua inserisci il valore indice della dimensione personalizzata visto prima (nel mio caso il valore è 1).
  • Valore della dimensione: {{Hotjar – User Id}}
  • Seleziona Attivatore: Timer 3 secondi

 

In questo modo ora l’evento avrà una dimensione personalizzata che contiene il codice User ID di Hotjar.

Se le nuove implementazioni funzionano correttamente, adesso puoi tornare su Google Tag Manager e cliccare sul pulsante blu “Invia” per pubblicare ufficialmente le modifiche.

E se uso Google Analytics 4?

Se cerchi una guida di Google Analytics 4 che ti spieghi come tracciare lo User ID di Hotjar in GA4, allora non ti preoccupare 😀

Ecco la guida: Come tracciare lo User ID di Hotjar in Google Analytics 4

Ti è stata utile questa guida? Fammelo sapere nei commenti 🙂

A presto e buon Tag!

Matteo Zambon

View Comments

  • Ciao Matteo ,
    So che ormai dovrei guardare a GA4 però ho notato che non riesco più a matchare la custom dimensione "HotjarUserID" con "User ID" presente all'interno della piattaforma di Hotjar. Sapresti aiutarmi ? Grazie mille in anticipo

    Alessia

  • Ciao Matteo,

    Molte grazie per la tua chiara spiegazione.
    Sai se dovrebbe ancora funzionare o è obsoleto ormai?
    Il tag è attivato correttamente per me, ma per il momento non arrivano dati Hotjar.
    Hotjar è attivo con un sondaggio e heatmpas / registrazioni.

    Mi piace sentirlo.
    Grazie in anticipo!

    Saluto,
    Wouter

    • Grazie per le tue risposte rapide Matteo,
      Sono molto curioso della versione aggiornata.
      Purtroppo non sono in grado di aggiungere correttamente un attivatore di tipo orario a questo tag.
      Per ora non ricevo dati ID Hotjar in GA.

      Grazie ancora!

      Wouter

      • Ciao Wouter, ho appena aggiornato la guida :)

        Fammi sapere se ora è più chiaro.

        A presto!

    • Ciao Wouter :)
      Sì, è da cambiare perché ora Hotjar ci mette un po' a dare quell'informazione. Ti consiglio quindi di usare un evento GA con un attivatore di tipo timer di almeno 3 secondi. A breve aggiornerò la guida.

      A presto!

  • Ciao Matteo,

    la guida è datata, ma considerando la tua precisione immagino funzioni allo stesso modo.
    Ho dovuto aggiungere al tag di GA - Pageview l'attivatore All pages - Load Ready perché altrimenti non me lo legava a nessun tag. (nell'impostazione della creazione attivatore non c'era la finestrella References in basso, tanto per capirci) Ho fatto bene?

    Le configurazioni dei tag di GA e Hotjar sono perfettamente funzionanti, ma al momento se guardo in modalità debug sul tag di hotjar id mi dà undefined.

    Ovviamente su GA non vedo nessun id Hotjar, come posso risolvere?
    Grazie mille

    • Ciao Matteo, ho importato il tuo template per questo "hack" ma sembra che lo script non riesca a recuperare l'UsedID. Mi restituisce sempre "Undefined". Forse hanno cambiato qualcosa? Grazie.

      • Ciao Daniele, ho appena verificato e sembra tutto ok.
        Sei sicuro che il tag di Hotjar sia attivato? Deve ovviamente esserci lo script di Hotjar presente nella pagina :)

        Fammi sapere!

    • Grazie matteo per la disponibilità.

      Ancora nada.
      Nel tag base del pageview di GA devo togliere l'attivatore "All pages" che ho creato all'inizio?

      Ovviamente però il tag di GA - Pageview non verrà attivato su Page View ma solo su Window Loaded.
      Ma questo non va ad influire sulle hit del pagevew di Analytics?

      Spero di aver capito bene e ti ringrazio per la pazienza.

      Per la cronaca ho reinstallato tutti i tag e al momento in debug ho:

      - Pageview: GA - Pageview not fired on this Event
      - Window Loaded: GA Pagevew Succedeed

      Nelle variabili su tutti gli eventi però ho ancora Hotjar - User Id JavaScript personalizzato undefined undefined

      Sto un po' diventando matto...

      • Si Fabrizio, togli l'attivatore all pages e metti quello del window loaded. Devi avere un solo tag che spara l'evento di tipo pageview ad analyitics. A livello di influenza ci sarà un piccolo ritardo nel passaggio dell'hit a Google Analytics ma non è così impattante :)

        Fammi sapere!

    • Grazie Matteo, ora sembra funzionare a parte il fatto che ovviamente ora il tag pageview di GA viene eseguito due volte, sia su pageview che su window loaded.

      Non so se questo inficia i dati di analytics ma è l'unico modo per legare l'attivatore All pages load ready al tag di GA.
      Devo dirti che però ora Analytics non traccia più niente e tag assistant mi dà "Same web property ID is tracked twice."

      Ho cambiato installazione di GTM inserendolo attrverso il plugin di DuracellTomi, non so se può essere quello (mentre prima avevo usato un altro plugin).

      I Tags funzionano tutti, ma Analytics non più.

      • Ciao Fabrizio, non devi avere due tag di pageview. Se usi questa configurazione ti consiglio di lasciare solo il pageview del page load ready e togliere l'altro di pageview :)

        Fammi sapere :)

    • Ciao Fabrizio, allora il trigger da associare al tag è come da step 4, quindi hai fatto bene a crearlo a Load Ready.

      Per quanto riguarda il valore undefined lo avrai nella variabile finchè non sarai nell'evento "Window Loaded". Ovviamente Hotjar deve essere presente e installato con il Tag e con un attivatore a di tipo All pages pageview.

      Fammi sapere!

    • Ciao Emanuele
      come lo hai gestito così scatterà due volte il pageview che equivale che darei una frequenza di rimbalzo pari a 0 ogni volta. Quello che dicevo a Michele è che io creo un evento personalizzato dopo il pageload e lo uso per attivare un evento in GA (dove gli passo Hotjar e altre informazioni)

  • Ciao Matteo,
    ho una domanda sul GDPR e Hotjar: quello di Hotjar può essere considerato un cookie tecnico? Se un utente dovesse chiudere il banner sull'informativa all'uso dei cookie senza flaggare alcun tipo di consenso, devo bloccare lo script di tracciamento di Hotjar?
    Grazie in anticipo ;)

  • Ciao Matteo,
    Ottima guida, ma ti faccio una domanda, o meglio ti chiedo un'opinione.

    Con questa guida siamo costretti a ritardare l'attivazione del tag delle PageView fino all'evento Window Loaded. Per aggirare il problema e non rischiare di "perdere PageView preziose" bisognerebbe salvare il valore hj.pageVisit.property.get("userId"); in un "posto" accessibile anche al momento della PageView, come potrebbe essere un cookie proprietario.

    In questo modo valorizzeresti il cookie proprietario al primo evento Window Loaded di un certo utente, e dalla seconda PageView potresti iniziare a utilizzare il valore del cookie passandolo come custom dimension.

    Come la vedi?
    Grazie!

    • Ciao Matteo,
      Non intendevo duplicare il tag delle pageview, ma passare l’informazione dello userId di hotjar solo dalla seconda in poi (sfruttando un cookie per salvare l’id).

      Però l’idea di usare un evento forse è anche meglio.. essendo che in GA imposti lo userId come custom dimension a livello di sessione l’evento potrebbe andare bene! :)

      Grazie!

    • Ciao Michele, personalmente la gestisco con un evento di Google Analytics che uso anche per altre informazioni (esempio: vedere se usa AdBlock).

      Non farei doppia pageview, andrebbe ad azzerarti il bounce rate :)

      A presto e buon Tag!

  • Ciao Matteo, quando metto in preview mi da errore: La variabile sconosciuta "hotjarUserId" è stata rilevata in un'altra variabile. Modifica la variabile e rimuovi il riferimento alla variabile sconosciuta.
    Non capisco dove siat l'altra variabile, ho soltanto 4 variabili personalizzate e nessuna di quelle Hotjar.

    • Grazie mille Matteo, ho creato un tag GA con evento e collegato all'attivatore nel tuo Step 5 e con dimensione custom {{Hotjar – User Id}}
      Nel preview funziona senza problemi :)
      Grazie ancora del supporto. Sei l'unico ad aver scritto una guida decente sull'argomento. Dovresti tradurre tutto in Inglese secondo me.

      • Ciao Luca, grazie mille del feedback. Per la parte inglese credimi è in progetto (ma tempo e supporto per farlo è ancora troppo poco).

    • hai ragione, l'errore era il nome, non il contenuto!
      Comunque adesso in Preview > Window Loaded vedo sia la stringa completa 'd059xxxx-2666-3345-ecc.ecc' che quella che abbiamo estratto d059xxxx.
      Quindi mi sembra che vada bene, giusto?
      Se vado in Preview> Page View mi da le stringhe come "Undefined". E' per questo che nel tuo Step 5 suggerisci di aggiungere un altro attivatore? Quell'attivatore deve essere collegato al Tag GA Universal Analytics? Se si, voleov chiederti, quel Tag e' gia' collegato all'attivatore All Pages - Visualizzazioni di Pagina, ne aggiungo un altro?

      • Eh :)
        Il valore ce l'hai al caricamento della pagina. Quindi o crei un Tag GA con evento o sposti il pageview (che sconsiglio).

        A presto!

    • Ciao Matteo, ho ricontrollato due volte e sembra tutto a posto nelle variabili. Ho semplicemente copiato ed incollato i tuoi JS nelle 2 variabili e mi da errore.
      Tra l'altro mi chiedevo perche' servono due variabili? C'e' un motivo? Non sarebbe piu' semplice creare una singola variabile? Magari con questo JS:

      function() {
      var userId = hj.pageVisit.property.get("userId");

      var hotjarUserId = userId.split("-");

      if(hotjarUserId[0] != undefined)
      {
      return hotjarUserId[0];
      }
      else
      {
      return 0;
      }
      }

      • Ciao Luca, no non c'è un motivo specifico puoi farne anche una :)
        L'errore comunque mi sembra di capire che NON è il contenuto JS ma il nome che dai alla VARIABILE di GTM.
        Riesci a mandarmi lo screenshot eventualmente dell'errore?
        Fammi sapere!

    • Ciao Luca!
      Hai sicuramente sbagliato ad associarle. Stai attento alle maiuscole e minuscole. Consiglio: cancella e rifai tutto ;)

  • Hi Matteo.

    I have a question about step 5. You wrote that if a user runs away before Window Loaded, I won't have the Hit Pageview on Google Analytics.

    Is it a real problem? And how can I solve it? If I create second Universal Analytics tag in GTM with the All Pages - Window Loaded Trigger, would that be correct?

    • Hi Alex, step 4 and 5 are just examples. I usually use a custom GA event to handle the passage of the Hotjar user id.

      So I suggest you keep the pageview of the GA tag in the pageview event and create a custom event in the window loaded.

      Buon Tag ;)

    • Ok Giuseppe, così come l'hai configurato sembra sia corretto. Se provi a cercare l'id di hotjar che non ti risulta nel giorno su GA (filtrandolo) lo trovi da qualche parte?

  • Buongiorno Matteo,
    ho seguito passo passo la tua guida e in realtà sembra funzionare tutto correttamente. L'unico problema è che su analytics non mi ritrovo tutti gli ID registrati su Hotjar. Ad esempio, su analytics imposto un giorno specifico, poi da comportamento -> contenuti del sito -> tutte le pagine imposto come dimensione secondaria l'ID di Hotjar, eliminando gli ID duplicati mi ritrovo ad esempio solo 4 ID differenti. Su Hotjar nello stesso giorno invece, trovo una trentina di recordings. Secondo te come mai su analytics non vengono registrati tutti gli ID? Grazie mille.

    • Ciao Giuseppe :)
      Sei sicuro di aver gestito il passaggio della variabile nel tipo attivatore "finestra caricata"? Il motivo potrebbe essere semplicemente che la funzione non ha ancora l'id prelevato da Hotjar :)
      Fammi sapere!

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