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.

Server-Side Niveau : intermédiaire ~20 min

Le problème ITP

Type de cookiePosé parDurée de vie Safari (ITP)
_ga classiqueJavaScript (document.cookie)7 jours max
_ga après clic pub (gclid)JavaScript24 heures
FPIDEn-tête HTTP Set-Cookie depuis votre sous-domaineDuré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

Étape 2 — Activer dans sGTM

1

Dans le conteneur serveur : Clients → GA4.

2

Dans la section Cookies and Client Identification, passez de JavaScript Managed à Server Managed.

3

Publiez le conteneur. Dès le prochain hit, la réponse du serveur contient l'en-tête :

HTTP — réponse du conteneur serveur
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 :

OptionRecommandation
Durée de vie (Max-Age)13 mois maximum (recommandation CNIL)
DomaineDomaine racine (monsite.fr) pour couvrir tous les sous-domaines
Path/
SameSiteLax (par défaut, adapté à la mesure)
ℹ️
Et les autres plateformes ?Le même mécanisme sert à prolonger d'autres identifiants : cookie de clic Google Ads (gclid), _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

1

DevTools → Application → Cookies : le cookie FPID apparaît avec la colonne HttpOnly cochée et une expiration lointaine.

2

Console : document.cookie ne doit pas contenir FPID (c'est la preuve du HttpOnly).

JavaScript — test console
// 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
});
3

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 ».

Ouvrir le playground

RGPD & durée de vie