Technical Deep Dive
Utilisation des identifiants stables générés par les Consent Management Platforms dans les outils de tracking
Dans l'écosystème web moderne, chaque site déploie une CMP (Consent Management Platform) pour gérer les choix de l'utilisateur en matière de cookies et de traitements de données. La plupart de ces CMP génèrent un ID utilisateur dès le chargement, avant même que l'utilisateur n'ait fait son choix.
Et bonne nouvelle, ces identifiants sont accessibles et utilisables très facilement 😊😊😊
Bien sûr, il faut vérifier si un consentement est nécessaire, mais ces identifiants sont accessibles sans 😇
Ci-dessous, je vous explique comment les récupérer pour les utiliser avec Google Analytics (GA4). La même logique s'applique à la plupart des autres outils de tracking.
Lecture via document.cookie
Objets globaux exposés
Rappel de fonctionnement
Pour mémoire, voici un script de chargement type pour GA4. Le principe étant d'enrichir GA4 avec les ID des CMP, il faut le préparer à les recevoir.
Pour commencer, chargez GA4 sans envoyer l'événement "page_view".
<script async src="https://www.googletagmanager.com/gtag/js?id=G-ABCDEFGHI"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-ABCDEFGHI', {'send_page_view': false});
</script>
Ensuite, récupérez l'ID utilisateur de la CMP et déclarez-le comme un user_id dans GA4. Enfin, déclenchez l'événement page_view.
Reportez-vous ci-dessous à la section qui concerne votre CMP pour savoir comment faire 😊
Configuration et intégration technique
L'API d'Axeptio permet de récupérer très simplement l'ID utilisateur, appelé token, qui a ce format :
p7ewelbd7mbt8pp6m27dqf
Voici comment le récupérer et le déclarer comme paramètre user_id dans GA4, avant de déclencher l'événement page_view.
<script>
window._axcb = window._axcb || [];
window._axcb.push(function(sdk){
sdk.on("token:update", function(payload){
const uuid = payload?.value;
if (uuid) {
gtag('set', 'user_id', uuid);
}
gtag('event','page_view');
});
});
</script>
Voici un exemple de données envoyées à GA4 avec le paramètre uid ajouté :
https://region1.google-analytics.com/g/collect?v=2&tid=G-ABCDEFGHI&gcs=G100 &cid=1032432403.1752537491&dl=https%3A%2F%2Fwww.exemple.com%2F&dt=exemple &en=page_view&uid=p7ewelbd7mbt8pp6m27dqf
Configuration et intégration technique
L'API de CookieYes permet de récupérer très simplement l'ID utilisateur, appelé token, qui a le format suivant :
N0l2ZTNTR083cng2d2Vpd1UUSW5RdDBJdnh1N1RHU1I
Voici comment le récupérer et le déclarer comme paramètre user_id dans GA4, avant de déclencher l'événement page_view.
<script>
(function() {
var uuid = (window.getCkyConsent()||{}).consentID;;
if (uuid) {
gtag('set', 'user_id', uuid);
}
gtag('event','page_view');
})()
</script>
Voici un exemple de données envoyées à GA4 avec le paramètre uid ajouté :
https://region1.google-analytics.com/g/collect?v=2&tid=G-ABCDEFGHI&gcs=G100 &cid=1032432403.1752537491&dl=https%3A%2F%2Fwww.exemple.com%2F&dt=exemple &en=page_view&uid=N0l2ZTNTR083cng2d2Vpd1UUSW5RdDBJdnh1N1RHU1I
Configuration et intégration technique
L'API de Didomi permet de récupérer très simplement l'ID utilisateur, appelé user_id, qui a ce format :
0a573e1d-5f45-4af3-8570-0a311125b797
Voici comment le récupérer et le déclarer comme paramètre user_id dans GA4, avant de déclencher l'événement page_view.
<script>
window.didomiOnReady = window.didomiOnReady || [];
window.didomiOnReady.push(function (Didomi) {
const uuid = (Didomi.getUserStatus() || {}).user_id;
if (uuid) {
gtag('set', 'user_id', uuid);
}
gtag('event','page_view');
});
</script>
Voici un exemple de données envoyées à GA4 avec le paramètre uid ajouté :
https://region1.google-analytics.com/g/collect?v=2&tid=G-ABCDEFGHI&gcs=G100 &cid=1032432403.1752537491&dl=https%3A%2F%2Fwww.exemple.com%2F&dt=exemple &en=page_view&uid=0a573e1d-5f45-4af3-8570-0a311125b797
Configuration et intégration technique
Le plus simple pour fastCMP est de récupérer l'ID utilisateur via l'API de la CMP (window.FastCMP), et ce dernier a ce format :
5066d49a-0a99-4fc1-bf6c-87612028c0e6
Voici comment le récupérer et le déclarer comme paramètre user_id dans GA4, avant de déclencher l'événement page_view.
<script>
(function() {
var uuid = window.FastCMP?.utils?.analytics?.DYNAMIC_SEGMENTS?.user_id
if (uuid) {
gtag('set', 'user_id', uuid);
}
gtag('event','page_view');
})()
</script>
Voici un exemple de données envoyées à GA4 avec le paramètre uid ajouté :
https://region1.google-analytics.com/g/collect?v=2&tid=G-ABCDEFGHI&gcs=G100 &cid=1032432403.1752537491&dl=https%3A%2F%2Fwww.exemple.com%2F&dt=exemple &en=page_view&uid=5066d49a-0a99-4fc1-bf6c-87612028c0e6
Configuration et intégration technique
L'API d'OneTrust permet de récupérer très simplement l'ID utilisateur, appelé token, qui a ce format :
ccd4d684-36ff-49fd-8469-ac50233bee16
Voici comment le récupérer et le déclarer comme paramètre user_id dans GA4, avant de déclencher l'événement page_view.
<script>
(function() {
var uuid = window.OneTrust?.getDataSubjectId();
if (uuid) {
gtag('set', 'user_id', uuid);
}
gtag('event','page_view');
})()
</script>
Voici un exemple de données envoyées à GA4 avec le paramètre uid ajouté :
https://region1.google-analytics.com/g/collect?v=2&tid=G-ABCDEFGHI&gcs=G100 &cid=1032432403.1752537491&dl=https%3A%2F%2Fwww.exemple.com%2F&dt=exemple &en=page_view&uid=ccd4d684-36ff-49fd-8469-ac50233bee16
Configuration et intégration technique
Le plus simple pour Sourcepoint est de récupérer l'ID utilisateur dans le cookie qui sert à le stocker, appelé consentUUID, qui a ce format :
6e5ba72d-dbe3-463d-9144-3cccaf388686
Avec parfois un suffixe comme "_42" :
6e5ba72d-dbe3-463d-9144-3cccaf388686_42
Voici comment le récupérer et le déclarer comme paramètre user_id dans GA4, avant de déclencher l'événement page_view.
<script>
(function() {
var cookies = document.cookie.split(';');
var uuid = null;
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
if (cookie.indexOf('consentUUID=') === 0) {
uuid = cookie.substring('consentUUID='.length, cookie.length);
break;
}
}
if (uuid) {
uuid = uuid.split('_')[0];
if (uuid) {
gtag('set', 'user_id', uuid);
}
}
gtag('event','page_view');
})()
</script>
Voici un exemple de données envoyées à GA4 avec le paramètre uid ajouté :
https://region1.google-analytics.com/g/collect?v=2&tid=G-ABCDEFGHI&gcs=G100 &cid=1032432403.1752537491&dl=https%3A%2F%2Fwww.exemple.com%2F&dt=exemple &en=page_view&uid=6e5ba72d-dbe3-463d-9144-3cccaf388686
Cette liste n'est pas exhaustive, et d'autres connecteurs seront ajoutés. Toutefois, cetaines CMP n'exposent pas d'ID utilisateur via API ni dans leurs cookies (Funding Choices, Usercentrics, Abconsent...).
Ces identifiants sont stables et persistants, disponibles dès la première page vue. Ils permettent un suivi cohérent entre les pages et ouvrent une passerelle vers d'autres systèmes.
La limite de cette approche est le caractère visible de la récupération de l'ID utilisateur. La section Server-Side apporte une réponse concrète à ce détail 😝
Exploiter les cookies exemptés des CMP pour tirer parti de leurs identifiants stables (discrètement)
uid
et restent visibles dans les requêtes réseau (Chrome DevTools → Network → collect).
uid de manière invisible, côté serveur 😈
CMP et server-side sont intimement liés, à l'image de Didomi qui a racheté Addingwell, ou d'Axeptio et son partenariat stratégique avec Taggr.
Il est d'ailleurs encore plus facile d'utiliser les identifiants stables stockés dans les cookies de CMP en server-side que de les gérer côté navigateur.
Tout simplement en les lisant dans les cookies lors d'appels server-side sur le même domaine que votre site 😉
Ajout d'un user_id aux données GA4
Un conteneur GTM serveur-side reçoit des hits (web/app/pixels) depuis les navigateurs, les normalise et peut les enrichir, puis il relaye le tout vers vos plateformes (GA4, Ads, Meta CAPI, etc.).
Pour ce qui concerne GA4, la balise fournie par Google s'occupe de tout :
Ajouter un user_id basé sur un cookie CMP est aussi simple que :
1) Créer une variable UUID Cookie CMP avec le nom du cookie de la CMP concernée, en cochant l'option "Cookie avec URI décodé "
2) Ajouter un Paramètre d'événement nommé user_id à la balise GA4, et lui affecter la variable UUID Cookie CMP créée ci-dessus
3) Constater que le paramètre uid est ajouté après publication 😉
Utilisation directe des cookies
Voici les cookies utilisables tels quels dans la manipulation expliquée ci-dessus :
1) consentmanager => cookie __cmpiuid à utiliser :
2) Osano => cookie osano_consentmanager_uuid à utiliser :
Axeptio
Le cookie Axeptio contient un ID utilisateur, mais le cookie en lui-même contient un JSON. Il faut donc le parser et utiliser la valeur qui nous intéresse. Voici les étapes :
1) Récupérez le contenu du cookie axeptio_cookies dans la variable UUID Cookie CMP, comme expliqué ci-dessus :
2) Ajoutez le template de variable Extract From JSON par mbaersch depuis la galerie Google, en cliquant sur Ajouter à l'espace de travail :
3) Utilisez ce template custom pour créer une variable Axeptio user_id, en utilisant la variable précédente Axeptio Cookie Decoded comme valeur du champ JSON Input, et la clé $$token pour le champ Path to Element :
4) Enfin, utilisez cette variable Axeptio user_id pour alimenter le paramètre user_id de la balise GA4 :
5) Publiez ! Vous pouvez voir le contenu des variables dans la prévisualisation :
...Et la donnée qui part vers GA4 avec le User ID d'Axeptio 👏 :
CookieYes
Le cookie CookieYes contient un ID utilisateur dans une grande chaîne de caractères dont il faut l'extraire. Voici les étapes :
1) Récupérez le contenu du cookie CookieYes-consent dans la variable UUID Cookie CMP, comme expliqué ci-dessus :
2) Créez une variable CookieYes user_id, en utilisant le type Tableau d'expressions régulières, avec variable précédente UUID Cookie CMP comme valeur du champ Variable d'entrée, .*consentid:([^,]+).* en valeur du champ Format et $1 en valeur du champ Sortie :
3) Enfin, utilisez cette variable CookieYes user_id pour alimenter le paramètre user_id de la balise GA4 :
5) Publiez ! Vous pouvez voir le contenu des variables dans la prévisualisation :
...Et la donnée qui part vers GA4 avec le User ID de CookieYes 👏 :
Didomi
Le cookie Didomi contient un ID utilisateur, mais le cookie en lui-même est un JSON compressé en base-64. Il faut donc le décoder avant d'utiliser la section qui nous intéresse. Voici les étapes :
1) Récupérer le contenu du cookie didomi_token dans la variable UUID Cookie CMP, comme expliqué ci-dessus :
2) Ajoutez le template de variable Base64 par mbaersch depuis la galerie Google en cliquant sur Ajouter à l'espace de travail :
3) Utilisez ce template custom pour créer une variable Didomi Cookie Decoded en utilisant la première variable UUID Cookie CMP comme valeur du champ Input Value et l'action Decode:
4) Ajoutez le template de variable Extract From JSON par mbaersch depuis la galerie Google en cliquant sur Ajouter à l'espace de travail :
5) Utilisez ce template custom pour créer une variable Didomi user_id, en utilisant la variable précédente Didomi Cookie Decoded comme valeur du champ JSON Input, et la clé user_id pour le champ Path to Element :
6) Enfin, utilisez cette variable Didomi user_id pour alimenter le paramètre user_id de la balise GA4 :
7) Publiez ! Vous pouvez voir le contenu des variables dans la prévisualisation :
...Et la donnée qui part vers GA4 avec le User ID de Didomi 👏 :
OneTrust
Le cookie OneTrust contient un ID utilisateur v4 dans une grande chaîne de caractères dont il faut l'extraire. Voici les étapes :
1) Récupérez le contenu du cookie OptanonConsent dans la variable UUID Cookie CMP, comme expliqué ci-dessus :
2) Créez une variable OneTrust user_id, en utilisant le type Tableau d'expressions régulières, avec variable précédente UUID Cookie CMP comme valeur du champ Variable d'entrée, .*consentId=([^&]+).* en valeur du champ Format et $1 en valeur du champ Sortie :
3) Enfin, utilisez cette variable OneTrust user_id pour alimenter le paramètre user_id de la balise GA4 :
5) Publiez ! Vous pouvez voir le contenu des variables dans la prévisualisation :
...Et la donnée qui part vers GA4 avec le User ID de OneTrust 👏 :
Sourcepoint
Le cookie Sourcepoint contient un ID utilisateur v4 avec parfois un suffix qu'il est préférable de retirer. Voici les étapes :
1) Récupérez le contenu du cookie consentUUID dans la variable UUID Cookie CMP, comme expliqué ci-dessus :
2) Créez une variable Sourcepoint user_id, en utilisant le type Tableau d'expressions régulières, avec variable précédente UUID Cookie CMP comme valeur du champ Variable d'entrée, ^([^_]+).* en valeur du champ Format et $1 en valeur du champ Sortie :
3) Enfin, utilisez cette variable Sourcepoint user_id pour alimenter le paramètre user_id de la balise GA4 :
5) Publiez ! Vous pouvez voir le contenu des variables dans la prévisualisation :
...Et la donnée qui part vers GA4 avec le User ID de Sourcepoint 👏 :
En pratique : L'approche server-side permet de conserver la puissance des identifiants CMP tout en adoptant une méthode plus propre, invisible côté navigateur, et mieux intégrée dans les architectures modernes de tracking.
À noter que d'autres cookies déposés sans consentement peuvent tout à fait servir d'identifiants uniques... Par exemple les cookies __cf_bm de Cloudflare, utilisés conjointement avec la passerelle de balise Google.