Perché Google Analytics determini che due hit distinti appartengono allo stesso utente, a ogni hit deve essere inviato un identificatore unico associato a quell'utente.
La libreria analytics.js esegue questa operazione tramite il campo Client-ID, una stringa univoca generata in modo casuale che viene memorizzata nei cookie del browser, in modo che le visite successive allo stesso sito possano essere associate allo stesso utente.
Per impostazione predefinita, analytics.js utilizza un singolo cookie originale denominato
_ga
per archiviare l'ID client, ma il nome, il dominio
e la data di scadenza del cookie possono essere personalizzati. Altri cookie creati da analytics.js
includono _gid
, AMP_TOKEN
e
_gac_<property-id>
. Questi cookie memorizzano altri ID generati casualmente e informazioni sulla campagna dell'utente.
L'utilizzo dei cookie consente ad analytics.js di identificare utenti unici in più sessioni di navigazione, ma non di identificare utenti unici in browser o dispositivi diversi. Se il tuo sito ha un proprio sistema di autenticazione, puoi utilizzare la funzionalità User-ID, oltre al Client-ID, per identificare in modo più accurato un utente su tutti i dispositivi che utilizza per accedere al tuo sito.
Questa guida spiega come personalizzare le impostazioni dei cookie e come impostare il campo User-ID per misurare in modo più accurato l'attività utente nelle sessioni.
Configurazione delle impostazioni del campo cookie
La seguente tabella mostra i valori predefiniti dei campi dei cookie utilizzati da analytics.js:
Nome campo | Tipo di valore | Valore predefinito |
---|---|---|
cookieName |
testo | _ga |
cookieDomain |
testo |
Il risultato della seguente espressione JavaScript:document.location.hostname
|
cookieExpires |
integer | 63072000 (due anni, in secondi) |
cookieUpdate |
boolean |
true
|
cookieFlags |
testo |
|
Per modificare uno di questi valori, puoi specificarli nel fieldObject
trasmetti il comando create
. Ad esempio:
ga('create', 'UA-XXXXX-Y', {
'cookieName': 'gaCookie',
'cookieDomain': 'blog.example.co.uk',
'cookieExpires': 60 * 60 * 24 * 28 // Time in seconds.
'cookieUpdate': 'false',
'cookieFlags': 'SameSite=None; Secure',
});
Il campo dei cookie più comune da impostare è cookieDomain
, pertanto il comando create
accetta il campo cookieDomain
come terzo parametro facoltativo per comodità:
ga('create', 'UA-XXXXX-Y', 'blog.example.co.uk');
Configurazione automatica del dominio dei cookie
Il tag consigliato di Google Analytics imposta la stringa 'auto'
per il campo
cookieDomain
:
ga('create', 'UA-XXXXX-Y', 'auto');
Se specifichi 'auto'
come cookieDomain
, viene attivata la configurazione automatica del dominio dei cookie, che permette a analytics.js di determinare automaticamente il miglior dominio di cookie da utilizzare.
La configurazione automatica del dominio dei cookie imposta il cookie _ga
nel dominio di livello più alto possibile. Ad esempio, se l'indirizzo del tuo sito web è blog.example.co.uk
, analytics.js imposterà il dominio dei cookie su .example.co.uk
. Inoltre, se analytics.js rileva che stai eseguendo un server localmente (ad es. localhost
), imposta automaticamente cookieDomain
su 'none'
.
Scadenza cookie
Ogni volta che un hit viene inviato a Google Analytics, la scadenza dei cookie viene aggiornata in modo da corrispondere all'ora corrente più il valore del campo cookieExpires
. Ciò significa che se utilizzi il valore predefinito cookieExpires
di due anni e un utente visita il tuo sito ogni mese, il suo cookie non scade mai.
Se imposti il tempo di cookieExpires
su 0
(zero) secondi, il cookie diventa un
cookie basato sulla sessione
e scade al termine della sessione del browser corrente:
Aggiornamento cookie
Quando cookieUpdate
è impostato su true
(valore predefinito), analytics.js aggiorna
i cookie a ogni caricamento pagina. In questo modo viene aggiornata la scadenza del cookie
da impostare rispetto alla visita più recente del sito. Ad esempio, se la scadenza dei cookie è impostata su una settimana e un utente visita il sito con lo stesso browser ogni cinque giorni, la scadenza dei cookie viene aggiornata a ogni visita e, di conseguenza, non scade mai.
Se imposti false
, i cookie non vengono aggiornati a ogni caricamento pagina. Questo ha effetto sulla scadenza dei cookie rispetto alla prima volta che un utente ha visitato il sito.
Flag per cookie
Consente di aggiungere ulteriori flag al cookie quando impostato. I flag devono essere separati da punto e virgola.
Recupera l'ID client dal cookie
Non devi accedere direttamente ai set di cookie analytics.js, poiché il formato dei cookie potrebbe cambiare in futuro. Gli sviluppatori dovrebbero utilizzare invece readyCallback
per attendere il caricamento di analytics.js, dopodiché recuperare il valore clientId
sul tracker.
ga(function(tracker) { var clientId = tracker.get('clientId'); });
Disattivazione dei cookie
In alcuni casi, per mantenere l'ID client in più sessioni senza utilizzare i cookie, può essere utile utilizzare un meccanismo di archiviazione personalizzato (ad esempio localStorage
o un service worker). Puoi impedire ad analytics.js di impostare i cookie impostando il campo storage
su 'none'
.
ga('create', 'UA-XXXXX-Y', { 'storage': 'none' });
Se stai memorizzando il campo clientId
autonomamente, devi assicurarti di impostare il campo cliendId
quando crei il tracker.
ga('create', 'UA-XXXXX-Y', { 'storage': 'none', 'clientId': '76c24efd-ec42-492a-92df-c62cfd4540a3' });
Per disattivare i cookie _gac_<property-id>
, imposta il campo storeGac
su false
nel comando create
:
ga('create', 'UA-XXXXX-Y', {
storeGac: false,
});
Utilizzo di localStorage per archiviare l'ID client
Il seguente esempio di codice mostra come modificare il tag JavaScript in modo che utilizzi localStorage
per archiviare l'ID client anziché i cookie:
var GA_LOCAL_STORAGE_KEY = 'ga:clientId';
if (window.localStorage) {
ga('create', 'UA-XXXXX-Y', {
'storage': 'none',
'clientId': localStorage.getItem(GA_LOCAL_STORAGE_KEY)
});
ga(function(tracker) {
localStorage.setItem(GA_LOCAL_STORAGE_KEY, tracker.get('clientId'));
});
}
else {
ga('create', 'UA-XXXXX-Y', 'auto');
}
ga('send', 'pageview');
User-ID
Lo User-ID consente di analizzare gruppi di sessioni su più dispositivi utilizzando una stringa ID univoca e permanente che non consente l'identificazione personale di un utente. Per conoscere il motivo per cui dovresti implementare lo User-ID, consulta Vantaggi dell'utilizzo della funzionalità User-ID.
Per implementare lo User-ID con analytics.js:
- Fornisci il tuo ID stringa univoco, permanente e non personale per rappresentare ogni utente che ha eseguito l'accesso. Questo ID viene spesso fornito da un sistema di autenticazione.
- Imposta lo User-ID sul tracker:
ga('create', 'UA-XXXXX-Y', 'auto', { userId: USER_ID }); ga('send', 'pageview');
Gestire l'autenticazione dopo il caricamento pagina
Quando crei applicazioni a pagina singola o altri siti web dinamici che gestiscono l'accesso dell'utente dopo il caricamento iniziale della pagina, la procedura per impostare il valore dello User-ID sul tracker non può avvenire al momento della creazione.
In questi casi, puoi utilizzare il comando set
per impostare il valore sul tracker non appena è noto.
// Creates the tracker and sends a pageview as normal // since the `userId` value is not yet known. ga('create', 'UA-XXXXX-Y', 'auto'); ga('send', 'pageview'); // At a later time, once the `userId` value is known, // sets the value on the tracker. ga('set', 'userId', USER_ID); // Setting the userId doesn't send data to Google Analytics. // You must also use a pageview or event to send the data. ga('send', 'event', 'authentication', 'user-id available');
Quando utilizzi questo approccio, gli hit inviati prima dell'impostazione del campo userId
non conterranno valori ID utente. Tuttavia, tramite un processo noto come unificazione sessioni, Google Analytics può associare questi hit all'utente corretto al momento dell'elaborazione.