Option 2 : Cookie Restore
Fonctionnement
La solution Cookie Restore d’Addingwell passe par la mise en place d’un “Master Cookie”, défini par le serveur de votre domaine de navigation, et unique pour chaque utilisateur. (Plus de détails sur ce "Master Cookie" dans le paragraphe Mise en place détaillée).
Durant les 7 premiers jours
Lors d’une visite sur votre domaine de navigation lors des 7 premiers jours, les cookies Marketing sont bien présents sur le navigateur de votre utilisateur. Il n’y a donc pas de nécessité de restaurer ces cookies, qui sont bien définis. Le "Master Cookie" est lui déposé par le serveur de votre domaine de navigation, et donc bien présent pour une durée de 13 mois. Côté Addingwell, le Master Cookie défini pour cet utilisateur par votre serveur va être associé aux cookies Marketing et stocké dans une base de données. Cette association “Master Cookie + cookies Marketing” est conservée pour une utilisation ultérieure.
![Cookies Marketing avant 7 jours](/images/safari-resilience/cookie_restore_before_7_days.png)
Au-delà de 7 jours
Au-delà de 7 jours, votre utilisateur se rend à nouveau sur votre site. Les cookies Marketing ne sont plus présents sur son navigateur. Le Master Cookie est en revanche lui toujours présent, puisque défini par votre serveur de navigation, et donc présent sur une durée de 13 mois. La base de données Addingwell est alors interrogée, et l’association “Master Cookie + cookies Marketing” retrouvée. La solution Cookie Restore se charge alors de repousser les cookies Marketing liés au "Master Cookie" de l’utilisateur sur son navigateur !
![Cookies Marketing après 7 jours](/images/safari-resilience/cookie_restore_after_7_days.png)
Pour cette option, il est nécessaire de disposer d'un cookie first-party "nouvelle génération" unique par utilisateur. Ce cookie doit être déposé côté serveur par le même serveur qui héberge l'ensemble du site pour être considéré comme valide.
Mise en place du "Master Cookie"
Spécifications techniques
Pour être conforme, ce cookie doit respecter les spécifications suivantes :
- Durée de vie : La durée de vie du cookie doit être suffisamment importante. Elle doit, de préférence, être plus longue que la durée de vie des cookies marketing. Cependant, elle ne doit pas éxcéder 13 mois pour être conforme avec le règlement Général sur la protection des données (RGPD).
- Accessibilité : Le cookie doit être accessible sur tout le domaine du site et tous ses sous-domaines. Exemple: le cookie doit être déposé sur
.mysite.com
plutôt quemysite.com
- Origine: Le cookie doit être défini par le serveur du site. Il ne doit pas être défini par du code Javascript executé côté client.
- Persistance: Le cookie doit être disponible sur toutes les pages du site.
- Stabilité: La valeur du cookie doit être stable et ne doit pas changer dans le temps.
- Unicité: La valeur du cookie doit être unique par visiteur.
Exemple de "Master Cookie"
Ci-dessous, un exemple de cookie déposé par le serveur mysite.com
pour une durée de vie de 13 mois.
Ce dernier est accessible sur toutes les pages du site et sur tous ces sous-domaine.
Le nom de ce cookie est _aw_master_id
et a pour valeur un identifiant unique de visiteur 646035e9-503e-412e-8b99-5ee47560f882
.
Name | Value | Domain | Path | Expires / Max-Age | HttpOnly | Secure | SameSite |
---|---|---|---|---|---|---|---|
_aw_master_id | 646035e9-503e-412e-8b99-5ee47560f882 | .mysite.com | / | 2025-09-02T13:33:00.341Z | true | true | Lax |
Aide à l'implémentation
Pour simplifier l'installation de ce cookie, vous pouvez utilisez les exemples suivants en fonction du language serveur ou du CMS (Shopify, Wordpress, ...).
Si votre site n'est pas compatible avec le liste d'exemples ci-dessous, veuillez contacter le support Addingwell.
Voici un exemple de code pour créer ou mettre à jour un cookie qui respecte les spécifications techniques sur un serveur en PHP
function setMasterCookie() {
$cookieName = '_aw_master_id';
$cookieLifetime = time() + (60 * 60 * 24 * 30 * 13);
$cookieDomain = getMainDomain($_SERVER['HTTP_HOST']);
if (!isset($_COOKIE[$cookieName])) {
$cookieValue = $this->generateUUID();
} else {
$cookieValue = $_COOKIE[$cookieName];
}
setcookie(
$cookieName,
$cookieValue,
$cookieLifetime,
'/',
$cookieDomain,
true,
true
);
}
function generateUUID() {
return sprintf(
'%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 0xFFFF), mt_rand(0, 0xFFFF),
mt_rand(0, 0xFFFF),
mt_rand(0, 0x0FFF) | 0x4000,
mt_rand(0, 0x3FFF) | 0x8000,
mt_rand(0, 0xFFFF), mt_rand(0, 0xFFFF), mt_rand(0, 0xFFFF)
);
}
function getMainDomain($url) {
$composedTlds = [
'co.uk', 'gov.uk', 'ac.uk', 'org.uk', 'net.uk', 'sch.uk', 'nhs.uk', 'police.uk',
'com.au', 'net.au', 'org.au', 'edu.au', 'gov.au', 'asn.au', 'id.au',
'co.jp', 'ac.jp', 'ne.jp', 'or.jp', 'go.jp', 'ed.jp', 'ad.jp', 'gr.jp',
'com.cn', 'net.cn', 'gov.cn', 'org.cn', 'edu.cn', 'mil.cn', 'ac.cn',
'com.br', 'net.br', 'org.br', 'gov.br', 'edu.br', 'mil.br', 'art.br', 'coop.br',
'co.in', 'net.in', 'org.in', 'gov.in', 'ac.in', 'res.in', 'edu.in', 'mil.in', 'nic.in',
'gc.ca', 'gov.ca',
'com.de', 'net.de', 'org.de',
'gov.it', 'edu.it',
'asso.fr', 'nom.fr', 'prd.fr', 'presse.fr', 'tm.fr', 'com.fr', 'gouv.fr',
'com.es', 'nom.es', 'org.es', 'gob.es', 'edu.es',
'co.za', 'net.za', 'gov.za', 'org.za', 'edu.za',
'com.mx', 'net.mx', 'org.mx', 'edu.mx', 'gob.mx',
'com.ru', 'net.ru', 'org.ru', 'edu.ru', 'gov.ru',
'co.kr', 'ne.kr', 'or.kr', 're.kr', 'pe.kr', 'go.kr', 'mil.kr',
'com.sg', 'net.sg', 'org.sg', 'edu.sg', 'gov.sg', 'per.sg',
'com.my', 'net.my', 'org.my', 'gov.my', 'edu.my', 'mil.my',
'com.hk', 'net.hk', 'org.hk', 'gov.hk', 'edu.hk', 'idv.hk',
'com.ar', 'net.ar', 'org.ar', 'gov.ar', 'edu.ar', 'int.ar',
'com.tr', 'net.tr', 'org.tr', 'gov.tr', 'edu.tr', 'mil.tr',
];
// Remove protocol if present
$domain = preg_replace('/^https?:\/\//', '', $url);
// Remove www. if present
$domain = preg_replace('/^www\./', '', $domain);
// Split the domain into parts
$parts = explode('.', $domain);
// Check against composed TLDs
for ($i = 0; $i < count($parts) - 1; $i++) {
$possibleTld = implode('.', array_slice($parts, $i));
if (in_array($possibleTld, $composedTlds)) {
$main_domain = implode('.', array_slice($parts, $i - 1));
return $main_domain;
}
}
// Default to last two parts if no composed TLD matches
return implode('.', array_slice($parts, -2));
}
setMasterCookie();
Un cookie _aw_master_id
devrait apparaître au premier chargement de la page sans aucune autre action sur la page.
La durée de vie de ce cookie est de 13 mois (390 jours).
Pour la prochaine étape, veuillez spécifier _aw_master_id
comme nom de cookie.
Activation de Cookie Restore
Depuis votre espace de travail Addingwell, cliquez sur Cookie monitoring dans le menu de gauche, puis sur Cookie Restore.
![Lien vers Cookie Restore dans Addingwell](/images/safari-resilience/cookie_restore_link.png)
Renseignez les champs du formulaire
![Formulaire rempli de Cookie Restore](/images/safari-resilience/cookie_restore_form.png)
Domaine cible
Sélectionnez votre domaine de tracking sur lequel la restoration de cookie se fera
Domaine à tester
Renseignez le sous-domaine ou domaine du site sur lequel vous voulez tester le cookie.
Nom du cookie
Renseignez le nom du "Master Cookie"
Activer le cookie restore
Une fois que tout est renseigné vous pouvez cliquez sur Verify
La vérification de votre "Master Cookie" se fait de manière automatique et peut prendre quelques minutes.
Sélectionnez la zone si ce n'est pas déjà fait, puis cliquez sur "Activer".
![Activer Cookie Restore](/images/safari-resilience/cookie_restore_activate.png)
Vous avez désormais terminé l'implémentation de la fonctionnalité "Cookie Restore". Vous pouvez passer à l'étape suivante : Vérifier les résultats.