Per consentire a Google Analytics di determinare che due hit distinti appartengono allo stesso utente, con ogni hit deve essere inviato un identificatore univoco associato a quell'utente.
A tal fine, la libreria analytics.js esegue questa operazione tramite il campo ID client, 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 proprietario denominato _ga
per archiviare il Client-ID, ma il nome, il dominio e la 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 e informazioni della campagna generati in modo casuale relativi all'utente.
L'utilizzo dei cookie consente a analytics.js di identificare utenti unici nelle sessioni di navigazione, ma non di identificare utenti unici su browser o dispositivi diversi. Se il sito dispone di un proprio sistema di autenticazione, puoi utilizzare la funzionalità User-ID, oltre al Client-ID, per identificare in modo più preciso un utente su tutti i dispositivi che utilizza per accedere al sito.
Questa guida spiega come personalizzare le impostazioni dei cookie e come impostare il campo User-ID per misurare con maggiore precisione l'attività utente tra le sessioni.
Configurazione delle impostazioni dei campi dei cookie
La seguente tabella mostra i valori del campo cookie predefiniti 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 |
numero intero | 63072000 (due anni, in secondi) |
cookieUpdate |
boolean |
true
|
cookieFlags |
testo |
|
Per modificare uno qualsiasi di questi valori, puoi specificarlo nel fieldObject
passato 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 cookie più comune da impostare è cookieDomain
, di conseguenza il comando create
accetta il campo cookieDomain
come terzo parametro facoltativo per praticità:
ga('create', 'UA-XXXXX-Y', 'blog.example.co.uk');
Configurazione automatica del dominio dei cookie
Il tag di Google Analytics consigliato 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 indica a analytics.js di determinare automaticamente il dominio dei cookie migliore da utilizzare.
La configurazione automatica del dominio dei cookie imposta il cookie _ga
sul dominio di livello più elevato 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 in locale (ad es. localhost
), imposta automaticamente cookieDomain
su 'none'
.
Scadenza cookie
Ogni volta che viene inviato un hit a Google Analytics, la scadenza del cookie viene aggiornata in modo da corrispondere all'ora corrente più il valore del campo cookieExpires
. Ciò significa che se utilizzi la durata predefinita di cookieExpires
di due anni e un utente visita il tuo sito ogni mese, il suo cookie non scade mai.
Se imposti il tempo cookieExpires
su 0
(zero) secondi, il cookie si trasforma in un cookie basato su sessione e scade al termine della sessione del browser corrente:
Aggiornamento cookie
Se cookieUpdate
è impostato su true
(valore predefinito), analytics.js
aggiorna i cookie a ogni caricamento pagina. In questo modo la scadenza dei cookie viene aggiornata
in base alla visita più recente al sito. Ad esempio, se la scadenza dei cookie è impostata su una settimana e un utente visita il sito utilizzando lo stesso browser ogni cinque giorni, la scadenza dei cookie verrà aggiornata a ogni visita e quindi non scadrà mai.
Se il criterio viene impostato su false
, i cookie non vengono aggiornati a ogni caricamento pagina. In questo modo, la scadenza dei cookie si basa sulla prima visita di un utente al sito.
Flag per cookie
Se impostato, aggiunge ulteriori flag al cookie. I flag devono essere separati da un punto e virgola.
Ottenere 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 invece utilizzare readyCallback
per attendere il caricamento di analytics.js e poi memorizzare il valore clientId
sul tracker.
ga(function(tracker) { var clientId = tracker.get('clientId'); });
Disabilitazione dei cookie
In alcuni casi potresti voler utilizzare un meccanismo di archiviazione personalizzato (ad esempio localStorage
o un Service Worker) per rendere persistenti l'ID client tra più sessioni senza utilizzare i cookie. Per impedire ad analytics.js di impostare i cookie, imposta 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 disabilitare 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 l'archiviazione dell'ID client
Il seguente esempio di codice mostra come modificare il tag JavaScript per utilizzare localStorage
per memorizzare 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 informazioni sui motivi per cui è consigliabile 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 che non consente l'identificazione personale per rappresentare ogni utente che ha eseguito l'accesso. Questo ID viene fornito il più delle volte da un sistema di autenticazione.
- Imposta lo User-ID sul tracker:
ga('create', 'UA-XXXXX-Y', 'auto', { userId: USER_ID }); ga('send', 'pageview');
Gestione dell'autenticazione dopo il caricamento pagina
Quando crei applicazioni a pagina singola o altri siti web dinamici che gestiscono l'accesso degli utenti dopo il caricamento iniziale della pagina, il processo di impostazione del valore 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 si utilizza questo approccio, gli hit inviati prima dell'impostazione del campo userId
non conterranno valori ID utente. Tuttavia, tramite una procedura nota come unificazione sessioni, Google Analytics è in grado di associare questi hit all'utente corretto al momento dell'elaborazione.