[{"data":1,"prerenderedAt":1776},["ShallowReactive",2],{"article-alternates":3,"article-\u002Ffr\u002Fdata\u002Fanalytique-respectueuse-donnees-confidentielles":13},{"i18nKey":4,"paths":5},"data-006-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fdata\u002Fprivacy-first-analytics-plausible-server-aggregation","\u002Fen\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side-aggregation","\u002Fes\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side-aggregation","\u002Ffr\u002Fdata\u002Fanalytique-respectueuse-donnees-confidentielles","\u002Fit\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side-aggregation","\u002Fru\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side","\u002Ftr\u002Fdata\u002Fprivacy-first-analytics-plausible-ve-sunucu-tarafi-aggregation",{"_path":9,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1770,"_id":1771,"_source":1772,"_file":1773,"_stem":1774,"_extension":1775},"data",false,"","Analytics respectueux de la confidentialité : Plausible et agrégation côté serveur","Mesure compatible RGPD : Plausible + agrégation côté serveur pour un suivi sans cookies, comparaison GA4 et architecture production.","2026-05-19",[21,22,23,24,25],"analytics-respectueux-confidentialite","plausible","suivi-cote-serveur","sans-cookies","rgpd",9,"Roibase",{"type":29,"children":30,"toc":1763},"root",[31,47,54,66,71,123,128,133,157,163,188,193,202,207,447,452,496,501,534,540,552,578,588,792,802,868,873,902,908,913,921,942,950,1647,1655,1673,1678,1684,1689,1697,1715,1723,1741,1746,1757],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36,39,45],{"type":37,"value":38},"text","Le tableau des cookies a effondré. Chrome a supprimé les cookies tiers en 2024, Safari et Firefox les bloquaient déjà depuis des années. Les équipes marketing constatent une perte de données de 40 à 60 % avec GA4 (selon les propres rapports de Google). Parallèlement, les amendes RGPD ont atteint 4,2 milliards d'euros en Europe en 2025. Deux pressions : technique (pas de cookies, pas de mesure) et légale (ignorer le consentement est un crime). L'",{"type":32,"tag":40,"props":41,"children":42},"em",{},[43],{"type":37,"value":44},"analytics respectueux de la confidentialité",{"type":37,"value":46}," offre une solution unique à ces deux enjeux : mesure sans cookies, agrégation côté serveur, prêt pour la conformité.",{"type":32,"tag":48,"props":49,"children":51},"h2",{"id":50},"plausible-le-cœur-de-la-mesure-sans-cookies",[52],{"type":37,"value":53},"Plausible : Le cœur de la mesure sans cookies",{"type":32,"tag":33,"props":55,"children":56},{},[57,59,64],{"type":37,"value":58},"Quand Plausible a lancé en 2019, il s'est positionné comme « une alternative à GA ». En 2026, c'est une catégorie entière : ",{"type":32,"tag":40,"props":60,"children":61},{},[62],{"type":37,"value":63},"web analytics respectueux de la confidentialité",{"type":37,"value":65},". La différence clé : au lieu de lier les événements à un cookie client, Plausible utilise un ID de session sans mémoire côté serveur. La combinaison IP + User-Agent produit un hash (SHA-256), réinitialisé toutes les 24 heures. Résultat : nombre de visiteurs uniques exact à 95 %, mais aucune PII (personally identifiable information) stockée.",{"type":32,"tag":33,"props":67,"children":68},{},[69],{"type":37,"value":70},"Comparé à GA4 :",{"type":32,"tag":72,"props":73,"children":74},"ul",{},[75,87,113],{"type":32,"tag":76,"props":77,"children":78},"li",{},[79,85],{"type":32,"tag":80,"props":81,"children":82},"strong",{},[83],{"type":37,"value":84},"Propriété des données :",{"type":37,"value":86}," Plausible écrit les événements dans sa propre instance PostgreSQL. GA4 les envoie aux serveurs Google — tu ne peux pas interroger (sauf export BigQuery).",{"type":32,"tag":76,"props":88,"children":89},{},[90,95,97,104,106,111],{"type":32,"tag":80,"props":91,"children":92},{},[93],{"type":37,"value":94},"Dépendance aux cookies :",{"type":37,"value":96}," GA4 dépend du cookie ",{"type":32,"tag":98,"props":99,"children":101},"code",{"className":100},[],[102],{"type":37,"value":103},"_ga",{"type":37,"value":105},". Si le cookie est rejeté, la mesure s'effondre. Plausible est ",{"type":32,"tag":40,"props":107,"children":108},{},[109],{"type":37,"value":110},"nativement",{"type":37,"value":112}," sans cookies.",{"type":32,"tag":76,"props":114,"children":115},{},[116,121],{"type":32,"tag":80,"props":117,"children":118},{},[119],{"type":37,"value":120},"Taille du script :",{"type":37,"value":122}," Le tracker Plausible fait 1,4 KB, gtag.js 28 KB + gtm.js 45 KB. Une différence de ×50 au chargement.",{"type":32,"tag":33,"props":124,"children":125},{},[126],{"type":37,"value":127},"Pour la conformité RGPD, le point critique : le hash Plausible n'est pas une donnée personnelle. L'article 4(1) du RGPD définit les données personnelles comme « toute information se rapportant à une personne physique identifiée ou identifiable ». Un hash SHA-256 ne peut pas être inversé — c'est donc de la donnée anonymisée. TCF 2.2 le place dans « Usage 1 : strictement nécessaire » — aucun consentement requis.",{"type":32,"tag":33,"props":129,"children":130},{},[131],{"type":37,"value":132},"En production, Plausible fonctionne selon deux scénarios :",{"type":32,"tag":134,"props":135,"children":136},"ol",{},[137,147],{"type":32,"tag":76,"props":138,"children":139},{},[140,145],{"type":32,"tag":80,"props":141,"children":142},{},[143],{"type":37,"value":144},"Standalone :",{"type":37,"value":146}," Petits sites (blog, landing page) en cas d'usage simple. 10 lignes de JS, dashboard prêt.",{"type":32,"tag":76,"props":148,"children":149},{},[150,155],{"type":32,"tag":80,"props":151,"children":152},{},[153],{"type":37,"value":154},"Hybride :",{"type":37,"value":156}," E-commerce ou SaaS — Plausible capture le trafic général, les événements conversion critiques vont via GTM côté serveur vers CDP. C'est ce scénario qui nous intéresse ici.",{"type":32,"tag":48,"props":158,"children":160},{"id":159},"agrégation-côté-serveur-de-lévénement-à-la-métrique",[161],{"type":37,"value":162},"Agrégation côté serveur : De l'événement à la métrique",{"type":32,"tag":33,"props":164,"children":165},{},[166,168,172,174,179,181,186],{"type":37,"value":167},"Le second pilier de l'",{"type":32,"tag":40,"props":169,"children":170},{},[171],{"type":37,"value":44},{"type":37,"value":173}," : métriques, pas événements bruts. GA4 enregistre chaque clic, scroll, pause vidéo comme une ligne séparée (event stream). Un site e-commerce génère 10 millions d'événements par jour. Ce volume représente un coût ",{"type":32,"tag":40,"props":175,"children":176},{},[177],{"type":37,"value":178},"et",{"type":37,"value":180}," un risque de confidentialité. L'agrégation change la logique : ",{"type":32,"tag":80,"props":182,"children":183},{},[184],{"type":37,"value":185},"résumer les événements côté serveur immédiatement",{"type":37,"value":187},", comptabiliser plutôt que sauvegarder l'événement brut.",{"type":32,"tag":33,"props":189,"children":190},{},[191],{"type":37,"value":192},"Exemple d'architecture :",{"type":32,"tag":194,"props":195,"children":197},"pre",{"code":196},"Client → Tracker Plausible (1,4 KB JS)\n         ↓\n      Worker (Cloudflare \u002F Vercel)\n         ↓ (agrégation)\n      Event Bus interne (Kafka \u002F Redpanda)\n         ↓\n      Time-Series DB (TimescaleDB \u002F ClickHouse)\n",[198],{"type":32,"tag":98,"props":199,"children":200},{"__ignoreMap":16},[201],{"type":37,"value":196},{"type":32,"tag":33,"props":203,"children":204},{},[205],{"type":37,"value":206},"Ce qu'agrège le Worker :",{"type":32,"tag":194,"props":208,"children":212},{"code":209,"language":210,"meta":16,"className":211,"style":16},"-- Table hypertable TimescaleDB\nCREATE TABLE page_metrics (\n  time        TIMESTAMPTZ NOT NULL,\n  page_path   TEXT NOT NULL,\n  country     TEXT,\n  views       INT DEFAULT 1,\n  bounces     INT DEFAULT 0,\n  session_dur INT DEFAULT 0\n);\n\nSELECT create_hypertable('page_metrics', 'time');\n","sql","language-sql shiki shiki-themes github-dark",[213],{"type":32,"tag":98,"props":214,"children":215},{"__ignoreMap":16},[216,228,255,279,301,318,347,373,395,403,413],{"type":32,"tag":217,"props":218,"children":221},"span",{"class":219,"line":220},"line",1,[222],{"type":32,"tag":217,"props":223,"children":225},{"style":224},"--shiki-default:#6A737D",[226],{"type":37,"value":227},"-- Table hypertable TimescaleDB\n",{"type":32,"tag":217,"props":229,"children":231},{"class":219,"line":230},2,[232,238,243,249],{"type":32,"tag":217,"props":233,"children":235},{"style":234},"--shiki-default:#F97583",[236],{"type":37,"value":237},"CREATE",{"type":32,"tag":217,"props":239,"children":240},{"style":234},[241],{"type":37,"value":242}," TABLE",{"type":32,"tag":217,"props":244,"children":246},{"style":245},"--shiki-default:#B392F0",[247],{"type":37,"value":248}," page_metrics",{"type":32,"tag":217,"props":250,"children":252},{"style":251},"--shiki-default:#E1E4E8",[253],{"type":37,"value":254}," (\n",{"type":32,"tag":217,"props":256,"children":258},{"class":219,"line":257},3,[259,264,269,274],{"type":32,"tag":217,"props":260,"children":261},{"style":234},[262],{"type":37,"value":263},"  time",{"type":32,"tag":217,"props":265,"children":266},{"style":234},[267],{"type":37,"value":268},"        TIMESTAMPTZ",{"type":32,"tag":217,"props":270,"children":271},{"style":234},[272],{"type":37,"value":273}," NOT NULL",{"type":32,"tag":217,"props":275,"children":276},{"style":251},[277],{"type":37,"value":278},",\n",{"type":32,"tag":217,"props":280,"children":282},{"class":219,"line":281},4,[283,288,293,297],{"type":32,"tag":217,"props":284,"children":285},{"style":251},[286],{"type":37,"value":287},"  page_path   ",{"type":32,"tag":217,"props":289,"children":290},{"style":234},[291],{"type":37,"value":292},"TEXT",{"type":32,"tag":217,"props":294,"children":295},{"style":234},[296],{"type":37,"value":273},{"type":32,"tag":217,"props":298,"children":299},{"style":251},[300],{"type":37,"value":278},{"type":32,"tag":217,"props":302,"children":304},{"class":219,"line":303},5,[305,310,314],{"type":32,"tag":217,"props":306,"children":307},{"style":251},[308],{"type":37,"value":309},"  country     ",{"type":32,"tag":217,"props":311,"children":312},{"style":234},[313],{"type":37,"value":292},{"type":32,"tag":217,"props":315,"children":316},{"style":251},[317],{"type":37,"value":278},{"type":32,"tag":217,"props":319,"children":321},{"class":219,"line":320},6,[322,327,332,337,343],{"type":32,"tag":217,"props":323,"children":324},{"style":251},[325],{"type":37,"value":326},"  views       ",{"type":32,"tag":217,"props":328,"children":329},{"style":234},[330],{"type":37,"value":331},"INT",{"type":32,"tag":217,"props":333,"children":334},{"style":234},[335],{"type":37,"value":336}," DEFAULT",{"type":32,"tag":217,"props":338,"children":340},{"style":339},"--shiki-default:#79B8FF",[341],{"type":37,"value":342}," 1",{"type":32,"tag":217,"props":344,"children":345},{"style":251},[346],{"type":37,"value":278},{"type":32,"tag":217,"props":348,"children":350},{"class":219,"line":349},7,[351,356,360,364,369],{"type":32,"tag":217,"props":352,"children":353},{"style":251},[354],{"type":37,"value":355},"  bounces     ",{"type":32,"tag":217,"props":357,"children":358},{"style":234},[359],{"type":37,"value":331},{"type":32,"tag":217,"props":361,"children":362},{"style":234},[363],{"type":37,"value":336},{"type":32,"tag":217,"props":365,"children":366},{"style":339},[367],{"type":37,"value":368}," 0",{"type":32,"tag":217,"props":370,"children":371},{"style":251},[372],{"type":37,"value":278},{"type":32,"tag":217,"props":374,"children":376},{"class":219,"line":375},8,[377,382,386,390],{"type":32,"tag":217,"props":378,"children":379},{"style":251},[380],{"type":37,"value":381},"  session_dur ",{"type":32,"tag":217,"props":383,"children":384},{"style":234},[385],{"type":37,"value":331},{"type":32,"tag":217,"props":387,"children":388},{"style":234},[389],{"type":37,"value":336},{"type":32,"tag":217,"props":391,"children":392},{"style":339},[393],{"type":37,"value":394}," 0\n",{"type":32,"tag":217,"props":396,"children":397},{"class":219,"line":26},[398],{"type":32,"tag":217,"props":399,"children":400},{"style":251},[401],{"type":37,"value":402},");\n",{"type":32,"tag":217,"props":404,"children":406},{"class":219,"line":405},10,[407],{"type":32,"tag":217,"props":408,"children":410},{"emptyLinePlaceholder":409},true,[411],{"type":37,"value":412},"\n",{"type":32,"tag":217,"props":414,"children":416},{"class":219,"line":415},11,[417,422,427,433,438,443],{"type":32,"tag":217,"props":418,"children":419},{"style":234},[420],{"type":37,"value":421},"SELECT",{"type":32,"tag":217,"props":423,"children":424},{"style":251},[425],{"type":37,"value":426}," create_hypertable(",{"type":32,"tag":217,"props":428,"children":430},{"style":429},"--shiki-default:#9ECBFF",[431],{"type":37,"value":432},"'page_metrics'",{"type":32,"tag":217,"props":434,"children":435},{"style":251},[436],{"type":37,"value":437},", ",{"type":32,"tag":217,"props":439,"children":440},{"style":429},[441],{"type":37,"value":442},"'time'",{"type":32,"tag":217,"props":444,"children":445},{"style":251},[446],{"type":37,"value":402},{"type":32,"tag":33,"props":448,"children":449},{},[450],{"type":37,"value":451},"Chaque page vue du client :",{"type":32,"tag":134,"props":453,"children":454},{},[455,468,473,478,491],{"type":32,"tag":76,"props":456,"children":457},{},[458,460,466],{"type":37,"value":459},"Le tracker fait ",{"type":32,"tag":98,"props":461,"children":463},{"className":462},[],[464],{"type":37,"value":465},"POST \u002Fapi\u002Fevent",{"type":37,"value":467}," → endpoint worker",{"type":32,"tag":76,"props":469,"children":470},{},[471],{"type":37,"value":472},"Le worker calcule le hash (IP + UA → session_id)",{"type":32,"tag":76,"props":474,"children":475},{},[476],{"type":37,"value":477},"Redis vérifie : même session_id dans les 30 dernières minutes ?",{"type":32,"tag":76,"props":479,"children":480},{},[481,483,489],{"type":37,"value":482},"Oui : incrémenter ",{"type":32,"tag":98,"props":484,"children":486},{"className":485},[],[487],{"type":37,"value":488},"views",{"type":37,"value":490}," +1 ; non : créer une ligne",{"type":32,"tag":76,"props":492,"children":493},{},[494],{"type":37,"value":495},"Après 30 minutes (session timeout), calculer le bounce",{"type":32,"tag":33,"props":497,"children":498},{},[499],{"type":37,"value":500},"Trois avantages par rapport à GA4 :",{"type":32,"tag":72,"props":502,"children":503},{},[504,514,524],{"type":32,"tag":76,"props":505,"children":506},{},[507,512],{"type":32,"tag":80,"props":508,"children":509},{},[510],{"type":37,"value":511},"Stockage : –85 %.",{"type":37,"value":513}," 10M événements → 200K lignes agrégées",{"type":32,"tag":76,"props":515,"children":516},{},[517,522],{"type":32,"tag":80,"props":518,"children":519},{},[520],{"type":37,"value":521},"Vitesse requête : ×40.",{"type":37,"value":523}," Index time-series = réponses dashboard en \u003C15ms",{"type":32,"tag":76,"props":525,"children":526},{},[527,532],{"type":32,"tag":80,"props":528,"children":529},{},[530],{"type":37,"value":531},"Confidentialité : zéro PII.",{"type":37,"value":533}," Pas d'événement brut = pas de donnée personnelle à récupérer",{"type":32,"tag":48,"props":535,"children":537},{"id":536},"conformité-rgpdkvkk-détails-techniques",[538],{"type":37,"value":539},"Conformité RGPD\u002FKVKK : Détails techniques",{"type":32,"tag":33,"props":541,"children":542},{},[543,545,550],{"type":37,"value":544},"Pour rendre ",{"type":32,"tag":40,"props":546,"children":547},{},[548],{"type":37,"value":549},"privacy-first analytics",{"type":37,"value":551}," légalement imperméable, quatre couches :",{"type":32,"tag":33,"props":553,"children":554},{},[555,560,562,568,570,576],{"type":32,"tag":80,"props":556,"children":557},{},[558],{"type":37,"value":559},"1. Minimisation des données (article 5.1c RGPD) :",{"type":37,"value":561},"\nCollecter uniquement ce qui est nécessaire. Au lieu de sauvegarder l'URL de référence entière (",{"type":32,"tag":98,"props":563,"children":565},{"className":564},[],[566],{"type":37,"value":567},"https:\u002F\u002Fexample.com\u002Fcheckout?user=123",{"type":37,"value":569},"), stocker juste le domaine (",{"type":32,"tag":98,"props":571,"children":573},{"className":572},[],[574],{"type":37,"value":575},"example.com",{"type":37,"value":577},"). Conformité + économie disque.",{"type":32,"tag":33,"props":579,"children":580},{},[581,586],{"type":32,"tag":80,"props":582,"children":583},{},[584],{"type":37,"value":585},"2. Seuil d'anonymisation (Ligne directrice KVKK 2023) :",{"type":37,"value":587},"\nSi une métrique contient \u003C 5 éléments dans un groupe, afficher \"\u003C 5\". Parce qu'un groupe de 2 devient identifiable. TimescaleDB :",{"type":32,"tag":194,"props":589,"children":591},{"code":590,"language":210,"meta":16,"className":211,"style":16},"SELECT \n  country,\n  CASE \n    WHEN COUNT(DISTINCT session_id) \u003C 5 THEN '\u003C 5'\n    ELSE COUNT(DISTINCT session_id)::TEXT\n  END AS visitors\nFROM page_metrics\nWHERE time > NOW() - INTERVAL '7 days'\nGROUP BY country;\n",[592],{"type":32,"tag":98,"props":593,"children":594},{"__ignoreMap":16},[595,607,615,627,675,705,723,736,779],{"type":32,"tag":217,"props":596,"children":597},{"class":219,"line":220},[598,602],{"type":32,"tag":217,"props":599,"children":600},{"style":234},[601],{"type":37,"value":421},{"type":32,"tag":217,"props":603,"children":604},{"style":251},[605],{"type":37,"value":606}," \n",{"type":32,"tag":217,"props":608,"children":609},{"class":219,"line":230},[610],{"type":32,"tag":217,"props":611,"children":612},{"style":251},[613],{"type":37,"value":614},"  country,\n",{"type":32,"tag":217,"props":616,"children":617},{"class":219,"line":257},[618,623],{"type":32,"tag":217,"props":619,"children":620},{"style":234},[621],{"type":37,"value":622},"  CASE",{"type":32,"tag":217,"props":624,"children":625},{"style":251},[626],{"type":37,"value":606},{"type":32,"tag":217,"props":628,"children":629},{"class":219,"line":281},[630,635,640,645,650,655,660,665,670],{"type":32,"tag":217,"props":631,"children":632},{"style":234},[633],{"type":37,"value":634},"    WHEN",{"type":32,"tag":217,"props":636,"children":637},{"style":339},[638],{"type":37,"value":639}," COUNT",{"type":32,"tag":217,"props":641,"children":642},{"style":251},[643],{"type":37,"value":644},"(",{"type":32,"tag":217,"props":646,"children":647},{"style":234},[648],{"type":37,"value":649},"DISTINCT",{"type":32,"tag":217,"props":651,"children":652},{"style":251},[653],{"type":37,"value":654}," session_id) ",{"type":32,"tag":217,"props":656,"children":657},{"style":234},[658],{"type":37,"value":659},"\u003C",{"type":32,"tag":217,"props":661,"children":662},{"style":339},[663],{"type":37,"value":664}," 5",{"type":32,"tag":217,"props":666,"children":667},{"style":234},[668],{"type":37,"value":669}," THEN",{"type":32,"tag":217,"props":671,"children":672},{"style":429},[673],{"type":37,"value":674}," '\u003C 5'\n",{"type":32,"tag":217,"props":676,"children":677},{"class":219,"line":303},[678,683,687,691,695,700],{"type":32,"tag":217,"props":679,"children":680},{"style":234},[681],{"type":37,"value":682},"    ELSE",{"type":32,"tag":217,"props":684,"children":685},{"style":339},[686],{"type":37,"value":639},{"type":32,"tag":217,"props":688,"children":689},{"style":251},[690],{"type":37,"value":644},{"type":32,"tag":217,"props":692,"children":693},{"style":234},[694],{"type":37,"value":649},{"type":32,"tag":217,"props":696,"children":697},{"style":251},[698],{"type":37,"value":699}," session_id)::",{"type":32,"tag":217,"props":701,"children":702},{"style":234},[703],{"type":37,"value":704},"TEXT\n",{"type":32,"tag":217,"props":706,"children":707},{"class":219,"line":320},[708,713,718],{"type":32,"tag":217,"props":709,"children":710},{"style":234},[711],{"type":37,"value":712},"  END",{"type":32,"tag":217,"props":714,"children":715},{"style":234},[716],{"type":37,"value":717}," AS",{"type":32,"tag":217,"props":719,"children":720},{"style":251},[721],{"type":37,"value":722}," visitors\n",{"type":32,"tag":217,"props":724,"children":725},{"class":219,"line":349},[726,731],{"type":32,"tag":217,"props":727,"children":728},{"style":234},[729],{"type":37,"value":730},"FROM",{"type":32,"tag":217,"props":732,"children":733},{"style":251},[734],{"type":37,"value":735}," page_metrics\n",{"type":32,"tag":217,"props":737,"children":738},{"class":219,"line":375},[739,744,749,754,759,764,769,774],{"type":32,"tag":217,"props":740,"children":741},{"style":234},[742],{"type":37,"value":743},"WHERE",{"type":32,"tag":217,"props":745,"children":746},{"style":234},[747],{"type":37,"value":748}," time",{"type":32,"tag":217,"props":750,"children":751},{"style":234},[752],{"type":37,"value":753}," >",{"type":32,"tag":217,"props":755,"children":756},{"style":234},[757],{"type":37,"value":758}," NOW",{"type":32,"tag":217,"props":760,"children":761},{"style":251},[762],{"type":37,"value":763},"() ",{"type":32,"tag":217,"props":765,"children":766},{"style":234},[767],{"type":37,"value":768},"-",{"type":32,"tag":217,"props":770,"children":771},{"style":251},[772],{"type":37,"value":773}," INTERVAL ",{"type":32,"tag":217,"props":775,"children":776},{"style":429},[777],{"type":37,"value":778},"'7 days'\n",{"type":32,"tag":217,"props":780,"children":781},{"class":219,"line":26},[782,787],{"type":32,"tag":217,"props":783,"children":784},{"style":234},[785],{"type":37,"value":786},"GROUP BY",{"type":32,"tag":217,"props":788,"children":789},{"style":251},[790],{"type":37,"value":791}," country;\n",{"type":32,"tag":33,"props":793,"children":794},{},[795,800],{"type":32,"tag":80,"props":796,"children":797},{},[798],{"type":37,"value":799},"3. Politique de rétention (article 17 RGPD) :",{"type":37,"value":801},"\nUne fois l'objectif de traitement atteint (optimisation performance), supprimer. Pour analytics : 90 jours suffisent. TimescaleDB compression + suppression automatique :",{"type":32,"tag":194,"props":803,"children":805},{"code":804,"language":210,"meta":16,"className":211,"style":16},"SELECT add_retention_policy('page_metrics', INTERVAL '90 days');\nSELECT add_compression_policy('page_metrics', INTERVAL '7 days');\n",[806],{"type":32,"tag":98,"props":807,"children":808},{"__ignoreMap":16},[809,839],{"type":32,"tag":217,"props":810,"children":811},{"class":219,"line":220},[812,816,821,825,830,835],{"type":32,"tag":217,"props":813,"children":814},{"style":234},[815],{"type":37,"value":421},{"type":32,"tag":217,"props":817,"children":818},{"style":251},[819],{"type":37,"value":820}," add_retention_policy(",{"type":32,"tag":217,"props":822,"children":823},{"style":429},[824],{"type":37,"value":432},{"type":32,"tag":217,"props":826,"children":827},{"style":251},[828],{"type":37,"value":829},", INTERVAL ",{"type":32,"tag":217,"props":831,"children":832},{"style":429},[833],{"type":37,"value":834},"'90 days'",{"type":32,"tag":217,"props":836,"children":837},{"style":251},[838],{"type":37,"value":402},{"type":32,"tag":217,"props":840,"children":841},{"class":219,"line":230},[842,846,851,855,859,864],{"type":32,"tag":217,"props":843,"children":844},{"style":234},[845],{"type":37,"value":421},{"type":32,"tag":217,"props":847,"children":848},{"style":251},[849],{"type":37,"value":850}," add_compression_policy(",{"type":32,"tag":217,"props":852,"children":853},{"style":429},[854],{"type":37,"value":432},{"type":32,"tag":217,"props":856,"children":857},{"style":251},[858],{"type":37,"value":829},{"type":32,"tag":217,"props":860,"children":861},{"style":429},[862],{"type":37,"value":863},"'7 days'",{"type":32,"tag":217,"props":865,"children":866},{"style":251},[867],{"type":37,"value":402},{"type":32,"tag":33,"props":869,"children":870},{},[871],{"type":37,"value":872},"Les données > 7j se compressent, > 90j s'effacent. Droit à l'oubli (article 17) automatisé.",{"type":32,"tag":33,"props":874,"children":875},{},[876,881,883,889,891,900],{"type":32,"tag":80,"props":877,"children":878},{},[879],{"type":37,"value":880},"4. Consent Mode v2 (optionnel) :",{"type":37,"value":882},"\nSi tu fonctionne encore en hybride GA4, règle GA4 sur ",{"type":32,"tag":98,"props":884,"children":886},{"className":885},[],[887],{"type":37,"value":888},"analytics_storage: denied",{"type":37,"value":890},". Plausible continue — il n'utilise pas de cookies. [Une ",{"type":32,"tag":892,"props":893,"children":897},"a",{"href":894,"rel":895},"https:\u002F\u002Fwww.roibase.com.tr\u002Ffr\u002Ffirstparty",[896],"nofollow",[898],{"type":37,"value":899},"stratégie de données first-party",{"type":37,"value":901}," détaille ce setup hybride : Plausible pour le trafic, GTM côté serveur pour les conversions vers CDP.",{"type":32,"tag":48,"props":903,"children":905},{"id":904},"cas-production-stack-hybride-e-commerce",[906],{"type":37,"value":907},"Cas production : Stack hybride e-commerce",{"type":32,"tag":33,"props":909,"children":910},{},[911],{"type":37,"value":912},"Architecture déployée pour une boutique Shopify :",{"type":32,"tag":33,"props":914,"children":915},{},[916],{"type":32,"tag":80,"props":917,"children":918},{},[919],{"type":37,"value":920},"Frontend :",{"type":32,"tag":72,"props":922,"children":923},{},[924,929],{"type":32,"tag":76,"props":925,"children":926},{},[927],{"type":37,"value":928},"Tracker Plausible sur toutes les pages (product view, cart, checkout)",{"type":32,"tag":76,"props":930,"children":931},{},[932,934,940],{"type":37,"value":933},"Événement custom ",{"type":32,"tag":98,"props":935,"children":937},{"className":936},[],[938],{"type":37,"value":939},"plausible('Purchase', {revenue: 150})",{"type":37,"value":941}," au succès checkout",{"type":32,"tag":33,"props":943,"children":944},{},[945],{"type":32,"tag":80,"props":946,"children":947},{},[948],{"type":37,"value":949},"Backend (Cloudflare Worker) :",{"type":32,"tag":194,"props":951,"children":955},{"code":952,"language":953,"meta":16,"className":954,"style":16},"addEventListener('fetch', event => {\n  event.respondWith(handleRequest(event.request))\n})\n\nasync function handleRequest(request) {\n  const url = new URL(request.url)\n  \n  if (url.pathname === '\u002Fapi\u002Fevent') {\n    const body = await request.json()\n    const sessionId = hashSession(request.headers.get('CF-Connecting-IP'), \n                                    request.headers.get('User-Agent'))\n    \n    \u002F\u002F Contrôle session Redis\n    const exists = await redis.exists(`session:${sessionId}`)\n    \n    if (!exists) {\n      await redis.setex(`session:${sessionId}`, 1800, '1')\n      await kafka.send({\n        topic: 'pageviews',\n        messages: [{\n          key: sessionId,\n          value: JSON.stringify({\n            page: body.url,\n            referrer: new URL(body.referrer).hostname,\n            timestamp: Date.now()\n          })\n        }]\n      })\n    }\n    \n    return new Response('OK', {status: 202})\n  }\n}\n","javascript","language-javascript shiki shiki-themes github-dark",[956],{"type":32,"tag":98,"props":957,"children":958},{"__ignoreMap":16},[959,996,1023,1031,1038,1070,1103,1111,1138,1175,1220,1246,1255,1264,1319,1327,1351,1407,1430,1448,1457,1466,1494,1503,1526,1544,1553,1562,1571,1580,1588,1629,1638],{"type":32,"tag":217,"props":960,"children":961},{"class":219,"line":220},[962,967,971,976,980,986,991],{"type":32,"tag":217,"props":963,"children":964},{"style":245},[965],{"type":37,"value":966},"addEventListener",{"type":32,"tag":217,"props":968,"children":969},{"style":251},[970],{"type":37,"value":644},{"type":32,"tag":217,"props":972,"children":973},{"style":429},[974],{"type":37,"value":975},"'fetch'",{"type":32,"tag":217,"props":977,"children":978},{"style":251},[979],{"type":37,"value":437},{"type":32,"tag":217,"props":981,"children":983},{"style":982},"--shiki-default:#FFAB70",[984],{"type":37,"value":985},"event",{"type":32,"tag":217,"props":987,"children":988},{"style":234},[989],{"type":37,"value":990}," =>",{"type":32,"tag":217,"props":992,"children":993},{"style":251},[994],{"type":37,"value":995}," {\n",{"type":32,"tag":217,"props":997,"children":998},{"class":219,"line":230},[999,1004,1009,1013,1018],{"type":32,"tag":217,"props":1000,"children":1001},{"style":251},[1002],{"type":37,"value":1003},"  event.",{"type":32,"tag":217,"props":1005,"children":1006},{"style":245},[1007],{"type":37,"value":1008},"respondWith",{"type":32,"tag":217,"props":1010,"children":1011},{"style":251},[1012],{"type":37,"value":644},{"type":32,"tag":217,"props":1014,"children":1015},{"style":245},[1016],{"type":37,"value":1017},"handleRequest",{"type":32,"tag":217,"props":1019,"children":1020},{"style":251},[1021],{"type":37,"value":1022},"(event.request))\n",{"type":32,"tag":217,"props":1024,"children":1025},{"class":219,"line":257},[1026],{"type":32,"tag":217,"props":1027,"children":1028},{"style":251},[1029],{"type":37,"value":1030},"})\n",{"type":32,"tag":217,"props":1032,"children":1033},{"class":219,"line":281},[1034],{"type":32,"tag":217,"props":1035,"children":1036},{"emptyLinePlaceholder":409},[1037],{"type":37,"value":412},{"type":32,"tag":217,"props":1039,"children":1040},{"class":219,"line":303},[1041,1046,1051,1056,1060,1065],{"type":32,"tag":217,"props":1042,"children":1043},{"style":234},[1044],{"type":37,"value":1045},"async",{"type":32,"tag":217,"props":1047,"children":1048},{"style":234},[1049],{"type":37,"value":1050}," function",{"type":32,"tag":217,"props":1052,"children":1053},{"style":245},[1054],{"type":37,"value":1055}," handleRequest",{"type":32,"tag":217,"props":1057,"children":1058},{"style":251},[1059],{"type":37,"value":644},{"type":32,"tag":217,"props":1061,"children":1062},{"style":982},[1063],{"type":37,"value":1064},"request",{"type":32,"tag":217,"props":1066,"children":1067},{"style":251},[1068],{"type":37,"value":1069},") {\n",{"type":32,"tag":217,"props":1071,"children":1072},{"class":219,"line":320},[1073,1078,1083,1088,1093,1098],{"type":32,"tag":217,"props":1074,"children":1075},{"style":234},[1076],{"type":37,"value":1077},"  const",{"type":32,"tag":217,"props":1079,"children":1080},{"style":339},[1081],{"type":37,"value":1082}," url",{"type":32,"tag":217,"props":1084,"children":1085},{"style":234},[1086],{"type":37,"value":1087}," =",{"type":32,"tag":217,"props":1089,"children":1090},{"style":234},[1091],{"type":37,"value":1092}," new",{"type":32,"tag":217,"props":1094,"children":1095},{"style":245},[1096],{"type":37,"value":1097}," URL",{"type":32,"tag":217,"props":1099,"children":1100},{"style":251},[1101],{"type":37,"value":1102},"(request.url)\n",{"type":32,"tag":217,"props":1104,"children":1105},{"class":219,"line":349},[1106],{"type":32,"tag":217,"props":1107,"children":1108},{"style":251},[1109],{"type":37,"value":1110},"  \n",{"type":32,"tag":217,"props":1112,"children":1113},{"class":219,"line":375},[1114,1119,1124,1129,1134],{"type":32,"tag":217,"props":1115,"children":1116},{"style":234},[1117],{"type":37,"value":1118},"  if",{"type":32,"tag":217,"props":1120,"children":1121},{"style":251},[1122],{"type":37,"value":1123}," (url.pathname ",{"type":32,"tag":217,"props":1125,"children":1126},{"style":234},[1127],{"type":37,"value":1128},"===",{"type":32,"tag":217,"props":1130,"children":1131},{"style":429},[1132],{"type":37,"value":1133}," '\u002Fapi\u002Fevent'",{"type":32,"tag":217,"props":1135,"children":1136},{"style":251},[1137],{"type":37,"value":1069},{"type":32,"tag":217,"props":1139,"children":1140},{"class":219,"line":26},[1141,1146,1151,1155,1160,1165,1170],{"type":32,"tag":217,"props":1142,"children":1143},{"style":234},[1144],{"type":37,"value":1145},"    const",{"type":32,"tag":217,"props":1147,"children":1148},{"style":339},[1149],{"type":37,"value":1150}," body",{"type":32,"tag":217,"props":1152,"children":1153},{"style":234},[1154],{"type":37,"value":1087},{"type":32,"tag":217,"props":1156,"children":1157},{"style":234},[1158],{"type":37,"value":1159}," await",{"type":32,"tag":217,"props":1161,"children":1162},{"style":251},[1163],{"type":37,"value":1164}," request.",{"type":32,"tag":217,"props":1166,"children":1167},{"style":245},[1168],{"type":37,"value":1169},"json",{"type":32,"tag":217,"props":1171,"children":1172},{"style":251},[1173],{"type":37,"value":1174},"()\n",{"type":32,"tag":217,"props":1176,"children":1177},{"class":219,"line":405},[1178,1182,1187,1191,1196,1201,1206,1210,1215],{"type":32,"tag":217,"props":1179,"children":1180},{"style":234},[1181],{"type":37,"value":1145},{"type":32,"tag":217,"props":1183,"children":1184},{"style":339},[1185],{"type":37,"value":1186}," sessionId",{"type":32,"tag":217,"props":1188,"children":1189},{"style":234},[1190],{"type":37,"value":1087},{"type":32,"tag":217,"props":1192,"children":1193},{"style":245},[1194],{"type":37,"value":1195}," hashSession",{"type":32,"tag":217,"props":1197,"children":1198},{"style":251},[1199],{"type":37,"value":1200},"(request.headers.",{"type":32,"tag":217,"props":1202,"children":1203},{"style":245},[1204],{"type":37,"value":1205},"get",{"type":32,"tag":217,"props":1207,"children":1208},{"style":251},[1209],{"type":37,"value":644},{"type":32,"tag":217,"props":1211,"children":1212},{"style":429},[1213],{"type":37,"value":1214},"'CF-Connecting-IP'",{"type":32,"tag":217,"props":1216,"children":1217},{"style":251},[1218],{"type":37,"value":1219},"), \n",{"type":32,"tag":217,"props":1221,"children":1222},{"class":219,"line":415},[1223,1228,1232,1236,1241],{"type":32,"tag":217,"props":1224,"children":1225},{"style":251},[1226],{"type":37,"value":1227},"                                    request.headers.",{"type":32,"tag":217,"props":1229,"children":1230},{"style":245},[1231],{"type":37,"value":1205},{"type":32,"tag":217,"props":1233,"children":1234},{"style":251},[1235],{"type":37,"value":644},{"type":32,"tag":217,"props":1237,"children":1238},{"style":429},[1239],{"type":37,"value":1240},"'User-Agent'",{"type":32,"tag":217,"props":1242,"children":1243},{"style":251},[1244],{"type":37,"value":1245},"))\n",{"type":32,"tag":217,"props":1247,"children":1249},{"class":219,"line":1248},12,[1250],{"type":32,"tag":217,"props":1251,"children":1252},{"style":251},[1253],{"type":37,"value":1254},"    \n",{"type":32,"tag":217,"props":1256,"children":1258},{"class":219,"line":1257},13,[1259],{"type":32,"tag":217,"props":1260,"children":1261},{"style":224},[1262],{"type":37,"value":1263},"    \u002F\u002F Contrôle session Redis\n",{"type":32,"tag":217,"props":1265,"children":1267},{"class":219,"line":1266},14,[1268,1272,1277,1281,1285,1290,1295,1299,1304,1309,1314],{"type":32,"tag":217,"props":1269,"children":1270},{"style":234},[1271],{"type":37,"value":1145},{"type":32,"tag":217,"props":1273,"children":1274},{"style":339},[1275],{"type":37,"value":1276}," exists",{"type":32,"tag":217,"props":1278,"children":1279},{"style":234},[1280],{"type":37,"value":1087},{"type":32,"tag":217,"props":1282,"children":1283},{"style":234},[1284],{"type":37,"value":1159},{"type":32,"tag":217,"props":1286,"children":1287},{"style":251},[1288],{"type":37,"value":1289}," redis.",{"type":32,"tag":217,"props":1291,"children":1292},{"style":245},[1293],{"type":37,"value":1294},"exists",{"type":32,"tag":217,"props":1296,"children":1297},{"style":251},[1298],{"type":37,"value":644},{"type":32,"tag":217,"props":1300,"children":1301},{"style":429},[1302],{"type":37,"value":1303},"`session:${",{"type":32,"tag":217,"props":1305,"children":1306},{"style":251},[1307],{"type":37,"value":1308},"sessionId",{"type":32,"tag":217,"props":1310,"children":1311},{"style":429},[1312],{"type":37,"value":1313},"}`",{"type":32,"tag":217,"props":1315,"children":1316},{"style":251},[1317],{"type":37,"value":1318},")\n",{"type":32,"tag":217,"props":1320,"children":1322},{"class":219,"line":1321},15,[1323],{"type":32,"tag":217,"props":1324,"children":1325},{"style":251},[1326],{"type":37,"value":1254},{"type":32,"tag":217,"props":1328,"children":1330},{"class":219,"line":1329},16,[1331,1336,1341,1346],{"type":32,"tag":217,"props":1332,"children":1333},{"style":234},[1334],{"type":37,"value":1335},"    if",{"type":32,"tag":217,"props":1337,"children":1338},{"style":251},[1339],{"type":37,"value":1340}," (",{"type":32,"tag":217,"props":1342,"children":1343},{"style":234},[1344],{"type":37,"value":1345},"!",{"type":32,"tag":217,"props":1347,"children":1348},{"style":251},[1349],{"type":37,"value":1350},"exists) {\n",{"type":32,"tag":217,"props":1352,"children":1354},{"class":219,"line":1353},17,[1355,1360,1364,1369,1373,1377,1381,1385,1389,1394,1398,1403],{"type":32,"tag":217,"props":1356,"children":1357},{"style":234},[1358],{"type":37,"value":1359},"      await",{"type":32,"tag":217,"props":1361,"children":1362},{"style":251},[1363],{"type":37,"value":1289},{"type":32,"tag":217,"props":1365,"children":1366},{"style":245},[1367],{"type":37,"value":1368},"setex",{"type":32,"tag":217,"props":1370,"children":1371},{"style":251},[1372],{"type":37,"value":644},{"type":32,"tag":217,"props":1374,"children":1375},{"style":429},[1376],{"type":37,"value":1303},{"type":32,"tag":217,"props":1378,"children":1379},{"style":251},[1380],{"type":37,"value":1308},{"type":32,"tag":217,"props":1382,"children":1383},{"style":429},[1384],{"type":37,"value":1313},{"type":32,"tag":217,"props":1386,"children":1387},{"style":251},[1388],{"type":37,"value":437},{"type":32,"tag":217,"props":1390,"children":1391},{"style":339},[1392],{"type":37,"value":1393},"1800",{"type":32,"tag":217,"props":1395,"children":1396},{"style":251},[1397],{"type":37,"value":437},{"type":32,"tag":217,"props":1399,"children":1400},{"style":429},[1401],{"type":37,"value":1402},"'1'",{"type":32,"tag":217,"props":1404,"children":1405},{"style":251},[1406],{"type":37,"value":1318},{"type":32,"tag":217,"props":1408,"children":1410},{"class":219,"line":1409},18,[1411,1415,1420,1425],{"type":32,"tag":217,"props":1412,"children":1413},{"style":234},[1414],{"type":37,"value":1359},{"type":32,"tag":217,"props":1416,"children":1417},{"style":251},[1418],{"type":37,"value":1419}," kafka.",{"type":32,"tag":217,"props":1421,"children":1422},{"style":245},[1423],{"type":37,"value":1424},"send",{"type":32,"tag":217,"props":1426,"children":1427},{"style":251},[1428],{"type":37,"value":1429},"({\n",{"type":32,"tag":217,"props":1431,"children":1433},{"class":219,"line":1432},19,[1434,1439,1444],{"type":32,"tag":217,"props":1435,"children":1436},{"style":251},[1437],{"type":37,"value":1438},"        topic: ",{"type":32,"tag":217,"props":1440,"children":1441},{"style":429},[1442],{"type":37,"value":1443},"'pageviews'",{"type":32,"tag":217,"props":1445,"children":1446},{"style":251},[1447],{"type":37,"value":278},{"type":32,"tag":217,"props":1449,"children":1451},{"class":219,"line":1450},20,[1452],{"type":32,"tag":217,"props":1453,"children":1454},{"style":251},[1455],{"type":37,"value":1456},"        messages: [{\n",{"type":32,"tag":217,"props":1458,"children":1460},{"class":219,"line":1459},21,[1461],{"type":32,"tag":217,"props":1462,"children":1463},{"style":251},[1464],{"type":37,"value":1465},"          key: sessionId,\n",{"type":32,"tag":217,"props":1467,"children":1469},{"class":219,"line":1468},22,[1470,1475,1480,1485,1490],{"type":32,"tag":217,"props":1471,"children":1472},{"style":251},[1473],{"type":37,"value":1474},"          value: ",{"type":32,"tag":217,"props":1476,"children":1477},{"style":339},[1478],{"type":37,"value":1479},"JSON",{"type":32,"tag":217,"props":1481,"children":1482},{"style":251},[1483],{"type":37,"value":1484},".",{"type":32,"tag":217,"props":1486,"children":1487},{"style":245},[1488],{"type":37,"value":1489},"stringify",{"type":32,"tag":217,"props":1491,"children":1492},{"style":251},[1493],{"type":37,"value":1429},{"type":32,"tag":217,"props":1495,"children":1497},{"class":219,"line":1496},23,[1498],{"type":32,"tag":217,"props":1499,"children":1500},{"style":251},[1501],{"type":37,"value":1502},"            page: body.url,\n",{"type":32,"tag":217,"props":1504,"children":1506},{"class":219,"line":1505},24,[1507,1512,1517,1521],{"type":32,"tag":217,"props":1508,"children":1509},{"style":251},[1510],{"type":37,"value":1511},"            referrer: ",{"type":32,"tag":217,"props":1513,"children":1514},{"style":234},[1515],{"type":37,"value":1516},"new",{"type":32,"tag":217,"props":1518,"children":1519},{"style":245},[1520],{"type":37,"value":1097},{"type":32,"tag":217,"props":1522,"children":1523},{"style":251},[1524],{"type":37,"value":1525},"(body.referrer).hostname,\n",{"type":32,"tag":217,"props":1527,"children":1529},{"class":219,"line":1528},25,[1530,1535,1540],{"type":32,"tag":217,"props":1531,"children":1532},{"style":251},[1533],{"type":37,"value":1534},"            timestamp: Date.",{"type":32,"tag":217,"props":1536,"children":1537},{"style":245},[1538],{"type":37,"value":1539},"now",{"type":32,"tag":217,"props":1541,"children":1542},{"style":251},[1543],{"type":37,"value":1174},{"type":32,"tag":217,"props":1545,"children":1547},{"class":219,"line":1546},26,[1548],{"type":32,"tag":217,"props":1549,"children":1550},{"style":251},[1551],{"type":37,"value":1552},"          })\n",{"type":32,"tag":217,"props":1554,"children":1556},{"class":219,"line":1555},27,[1557],{"type":32,"tag":217,"props":1558,"children":1559},{"style":251},[1560],{"type":37,"value":1561},"        }]\n",{"type":32,"tag":217,"props":1563,"children":1565},{"class":219,"line":1564},28,[1566],{"type":32,"tag":217,"props":1567,"children":1568},{"style":251},[1569],{"type":37,"value":1570},"      })\n",{"type":32,"tag":217,"props":1572,"children":1574},{"class":219,"line":1573},29,[1575],{"type":32,"tag":217,"props":1576,"children":1577},{"style":251},[1578],{"type":37,"value":1579},"    }\n",{"type":32,"tag":217,"props":1581,"children":1583},{"class":219,"line":1582},30,[1584],{"type":32,"tag":217,"props":1585,"children":1586},{"style":251},[1587],{"type":37,"value":1254},{"type":32,"tag":217,"props":1589,"children":1591},{"class":219,"line":1590},31,[1592,1597,1601,1606,1610,1615,1620,1625],{"type":32,"tag":217,"props":1593,"children":1594},{"style":234},[1595],{"type":37,"value":1596},"    return",{"type":32,"tag":217,"props":1598,"children":1599},{"style":234},[1600],{"type":37,"value":1092},{"type":32,"tag":217,"props":1602,"children":1603},{"style":245},[1604],{"type":37,"value":1605}," Response",{"type":32,"tag":217,"props":1607,"children":1608},{"style":251},[1609],{"type":37,"value":644},{"type":32,"tag":217,"props":1611,"children":1612},{"style":429},[1613],{"type":37,"value":1614},"'OK'",{"type":32,"tag":217,"props":1616,"children":1617},{"style":251},[1618],{"type":37,"value":1619},", {status: ",{"type":32,"tag":217,"props":1621,"children":1622},{"style":339},[1623],{"type":37,"value":1624},"202",{"type":32,"tag":217,"props":1626,"children":1627},{"style":251},[1628],{"type":37,"value":1030},{"type":32,"tag":217,"props":1630,"children":1632},{"class":219,"line":1631},32,[1633],{"type":32,"tag":217,"props":1634,"children":1635},{"style":251},[1636],{"type":37,"value":1637},"  }\n",{"type":32,"tag":217,"props":1639,"children":1641},{"class":219,"line":1640},33,[1642],{"type":32,"tag":217,"props":1643,"children":1644},{"style":251},[1645],{"type":37,"value":1646},"}\n",{"type":32,"tag":33,"props":1648,"children":1649},{},[1650],{"type":32,"tag":80,"props":1651,"children":1652},{},[1653],{"type":37,"value":1654},"Couche données :",{"type":32,"tag":72,"props":1656,"children":1657},{},[1658,1663,1668],{"type":32,"tag":76,"props":1659,"children":1660},{},[1661],{"type":37,"value":1662},"Consumer Kafka → TimescaleDB (batch insert toutes les 10s)",{"type":32,"tag":76,"props":1664,"children":1665},{},[1666],{"type":37,"value":1667},"Dashboard Grafana depuis TimescaleDB (real-time, refresh 2s)",{"type":32,"tag":76,"props":1669,"children":1670},{},[1671],{"type":37,"value":1672},"Export BigQuery quotidien agrégé (dbt join : trafic Plausible + données commande Shopify)",{"type":32,"tag":33,"props":1674,"children":1675},{},[1676],{"type":37,"value":1677},"Résultats : Attribution conversion 92 % de précision (vs 58 % avec GA4 — rejet ITP et cookies). Conformité RGPD 100 % — aucune PII. Temps requête dashboard 40ms (vs 4-6s GA4).",{"type":32,"tag":48,"props":1679,"children":1681},{"id":1680},"plausible-vs-ga4-quand-utiliser-lequel",[1682],{"type":37,"value":1683},"Plausible vs GA4 : Quand utiliser lequel",{"type":32,"tag":33,"props":1685,"children":1686},{},[1687],{"type":37,"value":1688},"Faut-il abandonner GA4 ? Non. Deux scénarios restent pertinents :",{"type":32,"tag":33,"props":1690,"children":1691},{},[1692],{"type":32,"tag":80,"props":1693,"children":1694},{},[1695],{"type":37,"value":1696},"Utilise GA4 :",{"type":32,"tag":72,"props":1698,"children":1699},{},[1700,1705,1710],{"type":32,"tag":76,"props":1701,"children":1702},{},[1703],{"type":37,"value":1704},"Suivi multi-domaine (plusieurs sites, sous-domaines — mécanisme linker GA4 plus mature)",{"type":32,"tag":76,"props":1706,"children":1707},{},[1708],{"type":37,"value":1709},"Insights machine learning (métriques prédictives GA4 : probabilité achat, churn)",{"type":32,"tag":76,"props":1711,"children":1712},{},[1713],{"type":37,"value":1714},"Intégration Google Ads (conversions renforcées, audiences remarketing — GA4 natif)",{"type":32,"tag":33,"props":1716,"children":1717},{},[1718],{"type":32,"tag":80,"props":1719,"children":1720},{},[1721],{"type":37,"value":1722},"Utilise Plausible :",{"type":32,"tag":72,"props":1724,"children":1725},{},[1726,1731,1736],{"type":32,"tag":76,"props":1727,"children":1728},{},[1729],{"type":37,"value":1730},"Dashboard public (embed Plausible = partage gratuit — GA4 nécessite compte viewer)",{"type":32,"tag":76,"props":1732,"children":1733},{},[1734],{"type":37,"value":1735},"Sites légers (blog, landing page, site marketing SaaS)",{"type":32,"tag":76,"props":1737,"children":1738},{},[1739],{"type":37,"value":1740},"Conformité stricte (RGPD, KVKK — zéro risque Plausible)",{"type":32,"tag":33,"props":1742,"children":1743},{},[1744],{"type":37,"value":1745},"Le setup hybride est le plus courant : Plausible mesure le trafic site entier, GA4 se déclenche uniquement sur le funnel conversion critique via GTM côté serveur. Privacy + performance.",{"type":32,"tag":33,"props":1747,"children":1748},{},[1749,1751,1755],{"type":37,"value":1750},"L'",{"type":32,"tag":40,"props":1752,"children":1753},{},[1754],{"type":37,"value":44},{"type":37,"value":1756}," n'est plus un « bonus », c'est du « must-have ». Chrome a supprimé les cookies, les amendes RGPD ont explosé en 2025. Plausible + agrégation côté serveur est l'unique stack production-ready qui répond aux deux défis. Si tu gères encore 60 % de data loss GA4, planifie ta migration — 2026 exigera un analytics sans cookies.",{"type":32,"tag":1758,"props":1759,"children":1760},"style",{},[1761],{"type":37,"value":1762},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":257,"depth":257,"links":1764},[1765,1766,1767,1768,1769],{"id":50,"depth":230,"text":53},{"id":159,"depth":230,"text":162},{"id":536,"depth":230,"text":539},{"id":904,"depth":230,"text":907},{"id":1680,"depth":230,"text":1683},"markdown","content:fr:data:analytique-respectueuse-donnees-confidentielles.md","content","fr\u002Fdata\u002Fanalytique-respectueuse-donnees-confidentielles.md","fr\u002Fdata\u002Fanalytique-respectueuse-donnees-confidentielles","md",1779314639788]