Cookies first-party durables
Sur Safari, un cookie posé en JavaScript expire au bout de 7 jours (voire 24 h après un clic pub). Résultat : un même visiteur devient « nouveau » chaque semaine. Le remède : faire poser le cookie par votre serveur.
Le problème ITP
| Type de cookie | Posé par | Durée de vie Safari (ITP) |
|---|---|---|
_ga classique | JavaScript (document.cookie) | 7 jours max |
_ga après clic pub (gclid) | JavaScript | 24 heures |
FPID | En-tête HTTP Set-Cookie depuis votre sous-domaine | Durée définie par le serveur (ex. 13 mois max recommandé CNIL) |
La condition sine qua non : le cookie doit être posé via un en-tête HTTP par un serveur situé sur le même domaine racine que le site — exactement ce que fait votre conteneur sGTM sur sgtm.monsite.fr.
Étape 1 — Comprendre le cookie FPID
- FPID (First-Party ID) remplace le client ID stocké dans
_ga. - Posé en HttpOnly : illisible en JavaScript, donc insensible au vol par XSS et aux restrictions ITP côté script.
- Le client GA4 du conteneur serveur l'utilise pour reconstruire le
client_idenvoyé à GA4 : transparent pour vos rapports.
Étape 2 — Activer dans sGTM
Dans le conteneur serveur : Clients → GA4.
Dans la section Cookies and Client Identification, passez de JavaScript Managed à Server Managed.
Publiez le conteneur. Dès le prochain hit, la réponse du serveur contient l'en-tête :
HTTP/2 204 No Content set-cookie: FPID=FPID2.2.abcdef123456...; Domain=monsite.fr; Path=/; Expires=Mon, 30 Aug 2027 10:00:00 GMT; HttpOnly; Secure; SameSite=Lax
Étape 3 — Options du cookie
Toujours dans le client GA4 serveur, vous contrôlez :
| Option | Recommandation |
|---|---|
| Durée de vie (Max-Age) | 13 mois maximum (recommandation CNIL) |
| Domaine | Domaine racine (monsite.fr) pour couvrir tous les sous-domaines |
| Path | / |
| SameSite | Lax (par défaut, adapté à la mesure) |
_fbp/_fbc pour Meta via les options du tag CAPI, etc. Le serveur peut réécrire n'importe quel cookie en first-party HttpOnly.Étape 4 — Vérifier
DevTools → Application → Cookies : le cookie FPID apparaît avec la colonne HttpOnly cochée et une expiration lointaine.
Console : document.cookie ne doit pas contenir FPID (c'est la preuve du HttpOnly).
// FPID ne doit PAS apparaître ici :
console.log(document.cookie);
// Événement de démo pour tracer la vérification :
dataLayer.push({
event: "fpid_check",
fpid_visible_in_js: document.cookie.indexOf("FPID") !== -1 // attendu : false
});
Sur Safari : revenez sur le site après 8 jours (ou simulez en modifiant la date). Le client_id GA4 reste stable — c'est tout l'intérêt.
🧪 À rejouer en démo : l'événement fpid_check est disponible dans le playground, section « Événements techniques ».
RGPD & durée de vie
- Un cookie durable reste un traceur : il est soumis au consentement (
analytics_storage) recueilli par votre CMP. - La CNIL recommande une durée de vie de 13 mois maximum pour les cookies et de 25 mois pour les données collectées.
- Le consentement lui-même doit être re-sollicité au plus tard tous les 13 mois — la CMP Sirdata gère cette expiration automatiquement.