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.
La libreria analytics.js può farlo 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 data di scadenza del cookie possono essere tutti 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 sull'utente.
L'utilizzo dei cookie consente ad analytics.js di identificare utenti unici nelle sessioni di navigazione, ma non può identificare utenti unici su 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ù preciso 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 con maggiore precisione l'attività utente tra le sessioni.
Configurazione delle impostazioni del campo dei cookie
La seguente tabella mostra i valori dei campi 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
che passi 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 di cookie più comune da impostare è cookieDomain
; di conseguenza, per praticità, il comando create
accetta il campo cookieDomain
come terzo parametro facoltativo:
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,
in modo che analytics.js stabilisca 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 dei cookie viene aggiornata in modo da corrispondere all'ora corrente più il valore del campo cookieExpires
. Ciò significa che se utilizzi il periodo cookieExpires
predefinito 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 si trasforma in un
cookie basato sulla sessione
e scade al termine della sessione del browser corrente:
Aggiornamento cookie
Se cookieUpdate
è impostato su true
(il valore predefinito), analytics.js
aggiornerà i cookie a ogni caricamento pagina. 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 utilizzando lo stesso browser ogni cinque giorni, la scadenza del 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. Per questo motivo, 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 agli insiemi 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, quindi memorizzare il valore clientId
nel tracker.
ga(function(tracker) { var clientId = tracker.get('clientId'); });
Disabilitazione dei cookie
In alcuni casi potresti voler utilizzare il tuo meccanismo di archiviazione (come localStorage
o un Service Worker) per mantenere l'ID client tra le sessioni senza utilizzare cookie. 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 autonomamente il campo clientId
, assicurati 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 archiviare l'ID client
Il seguente esempio di codice mostra come modificare il tag JavaScript per utilizzare 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 rappresenta un utente, ma non ne consente l'identificazione personale. 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 non personale per rappresentare ogni utente che ha eseguito l'accesso. Questo ID viene fornito molto spesso 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 utilizzi questo approccio, gli hit inviati prima dell'impostazione del campo userId
non conterranno valori degli 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.