Ce que la CNIL impose (et que la bannière permet d’appliquer)
- Transparence : description claire des finalités (statistiques, marketing…)
- Choix utilisateur : accepter, refuser, ou n’autoriser que certaines catégories
- Preuve & révocabilité : choix enregistré et modifiable à tout moment
Cadre légal & recommandations CNIL
- 🇪🇺 RGPD – Art. 4(11), 6(1)(a) & 7 :
- Consentement libre, spécifique, éclairé et univoque
- Conditions : démontrable, réversible, aussi simple à retirer qu'à donner
- Base légale « consentement » pour les traceurs non exemptés
- Journalisation obligatoire (date, choix, version de la politique)
- Directive ePrivacy – Art. 5(3) :
Toute lecture/écriture dans le terminal (cookies, localStorage…) nécessite un consentement préalable,
sauf si strictement nécessaire au service demandé OU si l'outil de mesure d'audience respecte les critères
d'exemption CNIL.
Source : Directive 2002/58/CE — ePrivacy - 🇫🇷 CNIL – Recommandations depuis 2020 :
- Refus aussi simple que l'acceptation
- Informations claires, finalité par finalité
- Conservation de la preuve du consentement
- Durée de conservation limitée à 13 mois
- Aucun cookie déposé avant consentement (sauf cookies strictement nécessaires ou analytics exemptés)
- 🇫🇷 CNIL – Exemption pour la mesure d'audience :
- Certains outils d'analytics peuvent fonctionner sans consentement s'ils respectent des critères stricts :
- ✅ Finalité limitée à la mesure d'audience uniquement
- ✅ Pas de suivi cross-site
- ✅ Données pseudonymisées (IP tronquée, etc.)
- ✅ Données statistiques anonymes uniquement
- ✅ Information transparente dans la politique de confidentialité
Certains outils d'analytics peuvent être exemptés de consentement s'ils respectent des critères stricts définis par la CNIL.
Ne reproduisez pas les mauvaises pratiques : ne chargez pas de scripts tiers (Google Analytics, pixels publicitaires, chat, maps, etc.) et ne déposez pas leurs cookies tant que l’utilisateur n’a pas donné son consentement explicite.
Ces obligations s’appliquent à toute organisation utilisant des traceurs, même sans traitement direct de données personnelles. Le non-respect peut entraîner des sanctions CNIL et une perte de confiance durable de la part des utilisateurs.
⚠️ En cas de non-conformité, la CNIL peut infliger des amendes pouvant atteindre 2 % du chiffre d’affaires annuel mondial ou jusqu’à 20 millions d’euros pour les infractions les plus graves. "ça fait peur !"
Cookie Consent - Fonctionnalités intégrées
Une bannière de consentement aux cookies légère et conforme au RGPD.
- Consentement préalable avant tout script de suivi
- Journalisation des choix Logger (piste d'audit RGPD)
- Blocage automatique des services tiers sans consentement
- Services pré-configurés - (GA, Facebook.. , LinkedIn...)
- Cookies sécurisés (SameSite=None; Secure)
- Transparence : Affichage des services
- Multilingue (14 langues UE+) + 4 thèmes intégrés
- CSS encapsulé – aucun conflit avec vos styles
- Ultra léger (~66Ko) – 100% JavaScript pur, sans dépendances
RGPD natif
Articles 6, 7, 13, 14 respectés
Consentement libre et éclairé
Révocabilité
Modifier ses choix facilement
Lien permanent accessible
Preuve du consentement
Horodatage + IP hashée
Version de politique trackée
Expiration auto
Renouvellement
Conforme recommandations CNIL
Configuration automatique des services [Statistiques - Marketing - Fonctionnelles]
| Service | Catégorie | Format |
|---|---|---|
| Google Analytics 4 | statistics | G-XXXXXXX |
| Google Tag Manager | statistics | GTM-XXXXXXX |
| Google AdSense | marketing | ca-pub-XXXXXXX |
| Matomo | statistics | Object |
| Mixpanel | statistics | String |
| Amplitude | statistics | String |
| Heap | statistics | Numérique |
| Plausible Analytics | statistics | Object |
| Simple Analytics | statistics | URL |
| Umami | statistics | UUID |
| Facebook Pixel (Meta) | marketing | Object |
| TikTok Pixel | marketing | String |
| Pinterest Tag | marketing | String |
| LinkedIn Insight Tag | marketing | String |
| Intercom | marketing | String |
| Crisp | marketing | UUID |
| Tidio | marketing | UUID |
| HubSpot Tracking | marketing | Numérique |
| Segment (Twilio) | marketing | String |
Implémentation technique
@synapxlab/cookie-consent - Disponible sur npmjs.comMade in France : Développé selon les recommandations CNIL les plus strictes
Pour les CMS comme PrestaShop ou WordPress, Cookie Consent est également disponible directement dans leurs marketplaces officielles (module/plugin prêt à l’emploi).
Exemple : Configuration complète
Le script injecte la bannière au chargement. Les catégories sont cachées par défaut et
s'affichent uniquement quand l'utilisateur clique sur « Personnaliser mes choix ». Les choix sont
stockés dans localStorage sous la clé politecookiebanner.
Les services tiers (GA4, Meta Pixel, etc.) ne se chargent qu'après consentement explicite de l'utilisateur. Chaque service configuré est automatiquement listé dans la description de sa catégorie (Statistiques/Marketing/Fonctionnelles).
window.CookieConsent.init({
// Consent logging (optional - requires subscription)
logger: {
apiKey: 'your-sk-live-key',
},
// Statistics & Analytics services
statistics: {
google_analytics_key: 'G-WKEJV2N43X',
google_tag_manager_key: 'GTM-XXXXXXX',
amplitude_key: 'abc123',
hotjar_site_id: '1234567',
},
// Marketing & Advertising services
marketing: {
google_adsense_key: 'ca-pub-XXXXXXX',
facebook_pixel: { key: 'YOUR-PIXEL-ID', track: 'PageView' },
tiktok_pixel_id: 'YOUR-TIKTOK-ID',
linkedin_partner_id: 'YOUR-LINKEDIN-ID'
},
});
Veille juridique
Veille juridique
- Protection juridique En cas de contrôle CNIL ou de plainte utilisateur, les logs constituent une preuve légale
- Traçabilité complète Historique détaillé de tous les changements de consentement
- Analytics de consentement Analyser les taux d'acceptation par catégorie pour optimiser votre stratégie
- Évolutions de politique Prouver sur quelle version de la politique l'utilisateur a consenti
- Audit de conformité Faciliter les audits internes et externes
Bloquer les scripts tiers directement dans le HTML
Si vous préférez inclure vos scripts analytics/marketing directement dans votre HTML plutôt que via l'API JavaScript,
vous pouvez les bloquer automatiquement en utilisant les attributs type="text/plain" et
data-cookie-category. Les scripts sont vraiment bloqués jusqu'au consentement
de l'utilisateur (conforme RGPD).
Le système scanne automatiquement tous les <script> et <iframe> au chargement
de la page et observe aussi les scripts ajoutés dynamiquement (SPA, GTM). Lorsque l'utilisateur accepte une catégorie,
les scripts correspondants sont restaurés et exécutés.
// Syntaxe générale
<script type="text/plain" data-cookie-category="CATEGORIE" src="URL_DU_SCRIPT"> </script>
exemptés- Aucun blocage nécessaire : Outils de mesure d'audience conformes aux critères CNIL (Matomo exempté, Plausible, etc.). Ces traceurs ne nécessitent pas de consentement mais requièrent :- ✅ Information dans la politique de confidentialité
- ✅ Mécanisme d'opposition accessible (opt-out)
- ✅ Configuration stricte selon critères CNIL (finalité limitée, pas de cross-site, IP tronquée, etc.)
- Guide CNIL sur l'exemption
statistics- Scripts nécessitant consentement (Google Analytics, Hotjar, etc.)marketing- Scripts publicitaires (Facebook Pixel, Google Ads, TikTok, etc.)cookies- Scripts fonctionnels (Intercom, Crisp, HubSpot, Segment, etc.)
Points importants
- Les scripts avec
type="text/plain"ne sont pas exécutés par le navigateur - Le cookie consent les détecte automatiquement et les restaure après consentement
- Compatible avec les scripts ajoutés dynamiquement (SPA, injections GTM)
Google Consent Mode v2
Google Consent Mode v2 est un protocole qui permet à Google Analytics, Google Ads et autres services Google de respecter les choix de consentement de vos visiteurs en temps réel, sans bloquer complètement leur fonctionnement.
🎯 Pourquoi c'est important ?
Avant Consent Mode, vous aviez deux options :
- ❌ Bloquer complètement les scripts Google → perte totale de données si l'utilisateur refuse
- ❌ Charger sans consentement → non-conformité RGPD
Avec Consent Mode v2, Google reçoit un signal de consentement avant de charger ses scripts. Selon le choix de l'utilisateur :
- ✅ Consentement accordé → collecte normale des données
- ✅ Consentement refusé → collecte limitée, anonymisée (modélisation sans cookies)
🔧 Comment ça fonctionne techniquement ?
Cookie Consent envoie des signaux de consentement via la fonction gtag() avant
le chargement des scripts Google. Voici les 4 états de consentement gérés :
| Signal | Catégorie Cookie Consent | Description |
|---|---|---|
ad_storage |
marketing | Cookies publicitaires (Google Ads, remarketing) |
analytics_storage |
statistics | Cookies analytics (Google Analytics) |
ad_personalization |
marketing | Personnalisation des publicités |
ad_user_data |
marketing | Partage des données utilisateur avec Google |
🚫 Ce que Consent Mode ne fait pas
Attention : Google Consent Mode v2 ne bloque pas les scripts tiers déjà présents dans votre DOM ou chargés par d'autres moyens.
Il transmet uniquement des signaux de consentement aux services Google.
Si vous avez besoin de bloquer physiquement des scripts avant consentement
(Facebook Pixel, TikTok, scripts custom, etc.), utilisez la technique du
blocage automatique avec type="text/plain".
✅ Résumé : Ce que ça fait VS ce que ça ne fait pas
| ✅ Ce que fait Consent Mode v2 | ❌ Ce qu'il ne fait PAS |
|---|---|
|
|
📚 Pour aller plus loin
API JavaScript
// Ouvrir la bannière (showPrefs=true ⇒ onglet Préférences directement visible)
window.CookieConsent.open(true);
// Effacer les préférences et rouvrir en mode Préférences
window.CookieConsent.reset();
// Récupérer les préférences actuelles
const prefs = window.CookieConsent.getPreferences();
// Retourne : { cookies: true, statistics: false, marketing: true }
// Vérifier si une catégorie est acceptée
const hasStats = window.CookieConsent.hasConsent('statistics');
// Désactiver le logging
window.CookieConsent.disableLogging();
// Récupérer la configuration actuelle
const config = window.CookieConsent.getConfig();
Clé de stockage : localStorage['politecookiebanner'].
Outils de test rapide
Afficher le code des boutons
const resetBtn = document.getElementById('btn-reset-consent');
const openBtn = document.getElementById('btn-open-consent');
resetBtn?.addEventListener('click', () => {
if (window.CookieConsent?.reset) {
window.CookieConsent.reset(); // ouvre la bannière en mode préférences
} else {
try { localStorage.removeItem('politecookiebanner'); } catch {}
alert('Consentement effacé. Rechargez la page avec F5 pour voir la bannière.');
}
});
openBtn?.addEventListener('click', () => {
if (window.CookieConsent?.open) {
window.CookieConsent.open(true); // ouvre directement avec préférences visibles
} else {
const link = document.querySelector('#openpolitecookie a');
if (link) {
link.dispatchevent(new MouseEvent('click', { bubbles: true, cancelable: true }));
}
}
});
Événements personnalisés
// Écouter les changements de consentement
document.addEventListener('cookieConsentChanged', (event) => {
console.log('Nouvelles préférences:', event.detail.preferences);
console.log('Loggé sur serveur:', event.detail.logged);
// Exemple : charger des scripts conditionnels
if (event.detail.preferences.statistics) {
// Charger vos scripts analytics personnalisés
}
});
Personnalisation CSS
La bannière utilise des variables CSS (custom properties). C'est le moyen le plus simple d'adapter les couleurs et contrastes à votre charte sans toucher au JS et sans recompiler le SCSS.
Variables disponibles
:root {
--cc-bg: #fff;
--cc-border: #e5e7eb;
--cc-accent: #9b6b5a; /* couleur d'accent (bouton Accepter, switch ON) */
--cc-text: #111827;
--cc-muted: #6b7280;
--cc-line: #e5e7eb;
--cc-surface: #f3f4f6;
}
Conformité CNIL : égalité de présentation
La CNIL impose que les options « Tout accepter » et « Tout refuser » soient présentées de manière équivalente : elles doivent avoir une visibilité, une taille et un style similaires.
Internationalisation
14 langues supportées avec détection automatique : fr, en, es, de, it, nl, pt
import t from '@synapxlab/cookie-consent/translat';
t.setLocale('en'); // Force English
// traduction complète en thaï
t.add('th', {
title: "จัดการความยินยอมคุกกี้",
message: "เพื่อมอบประสบการณ์ที่ดีที่สุดให้กับคุณ เว็บไซต์นี้ใช้คุกกี้เพื่อวิเคราะห์การใช้งานและปรับปรุงบริการของเรา",
closeAria: "ปิดแบนเนอร์คุกกี้",
alwaysActive: "เปิดใช้งานเสมอ",
functionalTitle: "คุกกี้ที่จำเป็นอย่างเคร่งครัด",
functionalDesc: "คุกกี้เหล่านี้จำเป็นต่อการทำงานของเว็บไซต์และไม่สามารถปิดได้ในระบบของเรา โดยทั่วไปจะถูกตั้งค่าเพื่อตอบสนองต่อการกระทำของคุณ เช่น การตั้งค่าความเป็นส่วนตัว การเข้าสู่ระบบ หรือการกรอกแบบฟอร์ม คุกกี้เหล่านี้ช่วยรักษาความปลอดภัยของการเข้าชมและจัดการเซสชันของคุณ โดยไม่รวบรวมข้อมูลที่สามารถระบุตัวตนของคุณได้โดยตรง",
cookiesTitle: "คุกกี้สำหรับฟังก์ชันการทำงาน",
cookiesDesc: "คุกกี้เหล่านี้ช่วยปรับปรุงและปรับแต่งฟังก์ชันของเว็บไซต์ อาจถูกเปิดใช้งานโดยทีมงานของเราหรือบุคคลที่สามที่ให้บริการบนเว็บไซต์ของเรา หากคุณไม่ยอมรับคุกกี้เหล่านี้ บางบริการอาจทำงานได้ไม่ถูกต้อง",
statsTitle: "คุกกี้สำหรับการวัดผู้เข้าชม (สถิติ)",
statsDesc: "คุกกี้เหล่านี้ช่วยให้เราวัดจำนวนผู้เข้าชมเว็บไซต์ สร้างสถิติการใช้งาน และวิเคราะห์เส้นทางการเข้าชม เพื่อปรับปรุงประสิทธิภาพและคุณภาพของบริการ ข้อมูลที่รวบรวมจะถูกรวมและไม่สามารถระบุตัวบุคคลได้ การปฏิเสธคุกกี้เหล่านี้จะไม่กระทบต่อการใช้งานเว็บไซต์ของคุณ",
statsServices: "บริการ: {services}",
marketingTitle: "คุกกี้สำหรับโฆษณาและการปรับแต่งเนื้อหา",
marketingDesc: "คุกกี้เหล่านี้ช่วยปรับแต่งโฆษณาให้ตรงกับความสนใจของคุณตามพฤติกรรมการใช้งานบนเว็บไซต์ อาจใช้เพื่อวัดประสิทธิภาพของแคมเปญโฆษณา แสดงเนื้อหาที่เกี่ยวข้อง และจำกัดจำนวนครั้งที่คุณเห็นโฆษณา การปฏิเสธคุกกี้เหล่านี้จะไม่ป้องกันการใช้งานเว็บไซต์ แต่โฆษณาที่แสดงอาจไม่ตรงกับความสนใจของคุณ",
marketingServices: "บริการ: {services}",
loggingTitle: "📋 หลักฐานการยินยอมคุกกี้",
loggingNotice: "ตามข้อกำหนดทางกฎหมาย (มาตรา 7.1 ของ GDPR) และคำแนะนำของ CNIL เราจะเก็บบันทึกการตั้งค่าความยินยอมของคุณ (คุกกี้ฟังก์ชัน สถิติ โฆษณา) รวมถึงเวอร์ชันของแบนเนอร์และรหัสเหตุการณ์ (UUID) เพื่อจำกัดการประมวลผลข้อมูลส่วนบุคคล ที่อยู่ IP และข้อมูลเบราว์เซอร์ของคุณจะถูกแปลงเป็นลายนิ้วมือแบบ นามแฝง ด้วยกระบวนการแฮชที่ไม่สามารถย้อนกลับได้ บันทึกเหล่านี้จะถูกเก็บไว้นานสูงสุด 13 เดือน เพื่อใช้เป็นหลักฐานเท่านั้น คุณสามารถเปลี่ยนการตั้งค่าได้ทุกเมื่อโดยคลิกลิงก์ “จัดการคุกกี้ของฉัน” ที่ด้านล่างของหน้า",
acceptAll: "ยอมรับทั้งหมด",
denyAll: "ปฏิเสธทั้งหมด",
viewPrefs: "ตั้งค่าความยินยอมของฉัน",
savePrefs: "บันทึกการตั้งค่า",
delPrefs: "ลบการตั้งค่า"
});
t.setLocale('th');
Accessibilité
- Dialog ARIA :
role="dialog",aria-live="polite",aria-modal="true" - Bouton de fermeture avec
aria-label - Navigation clavier (tab) et focus visibles
- Catégories pliables/dépliables avec
aria-expanded - Support de la touche Échap pour fermer
- Contraste WCAG AA respecté
Compatibilité navigateurs
Chrome, Firefox, Safari, Edge (versions récentes). iOS/Android WebView modernes.
Pas de dépendance à jQuery.
Compatible ES6+ (transpilation possible pour anciens navigateurs).
🔐 Politique de confidentialité
Sécurité & Conformité
- ✅ HTTPS uniquement (TLS 1.3)
- ✅ Serveurs hébergés en France (OVH Roubaix)
- ✅ Données chiffrées en transit et au repos
- ✅ Rate limiting côté serveur
- ✅ Pas d'exécution de code distant
Ce que nous NE collectons PAS
Aucune donnée personnelle des visiteurs
- ❌ Nom, prénom, email; Données bancaires; Numéro de téléphone; Adresse postale
Aucun tracking comportemental
- ❌ Pages visitées; Clics de souris; Temps passé sur le site; Parcours de navigation
Aucune empreinte digitale (fingerprinting)
- ❌ Canvas, WebGL, Font, Audio fingerprinting; Battery API ou autres techniques de tracking
Aucun tracking tiers
- ❌ Google Analytics (ironique, non ?) ; Facebook Pixel; Trackers publicitaires
Ce que nous collectons (exhaustif)
Données collectées lors d'un consentement :
{
"consent": {
"statistics": true,
"marketing": false,
"cookies": true
},
"timestamp": 1730390400000,
"user_agent": "Mozilla/5.0..." // Uniquement pour détecter les bots
}
C'est TOUT. Aucune autre donnée n'est transmise ou stockée.
Base légale (RGPD)
Le traitement repose sur l'intérêt légitime du propriétaire du site web (Article 6.1.f du RGPD) pour :
- 📊 Mesurer le taux d'acceptation/refus des cookies
- ⚖️ Prouver la conformité RGPD (preuve de consentement)
- 🛡️ Défendre ses droits en cas de contrôle CNIL
- 📈 Optimiser la bannière pour améliorer l'expérience utilisateur
Qui a accès aux données ?
| Entité | Accès | Finalité |
|---|---|---|
Propriétaire du site |
✅ Complet | Dashboard de conformité, exports légaux |
SynapxLab |
✅ Technique | Hébergement et maintenance de l'infrastructure |
Tiers |
❌ Aucun | Nous ne vendons, ne partageons jamais vos données |
Aucun transfert hors UE : Toutes les données sont hébergées et traitées exclusivement au sein de l’Union européenne. Aucun transfert vers les États-Unis ni vers d’autres pays tiers.
Durée de conservation
| Type de donnée | Durée | Action |
|---|---|---|
| Preuve de consentement | 13 mois + 5 ans (prescription) | Journalisation des actions (acceptation, refus, retrait, préférences) à conserver pour justifier la conformité RGPD |
La CNIL recommande de conserver les preuves de consentement pendant la durée du consentement (13 mois maximum) à laquelle s’ajouter le délai de prescription légale de 5 ans, conformément à l’article 2224 du Code civil.
Vos droits (RGPD)
✅ Droit d'accès (Art. 15)
Exportez les consentements de votre site depuis le dashboard → Bouton "Exporter les logs"
✅ Droit de rectification (Art. 16)
Corrigez les informations de votre compte depuis les paramètres
✅ Droit à l'effacement (Art. 17)
Supprimez votre compte et tous les logs de consentement (action irréversible)
✅ Droit d'opposition (Art. 21)
Désactivez le logging des consentements à tout moment
✅ Droit à la portabilité (Art. 20)
Export disponible en CSV, JSON, ou PDF (format légal)
Pour exercer vos droits : contact@synapxlab.com (délai : 30 jours max, souvent sous 72h)
🛡️ Veille juridique
Le RGPD et la directive ePrivacy évoluent constamment. Notre équipe surveille quotidiennement les publications de la CNIL, du CEPD et des autorités européennes.
En cas de changement impactant votre bannière :
- 📧 Notification par email avec détails techniques
- 🔄 Mise à jour du SDK disponible sous 48h
- 📋 Guide de migration fourni
- 🎯 Accompagnement technique si nécessaire
Parce que la conformité ne devrait jamais être une surprise.
🇫🇷 Hébergement 100% français
Fournisseur : OVH
Localisation : Roubaix, France (Datacenter RBX)
Juridiction : Union Européenne (RGPD strict)
Certifications : ISO 27001, ISO 27017, ISO 27018, SOC 1 & 2
Contact & Réclamations
Responsable du traitement :
SynapxLab - Lock Ness Informatique
Lyon, Rhône-Alpes, France
Email : contact@synapxlab.com
Site web : synapx.fr
Réclamation CNIL
Si vous estimez que vos droits ne sont pas respectés, vous pouvez déposer une réclamation auprès de la CNIL :
Commission Nationale de l'Informatique et des Libertés
3 Place de Fontenoy, TSA 80715
75334 PARIS CEDEX 07
📞 +33 (0)1 53 73 22 22
🌐 cnil.fr/fr/plaintes
Limites & responsabilité
@synapxlab/cookie-consent gère la collecte, l’enregistrement et la preuve du consentement aux traceurs (cookies, localStorage, etc.), via un système de journalisation (“logger”) facultatif.
L’exploitant du site qui intègre ce module demeure responsable du traitement des données collectées, y compris des logs de consentement.
Ce composant ne constitue pas un avis juridique et ne remplace pas une solution de conformité RGPD complète (registre des traitements, DPIA, DPA, gestion des droits, etc.). Validez toujours votre paramétrage avec votre DPO ou votre conseil juridique.
Note sur les analytics exemptés : Cookie Consent gère le consentement pour les traceurs qui en ont besoin. Pour les outils de mesure d'audience exemptés selon les critères CNIL, référez-vous à la documentation CNIL pour leur déploiement conforme.
🇫🇷 Hébergement 100% français
Fournisseur : OVH - Roubaix, France RBX (Roubaix)- Union Européenne (RGPD strict)
Certification : OVH est certifié ISO 27001, ISO 27017, ISO 27018, SOC 1 & 2
Responsable du traitement :
SynapxLab - Lock Ness Informatique
Lyon, Rhône-Alpes, France
Email : contact@synapxlab.com