Cookies et identification des utilisateurs

Pour que Google Analytics puisse déterminer que deux appels distincts appartiennent au même utilisateur, un identifiant unique, associé à cet utilisateur, doit être envoyé avec chaque appel.

Pour ce faire, la bibliothèque analytics.js utilise le champ ID client. Il s'agit d'une chaîne unique générée de façon aléatoire, qui est stockée dans les cookies du navigateur afin que des visites ultérieures sur le même site puissent être associées au même utilisateur.

Par défaut, analytics.js utilise un seul cookie propriétaire nommé _ga pour stocker l'ID client. Toutefois, le nom, le domaine et la date d'expiration du cookie peuvent tous être personnalisés. Les autres cookies créés par analytics.js incluent _gid, AMP_TOKEN et _gac_<property-id>. Ces cookies stockent d'autres identifiants générés de manière aléatoire et des informations sur la campagne concernant l'utilisateur.

L'utilisation de cookies permet à analytics.js d'identifier les utilisateurs uniques lors des sessions de navigation. En revanche, elle ne peut pas identifier les utilisateurs uniques sur différents navigateurs ou appareils. Si votre site dispose de son propre système d'authentification, vous pouvez utiliser la fonctionnalité User-ID, en plus de l'ID client, pour identifier plus précisément un utilisateur sur tous les appareils qu'il utilise pour accéder à votre site.

Ce guide explique comment personnaliser les paramètres des cookies et comment définir le champ "User-ID" afin de mesurer plus précisément l'activité des utilisateurs d'une session à l'autre.

Le tableau suivant présente les valeurs par défaut des champs de cookie utilisés par analytics.js:

Nom du champ Type de valeur Valeur par défaut
cookieName text _ga
cookieDomain text Le résultat de l'expression JavaScript suivante:
document.location.hostname
cookieExpires integer 63072000 (deux ans, en secondes)
cookieUpdate boolean true
cookieFlags text

Pour modifier l'une de ces valeurs, vous pouvez les spécifier dans le fieldObject que vous transmettez à la commande create. Exemple :

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',
});

Le champ de cookie le plus courant à définir est cookieDomain. Par conséquent, la commande create accepte le champ cookieDomain en tant que troisième paramètre facultatif pour plus de commodité:

ga('create', 'UA-XXXXX-Y', 'blog.example.co.uk');

La balise Google Analytics recommandée définit la chaîne 'auto' pour le champ cookieDomain:

ga('create', 'UA-XXXXX-Y', 'auto');

Définir 'auto' comme cookieDomain active la configuration automatique du domaine de cookie, ce qui indique à analytics.js de déterminer automatiquement le meilleur domaine de cookie à utiliser.

La configuration automatique du domaine de cookie définit le cookie _ga sur le domaine le plus élevé possible. Par exemple, si l'adresse de votre site Web est blog.example.co.uk, analytics.js définira le domaine du cookie sur .example.co.uk. En outre, si analytics.js détecte que vous exécutez un serveur localement (par exemple, localhost), il définit automatiquement cookieDomain sur 'none'.

Chaque fois qu'un appel est envoyé à Google Analytics, le délai d'expiration du cookie est mis à jour pour correspondre à l'heure actuelle plus la valeur du champ cookieExpires. Cela signifie que si vous utilisez le délai par défaut cookieExpires de deux ans et qu'un utilisateur visite votre site tous les mois, son cookie n'expirera jamais.

Si vous définissez la durée de cookieExpires sur 0 (zéro) seconde, le cookie devient un cookie basé sur la session et expire à la fin de la session de navigateur en cours:

Lorsque cookieUpdate est défini sur true (valeur par défaut), analytics.js met à jour les cookies à chaque chargement de page. Le délai d'expiration des cookies sera mis à jour en fonction de la dernière visite sur le site. Par exemple, si le délai d'expiration d'un cookie est défini sur une semaine et qu'un utilisateur visite votre site avec le même navigateur tous les cinq jours, le délai d'expiration du cookie sera mis à jour à chaque visite et n'expirera donc jamais.

Si cette règle est définie sur false, les cookies ne sont pas mis à jour à chaque chargement de page. En conséquence, l'expiration des cookies dépend de la première visite d'un utilisateur sur le site.

Ajoute des indicateurs supplémentaires au cookie lorsqu'il est défini. Les indicateurs doivent être séparés par un point-virgule.

Vous ne devez pas accéder directement aux ensembles de cookies analytics.js, car le format des cookies est susceptible de changer par la suite. À la place, les développeurs doivent utiliser readyCallback pour attendre le chargement d'analytics.js, puis obtenir la valeur clientId stockée dans l'outil de suivi.

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

Désactivation des cookies

Dans certains cas, vous pouvez utiliser votre propre mécanisme de stockage (par exemple, localStorage ou un Service Worker) pour conserver l'ID client d'une session à l'autre sans utiliser de cookies. Vous pouvez empêcher analytics.js de définir des cookies en définissant le champ storage sur 'none'.

ga('create', 'UA-XXXXX-Y', {
  'storage': 'none'
});

Si vous stockez vous-même le champ clientId, vous devez veiller à définir le champ cliendId lorsque vous créez l'outil de suivi.

ga('create', 'UA-XXXXX-Y', {
  'storage': 'none',
  'clientId': '76c24efd-ec42-492a-92df-c62cfd4540a3'
});

Pour désactiver les cookies _gac_<property-id>, définissez le champ storeGac sur false dans la commande create:

ga('create', 'UA-XXXXX-Y', {
  storeGac: false,
});

Utiliser localStorage pour stocker l'ID client

L'exemple de code suivant montre comment modifier la balise JavaScript pour utiliser localStorage afin de stocker l'ID client plutôt que des cookies:

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

Le User-ID permet d'analyser des groupes de sessions sur plusieurs appareils à l'aide d'une chaîne d'ID unique, persistante et anonyme représentant un utilisateur. Pour découvrir pourquoi vous devez implémenter la fonctionnalité User-ID, consultez la section Avantages de la fonctionnalité User-ID.

Pour intégrer la fonctionnalité User-ID à l'aide d'analytics.js, procédez comme suit:

  1. Indiquez votre propre ID de chaîne unique, persistant et ne permettant pas d'identifier personnellement l'utilisateur pour représenter chaque utilisateur connecté. Cet ID est le plus souvent fourni par un système d'authentification.
  2. Définissez le User-ID sur l'outil de suivi:
ga('create', 'UA-XXXXX-Y', 'auto', {
  userId: USER_ID
});
ga('send', 'pageview');

Gérer l'authentification après le chargement de la page

Lorsque vous créez des applications monopages ou d'autres sites Web dynamiques qui gèrent la connexion de l'utilisateur après le chargement initial de la page, le processus de définition de la valeur de l'ID utilisateur dans l'outil de suivi ne peut pas avoir lieu au moment de la création.

Dans ce cas, vous pouvez utiliser la commande set pour définir la valeur sur le traceur dès qu'elle est connue.

// 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');

Avec cette approche, les appels envoyés avant que le champ userId ne soit défini ne contiennent pas de valeurs d'ID utilisateur. Toutefois, grâce à un processus appelé unification de session, Google Analytics peut associer ces appels au bon utilisateur au moment du traitement.