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.

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 !

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.complutô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.
Custom (PHP)
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 container Addingwell, cliquez sur Cookie monitoring dans le menu de gauche, puis sur Cookie Restore.

Renseignez ensuite les champs du formulaire :

| Champ | Description |
|---|---|
| 1. Target Domain | Sélectionnez dans la liste déroulante le domaine de tracking sur lequel la restauration du cookie s’effectuera. |
| 2. Cookie Name | Renseignez le nom du “Master Cookie”. Dans les étapes précédentes de cette documentation, nous l’avons par exemple nommé _aw_master_id. |
Cliquez ensuite sur le bouton Go to verification pour passer à l’écran suivant.

Cliquez maintenant sur le bouton Test cookie settings pour lancer une vérification automatisée sur votre site. Cette étape permet de contrôler que le cookie est bien déposé en server-side, qu’il est résilient (durée de vie et dépôt en first party) et qu’il est unique pour chaque utilisateur.
Si un message d’erreur s’affiche à cette étape, cela signifie que nous n’avons pas pu lancer la vérification automatique sur votre configuration. Copiez alors le modèle d’e-mail proposé à l’écran et envoyez-le à [email protected].
Si la vérification automatique est concluante, l’écran suivant apparaît :

Cliquez enfin sur le bouton Activate Cookie Restore pour activer la fonctionnalité.
Bravo, vous avez terminé l’implémentation de la fonctionnalité Cookie Restore !
Vous pouvez passer à l’étape suivante : Vérifier les résultats.






