[{"data":1,"prerenderedAt":1229},["ShallowReactive",2],{"article-alternates":3,"article-\u002Ffr\u002Fmarketing\u002Fconsent-mode-v2-et-tcf-2-2-gerer-la-perte-de-modelisation":13},{"i18nKey":4,"paths":5},"marketing-006-2026-06",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fmarketing\u002Fconsent-mode-v2-und-tcf-22-modeling-loss-management","\u002Fen\u002Fmarketing\u002Fconsent-mode-v2-tcf-modeling-loss","\u002Fes\u002Fmarketing\u002Fconsentmode-v2-tcf-22-modeling-loss","\u002Ffr\u002Fmarketing\u002Fconsent-mode-v2-et-tcf-2-2-gerer-la-perte-de-modelisation","\u002Fit\u002Fmarketing\u002Fconsent-mode-v2-tcf-2-2-modeling-loss","\u002Fru\u002Fmarketing\u002Fconsent-mode-v2-tcf-22-modeling-loss","\u002Ftr\u002Fmarketing\u002Fconsent-mode-v2-ve-tcf-2-2-modeling-lossu-nasil-yonetiriz",{"_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":1223,"_id":1224,"_source":1225,"_file":1226,"_stem":1227,"_extension":1228},"marketing",false,"","Consent Mode v2 et TCF 2.2 : Comment Gérer la Perte de Modélisation","Méthode d'ingénierie pour renforcer la fiabilité des conversions modélisées dans une architecture de consentement conforme au RGPD — réduction du risque légal sans perte de signal.","2026-06-09",[21,22,23,24,25],"consent-mode","tcf-2-2","rgpd","conversion-modeling","signal-loss",9,"Roibase",{"type":29,"children":30,"toc":1212},"root",[31,39,46,84,89,94,100,119,124,132,152,160,194,210,217,230,562,567,592,598,616,621,887,900,905,911,931,936,944,949,960,979,984,990,1002,1010,1043,1048,1053,1071,1076,1082,1087,1092,1100,1105,1123,1157,1163,1175,1193,1198,1206],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Google Consent Mode v2 et l'obligation IAB TCF 2.2 confrontent chaque plateforme transportant du trafic européen à un même défi : quand le consentement est refusé, les cookies sont supprimés, les tags sont désactivés, les signaux de conversion disparaissent et se transforment en conversion modélisée. Tu dois simultanément réduire le risque légal et préserver la précision d'attribution. Gérer ce compromis exige une architecture de consentement construite avec discipline d'ingénierie — car si la perte de modélisation s'échappe du contrôle quand le refus de consentement atteint 30-50%, l'algorithme d'enchères devient aveugle, le CAC explose, le ROAS s'effondre.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"quest-ce-que-consent-mode-v2-et-pourquoi-cest-critique-maintenant",[44],{"type":37,"value":45},"Qu'est-ce que Consent Mode v2 et Pourquoi C'est Critique Maintenant",{"type":32,"tag":33,"props":47,"children":48},{},[49,51,58,60,66,68,74,76,82],{"type":37,"value":50},"Google Consent Mode v2 est devenu obligatoire en mars 2024 (trafic EEA). La différence fondamentale : ",{"type":32,"tag":52,"props":53,"children":55},"code",{"className":54},[],[56],{"type":37,"value":57},"ad_storage",{"type":37,"value":59}," et ",{"type":32,"tag":52,"props":61,"children":63},{"className":62},[],[64],{"type":37,"value":65},"analytics_storage",{"type":37,"value":67}," commencent maintenant par défaut à ",{"type":32,"tag":52,"props":69,"children":71},{"className":70},[],[72],{"type":37,"value":73},"denied",{"type":37,"value":75},", et aucun cookie ne peut être écrit tant que l'utilisateur n'a pas consenti. Les tags s'exécutent quand même mais envoient des pings agrégés au lieu d'identifiants au niveau des pixels. Dans ce modèle, Google Ads et GA4 tentent de combler les conversions manquantes via ",{"type":32,"tag":77,"props":78,"children":79},"em",{},[80],{"type":37,"value":81},"modélisation basée sur le machine learning",{"type":37,"value":83}," — c'est-à-dire qu'ils ne voient pas la conversion réelle, ils font une estimation statistique basée sur des segments d'utilisateurs similaires.",{"type":32,"tag":33,"props":85,"children":86},{},[87],{"type":37,"value":88},"Le TCF 2.2 (Transparency & Consent Framework) de l'IAB rend le consentement plus granulaire. Même sur la base d'un \"intérêt légitime\", tu ne peux plus écrire de cookies — l'utilisateur doit donner son accord explicite. Cela a fait chuter les taux de consentement de 70-80% dans les anciennes CMP avec des UX douteuses (cases pré-cochées) à 30-40% maintenant.",{"type":32,"tag":33,"props":90,"children":91},{},[92],{"type":37,"value":93},"C'est là que la perte de modélisation entre en jeu : si 50% des utilisateurs refusent le consentement et que tu ne vois pas leurs conversions, la stratégie d'enchères tCPA\u002FtROAS de Google Ads s'optimise sur un signal faux. Les conversions modélisées ont des intervalles de confiance larges et sont retardées — ce qui amplifie les erreurs d'allocation budgétaire et affaiblit la solidité statistique des tests créatifs.",{"type":32,"tag":40,"props":95,"children":97},{"id":96},"le-compromis-signal-loss-vs-modeled-conversion-accuracy",[98],{"type":37,"value":99},"Le Compromis Signal Loss vs. Modeled Conversion Accuracy",{"type":32,"tag":33,"props":101,"children":102},{},[103,105,111,112,117],{"type":37,"value":104},"Dans Consent Mode v2, tu as deux scénarios : ",{"type":32,"tag":106,"props":107,"children":108},"strong",{},[109],{"type":37,"value":110},"mode basique",{"type":37,"value":59},{"type":32,"tag":106,"props":113,"children":114},{},[115],{"type":37,"value":116},"mode avancé",{"type":37,"value":118},". En mode basique, le tag reste complètement silencieux jusqu'au consentement (zéro signal). En mode avancé, le tag envoie des pings agrégés mais sans identifiant. Le second scénario permet la modélisation mais sans garantie de précision.",{"type":32,"tag":33,"props":120,"children":121},{},[122],{"type":37,"value":123},"Selon la documentation de Google, la précision de la conversion modélisée en mode avancé se situe entre 70-90% — mais ce pourcentage est corrélé au taux de consentement. Si le taux de consentement tombe en dessous de 20%, la modélisation devient complètement peu fiable parce que les données d'entraînement sont insuffisantes. Tu dois alors déployer deux stratégies fondamentales :",{"type":32,"tag":33,"props":125,"children":126},{},[127],{"type":32,"tag":106,"props":128,"children":129},{},[130],{"type":37,"value":131},"1. Augmenter le taux de consentement (signal recovery) :",{"type":32,"tag":133,"props":134,"children":135},"ul",{},[136,142,147],{"type":32,"tag":137,"props":138,"children":139},"li",{},[140],{"type":37,"value":141},"Teste l'UX de ta CMP avec A\u002FB testing — remplacer le bouton \"rejeter tout\" par des toggles granulaires augmente le taux de consentement de 8-12%.",{"type":32,"tag":137,"props":143,"children":144},{},[145],{"type":37,"value":146},"Approche de \"consentement progressif\" : demande les cookies essentiels au premier accès, le consentement à la publicité au moment du checkout.",{"type":32,"tag":137,"props":148,"children":149},{},[150],{"type":37,"value":151},"Incitation au consentement : au lieu d'un message générique \"acceptez les cookies pour améliorer votre expérience\", propose quelque chose de concret : \"soyez les premiers à accéder aux codes promotionnels exclusifs\".",{"type":32,"tag":33,"props":153,"children":154},{},[155],{"type":32,"tag":106,"props":156,"children":157},{},[158],{"type":37,"value":159},"2. Enrichissement des signaux côté serveur :",{"type":32,"tag":133,"props":161,"children":162},{},[163,184,189],{"type":32,"tag":137,"props":164,"children":165},{},[166,168,174,176,182],{"type":37,"value":167},"Même sans consentement, tu peux conserver un first-party cookie côté serveur (par ex. ",{"type":32,"tag":52,"props":169,"children":171},{"className":170},[],[172],{"type":37,"value":173},"_fbc",{"type":37,"value":175},", ",{"type":32,"tag":52,"props":177,"children":179},{"className":178},[],[180],{"type":37,"value":181},"_fbp",{"type":37,"value":183},") — c'est conforme au RGPD car ce n'est pas du suivi client-side, c'est de la gestion de session côté serveur.",{"type":32,"tag":137,"props":185,"children":186},{},[187],{"type":37,"value":188},"Utilise Google Ads Enhanced Conversions et Meta CAPI pour envoyer l'email ou le téléphone hashés — c'est indépendant du consentement car le hash PII se fait côté serveur.",{"type":32,"tag":137,"props":190,"children":191},{},[192],{"type":37,"value":193},"Cette approche fournit un point de référence supplémentaire à la modélisation, augmentant la précision de 10-15%.",{"type":32,"tag":33,"props":195,"children":196},{},[197,199,208],{"type":37,"value":198},"Dans ta pile de ",{"type":32,"tag":200,"props":201,"children":205},"a",{"href":202,"rel":203},"https:\u002F\u002Fwww.roibase.com.tr\u002Ffr\u002Fppc",[204],"nofollow",[206],{"type":37,"value":207},"Performance Marketing",{"type":37,"value":209},", tu dois exécuter ces deux stratégies en parallèle — sinon l'algorithme d'enchères hallucine.",{"type":32,"tag":211,"props":212,"children":214},"h3",{"id":213},"architecture-first-party-cookie-intégration-de-la-gcs-consent-state-api",[215],{"type":37,"value":216},"Architecture First-Party Cookie : Intégration de la GCS Consent State API",{"type":32,"tag":33,"props":218,"children":219},{},[220,222,228],{"type":37,"value":221},"La Google Consent State API (GCS) permet de gérer les drapeaux de consentement côté serveur plutôt que côté client. La logique : quand l'utilisateur accepte, au lieu d'appeler ",{"type":32,"tag":52,"props":223,"children":225},{"className":224},[],[226],{"type":37,"value":227},"gtag('consent', 'update', {...})",{"type":37,"value":229},", tu envoies une requête POST au serveur, le serveur stocke l'état du consentement dans la session, et le conteneur serveur GTM lit cet état lors des requêtes ultérieures pour l'injecter dans les tags.",{"type":32,"tag":231,"props":232,"children":236},"pre",{"code":233,"language":234,"meta":16,"className":235,"style":16},"\u002F\u002F Client-side (CMP callback)\nfetch('\u002Fapi\u002Fconsent', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application\u002Fjson' },\n  body: JSON.stringify({\n    ad_storage: 'granted',\n    analytics_storage: 'granted',\n    tcf_string: 'CPXxyz...'\n  })\n});\n\n\u002F\u002F Conteneur serveur GTM (Variable)\nfunction() {\n  const consentState = getRequestHeader('X-Consent-State');\n  return consentState ? JSON.parse(consentState) : { ad_storage: 'denied' };\n}\n","javascript","language-javascript shiki shiki-themes github-dark",[237],{"type":32,"tag":52,"props":238,"children":239},{"__ignoreMap":16},[240,252,279,298,327,357,375,392,406,414,423,433,442,457,495,553],{"type":32,"tag":241,"props":242,"children":245},"span",{"class":243,"line":244},"line",1,[246],{"type":32,"tag":241,"props":247,"children":249},{"style":248},"--shiki-default:#6A737D",[250],{"type":37,"value":251},"\u002F\u002F Client-side (CMP callback)\n",{"type":32,"tag":241,"props":253,"children":255},{"class":243,"line":254},2,[256,262,268,274],{"type":32,"tag":241,"props":257,"children":259},{"style":258},"--shiki-default:#B392F0",[260],{"type":37,"value":261},"fetch",{"type":32,"tag":241,"props":263,"children":265},{"style":264},"--shiki-default:#E1E4E8",[266],{"type":37,"value":267},"(",{"type":32,"tag":241,"props":269,"children":271},{"style":270},"--shiki-default:#9ECBFF",[272],{"type":37,"value":273},"'\u002Fapi\u002Fconsent'",{"type":32,"tag":241,"props":275,"children":276},{"style":264},[277],{"type":37,"value":278},", {\n",{"type":32,"tag":241,"props":280,"children":282},{"class":243,"line":281},3,[283,288,293],{"type":32,"tag":241,"props":284,"children":285},{"style":264},[286],{"type":37,"value":287},"  method: ",{"type":32,"tag":241,"props":289,"children":290},{"style":270},[291],{"type":37,"value":292},"'POST'",{"type":32,"tag":241,"props":294,"children":295},{"style":264},[296],{"type":37,"value":297},",\n",{"type":32,"tag":241,"props":299,"children":301},{"class":243,"line":300},4,[302,307,312,317,322],{"type":32,"tag":241,"props":303,"children":304},{"style":264},[305],{"type":37,"value":306},"  headers: { ",{"type":32,"tag":241,"props":308,"children":309},{"style":270},[310],{"type":37,"value":311},"'Content-Type'",{"type":32,"tag":241,"props":313,"children":314},{"style":264},[315],{"type":37,"value":316},": ",{"type":32,"tag":241,"props":318,"children":319},{"style":270},[320],{"type":37,"value":321},"'application\u002Fjson'",{"type":32,"tag":241,"props":323,"children":324},{"style":264},[325],{"type":37,"value":326}," },\n",{"type":32,"tag":241,"props":328,"children":330},{"class":243,"line":329},5,[331,336,342,347,352],{"type":32,"tag":241,"props":332,"children":333},{"style":264},[334],{"type":37,"value":335},"  body: ",{"type":32,"tag":241,"props":337,"children":339},{"style":338},"--shiki-default:#79B8FF",[340],{"type":37,"value":341},"JSON",{"type":32,"tag":241,"props":343,"children":344},{"style":264},[345],{"type":37,"value":346},".",{"type":32,"tag":241,"props":348,"children":349},{"style":258},[350],{"type":37,"value":351},"stringify",{"type":32,"tag":241,"props":353,"children":354},{"style":264},[355],{"type":37,"value":356},"({\n",{"type":32,"tag":241,"props":358,"children":360},{"class":243,"line":359},6,[361,366,371],{"type":32,"tag":241,"props":362,"children":363},{"style":264},[364],{"type":37,"value":365},"    ad_storage: ",{"type":32,"tag":241,"props":367,"children":368},{"style":270},[369],{"type":37,"value":370},"'granted'",{"type":32,"tag":241,"props":372,"children":373},{"style":264},[374],{"type":37,"value":297},{"type":32,"tag":241,"props":376,"children":378},{"class":243,"line":377},7,[379,384,388],{"type":32,"tag":241,"props":380,"children":381},{"style":264},[382],{"type":37,"value":383},"    analytics_storage: ",{"type":32,"tag":241,"props":385,"children":386},{"style":270},[387],{"type":37,"value":370},{"type":32,"tag":241,"props":389,"children":390},{"style":264},[391],{"type":37,"value":297},{"type":32,"tag":241,"props":393,"children":395},{"class":243,"line":394},8,[396,401],{"type":32,"tag":241,"props":397,"children":398},{"style":264},[399],{"type":37,"value":400},"    tcf_string: ",{"type":32,"tag":241,"props":402,"children":403},{"style":270},[404],{"type":37,"value":405},"'CPXxyz...'\n",{"type":32,"tag":241,"props":407,"children":408},{"class":243,"line":26},[409],{"type":32,"tag":241,"props":410,"children":411},{"style":264},[412],{"type":37,"value":413},"  })\n",{"type":32,"tag":241,"props":415,"children":417},{"class":243,"line":416},10,[418],{"type":32,"tag":241,"props":419,"children":420},{"style":264},[421],{"type":37,"value":422},"});\n",{"type":32,"tag":241,"props":424,"children":426},{"class":243,"line":425},11,[427],{"type":32,"tag":241,"props":428,"children":430},{"emptyLinePlaceholder":429},true,[431],{"type":37,"value":432},"\n",{"type":32,"tag":241,"props":434,"children":436},{"class":243,"line":435},12,[437],{"type":32,"tag":241,"props":438,"children":439},{"style":248},[440],{"type":37,"value":441},"\u002F\u002F Conteneur serveur GTM (Variable)\n",{"type":32,"tag":241,"props":443,"children":445},{"class":243,"line":444},13,[446,452],{"type":32,"tag":241,"props":447,"children":449},{"style":448},"--shiki-default:#F97583",[450],{"type":37,"value":451},"function",{"type":32,"tag":241,"props":453,"children":454},{"style":264},[455],{"type":37,"value":456},"() {\n",{"type":32,"tag":241,"props":458,"children":460},{"class":243,"line":459},14,[461,466,471,476,481,485,490],{"type":32,"tag":241,"props":462,"children":463},{"style":448},[464],{"type":37,"value":465},"  const",{"type":32,"tag":241,"props":467,"children":468},{"style":338},[469],{"type":37,"value":470}," consentState",{"type":32,"tag":241,"props":472,"children":473},{"style":448},[474],{"type":37,"value":475}," =",{"type":32,"tag":241,"props":477,"children":478},{"style":258},[479],{"type":37,"value":480}," getRequestHeader",{"type":32,"tag":241,"props":482,"children":483},{"style":264},[484],{"type":37,"value":267},{"type":32,"tag":241,"props":486,"children":487},{"style":270},[488],{"type":37,"value":489},"'X-Consent-State'",{"type":32,"tag":241,"props":491,"children":492},{"style":264},[493],{"type":37,"value":494},");\n",{"type":32,"tag":241,"props":496,"children":498},{"class":243,"line":497},15,[499,504,509,514,519,523,528,533,538,543,548],{"type":32,"tag":241,"props":500,"children":501},{"style":448},[502],{"type":37,"value":503},"  return",{"type":32,"tag":241,"props":505,"children":506},{"style":264},[507],{"type":37,"value":508}," consentState ",{"type":32,"tag":241,"props":510,"children":511},{"style":448},[512],{"type":37,"value":513},"?",{"type":32,"tag":241,"props":515,"children":516},{"style":338},[517],{"type":37,"value":518}," JSON",{"type":32,"tag":241,"props":520,"children":521},{"style":264},[522],{"type":37,"value":346},{"type":32,"tag":241,"props":524,"children":525},{"style":258},[526],{"type":37,"value":527},"parse",{"type":32,"tag":241,"props":529,"children":530},{"style":264},[531],{"type":37,"value":532},"(consentState) ",{"type":32,"tag":241,"props":534,"children":535},{"style":448},[536],{"type":37,"value":537},":",{"type":32,"tag":241,"props":539,"children":540},{"style":264},[541],{"type":37,"value":542}," { ad_storage: ",{"type":32,"tag":241,"props":544,"children":545},{"style":270},[546],{"type":37,"value":547},"'denied'",{"type":32,"tag":241,"props":549,"children":550},{"style":264},[551],{"type":37,"value":552}," };\n",{"type":32,"tag":241,"props":554,"children":556},{"class":243,"line":555},16,[557],{"type":32,"tag":241,"props":558,"children":559},{"style":264},[560],{"type":37,"value":561},"}\n",{"type":32,"tag":33,"props":563,"children":564},{},[565],{"type":37,"value":566},"Cette architecture est critique pour la modélisation car :",{"type":32,"tag":133,"props":568,"children":569},{},[570,575,587],{"type":32,"tag":137,"props":571,"children":572},{},[573],{"type":37,"value":574},"Même si le popup de consentement côté client était contourné, tu conserves le bon état au niveau du serveur.",{"type":32,"tag":137,"props":576,"children":577},{},[578,580,586],{"type":37,"value":579},"La chaîne TCF 2.2 offre une granularité au niveau du vendor — si le consentement pour Google Ads (vendor #755) a été accordé, tu le marques comme ",{"type":32,"tag":52,"props":581,"children":583},{"className":582},[],[584],{"type":37,"value":585},"ad_storage: granted",{"type":37,"value":346},{"type":32,"tag":137,"props":588,"children":589},{},[590],{"type":37,"value":591},"En cas de retrait du consentement, tu supprimes les cookies côté serveur (conformité RGPD Article 17).",{"type":32,"tag":40,"props":593,"children":595},{"id":594},"tcf-22-et-mapping-de-consentement-spécifique-au-vendor",[596],{"type":37,"value":597},"TCF 2.2 et Mapping de Consentement Spécifique au Vendor",{"type":32,"tag":33,"props":599,"children":600},{},[601,603,608,610,615],{"type":37,"value":602},"La chaîne TCF 2.2 est un blob encodé en base64 — elle contient des drapeaux de consentement et d'intérêt légitime pour 700+ vendors. Google Consent Mode ne peut pas le lire nativement — tu dois parser manuellement et le mapper à ",{"type":32,"tag":52,"props":604,"children":606},{"className":605},[],[607],{"type":37,"value":57},{"type":37,"value":609},"\u002F",{"type":32,"tag":52,"props":611,"children":613},{"className":612},[],[614],{"type":37,"value":65},{"type":37,"value":346},{"type":32,"tag":33,"props":617,"children":618},{},[619],{"type":37,"value":620},"Exemple de logique de décodage TCF :",{"type":32,"tag":231,"props":622,"children":624},{"code":623,"language":234,"meta":16,"className":235,"style":16},"function parseTcfString(tcfString) {\n  const decoded = atob(tcfString);\n  const vendorConsents = decoded.slice(155, 245); \u002F\u002F Champ de bits de consentement vendor\n  const googleVendorId = 755;\n  const googleConsent = vendorConsents[googleVendorId] === '1';\n  \n  return {\n    ad_storage: googleConsent ? 'granted' : 'denied',\n    analytics_storage: googleConsent ? 'granted' : 'denied'\n  };\n}\n",[625],{"type":32,"tag":52,"props":626,"children":627},{"__ignoreMap":16},[628,655,681,735,761,796,804,816,847,872,880],{"type":32,"tag":241,"props":629,"children":630},{"class":243,"line":244},[631,635,640,644,650],{"type":32,"tag":241,"props":632,"children":633},{"style":448},[634],{"type":37,"value":451},{"type":32,"tag":241,"props":636,"children":637},{"style":258},[638],{"type":37,"value":639}," parseTcfString",{"type":32,"tag":241,"props":641,"children":642},{"style":264},[643],{"type":37,"value":267},{"type":32,"tag":241,"props":645,"children":647},{"style":646},"--shiki-default:#FFAB70",[648],{"type":37,"value":649},"tcfString",{"type":32,"tag":241,"props":651,"children":652},{"style":264},[653],{"type":37,"value":654},") {\n",{"type":32,"tag":241,"props":656,"children":657},{"class":243,"line":254},[658,662,667,671,676],{"type":32,"tag":241,"props":659,"children":660},{"style":448},[661],{"type":37,"value":465},{"type":32,"tag":241,"props":663,"children":664},{"style":338},[665],{"type":37,"value":666}," decoded",{"type":32,"tag":241,"props":668,"children":669},{"style":448},[670],{"type":37,"value":475},{"type":32,"tag":241,"props":672,"children":673},{"style":258},[674],{"type":37,"value":675}," atob",{"type":32,"tag":241,"props":677,"children":678},{"style":264},[679],{"type":37,"value":680},"(tcfString);\n",{"type":32,"tag":241,"props":682,"children":683},{"class":243,"line":281},[684,688,693,697,702,707,711,716,720,725,730],{"type":32,"tag":241,"props":685,"children":686},{"style":448},[687],{"type":37,"value":465},{"type":32,"tag":241,"props":689,"children":690},{"style":338},[691],{"type":37,"value":692}," vendorConsents",{"type":32,"tag":241,"props":694,"children":695},{"style":448},[696],{"type":37,"value":475},{"type":32,"tag":241,"props":698,"children":699},{"style":264},[700],{"type":37,"value":701}," decoded.",{"type":32,"tag":241,"props":703,"children":704},{"style":258},[705],{"type":37,"value":706},"slice",{"type":32,"tag":241,"props":708,"children":709},{"style":264},[710],{"type":37,"value":267},{"type":32,"tag":241,"props":712,"children":713},{"style":338},[714],{"type":37,"value":715},"155",{"type":32,"tag":241,"props":717,"children":718},{"style":264},[719],{"type":37,"value":175},{"type":32,"tag":241,"props":721,"children":722},{"style":338},[723],{"type":37,"value":724},"245",{"type":32,"tag":241,"props":726,"children":727},{"style":264},[728],{"type":37,"value":729},"); ",{"type":32,"tag":241,"props":731,"children":732},{"style":248},[733],{"type":37,"value":734},"\u002F\u002F Champ de bits de consentement vendor\n",{"type":32,"tag":241,"props":736,"children":737},{"class":243,"line":300},[738,742,747,751,756],{"type":32,"tag":241,"props":739,"children":740},{"style":448},[741],{"type":37,"value":465},{"type":32,"tag":241,"props":743,"children":744},{"style":338},[745],{"type":37,"value":746}," googleVendorId",{"type":32,"tag":241,"props":748,"children":749},{"style":448},[750],{"type":37,"value":475},{"type":32,"tag":241,"props":752,"children":753},{"style":338},[754],{"type":37,"value":755}," 755",{"type":32,"tag":241,"props":757,"children":758},{"style":264},[759],{"type":37,"value":760},";\n",{"type":32,"tag":241,"props":762,"children":763},{"class":243,"line":329},[764,768,773,777,782,787,792],{"type":32,"tag":241,"props":765,"children":766},{"style":448},[767],{"type":37,"value":465},{"type":32,"tag":241,"props":769,"children":770},{"style":338},[771],{"type":37,"value":772}," googleConsent",{"type":32,"tag":241,"props":774,"children":775},{"style":448},[776],{"type":37,"value":475},{"type":32,"tag":241,"props":778,"children":779},{"style":264},[780],{"type":37,"value":781}," vendorConsents[googleVendorId] ",{"type":32,"tag":241,"props":783,"children":784},{"style":448},[785],{"type":37,"value":786},"===",{"type":32,"tag":241,"props":788,"children":789},{"style":270},[790],{"type":37,"value":791}," '1'",{"type":32,"tag":241,"props":793,"children":794},{"style":264},[795],{"type":37,"value":760},{"type":32,"tag":241,"props":797,"children":798},{"class":243,"line":359},[799],{"type":32,"tag":241,"props":800,"children":801},{"style":264},[802],{"type":37,"value":803},"  \n",{"type":32,"tag":241,"props":805,"children":806},{"class":243,"line":377},[807,811],{"type":32,"tag":241,"props":808,"children":809},{"style":448},[810],{"type":37,"value":503},{"type":32,"tag":241,"props":812,"children":813},{"style":264},[814],{"type":37,"value":815}," {\n",{"type":32,"tag":241,"props":817,"children":818},{"class":243,"line":394},[819,824,828,833,838,843],{"type":32,"tag":241,"props":820,"children":821},{"style":264},[822],{"type":37,"value":823},"    ad_storage: googleConsent ",{"type":32,"tag":241,"props":825,"children":826},{"style":448},[827],{"type":37,"value":513},{"type":32,"tag":241,"props":829,"children":830},{"style":270},[831],{"type":37,"value":832}," 'granted'",{"type":32,"tag":241,"props":834,"children":835},{"style":448},[836],{"type":37,"value":837}," :",{"type":32,"tag":241,"props":839,"children":840},{"style":270},[841],{"type":37,"value":842}," 'denied'",{"type":32,"tag":241,"props":844,"children":845},{"style":264},[846],{"type":37,"value":297},{"type":32,"tag":241,"props":848,"children":849},{"class":243,"line":26},[850,855,859,863,867],{"type":32,"tag":241,"props":851,"children":852},{"style":264},[853],{"type":37,"value":854},"    analytics_storage: googleConsent ",{"type":32,"tag":241,"props":856,"children":857},{"style":448},[858],{"type":37,"value":513},{"type":32,"tag":241,"props":860,"children":861},{"style":270},[862],{"type":37,"value":832},{"type":32,"tag":241,"props":864,"children":865},{"style":448},[866],{"type":37,"value":837},{"type":32,"tag":241,"props":868,"children":869},{"style":270},[870],{"type":37,"value":871}," 'denied'\n",{"type":32,"tag":241,"props":873,"children":874},{"class":243,"line":416},[875],{"type":32,"tag":241,"props":876,"children":877},{"style":264},[878],{"type":37,"value":879},"  };\n",{"type":32,"tag":241,"props":881,"children":882},{"class":243,"line":425},[883],{"type":32,"tag":241,"props":884,"children":885},{"style":264},[886],{"type":37,"value":561},{"type":32,"tag":33,"props":888,"children":889},{},[890,892,898],{"type":37,"value":891},"Tu dois faire ce mapping côté serveur dans le conteneur GTM serveur, pas en client-side, car le JS côté client peut être manipulé. De plus, le callback ",{"type":32,"tag":52,"props":893,"children":895},{"className":894},[],[896],{"type":37,"value":897},"__tcfapi()",{"type":37,"value":899}," de la CMP est asynchrone — si un tag s'exécute immédiatement, l'état du consentement reste indéfini. Côté serveur, tu lis l'état du consentement depuis l'en-tête, évitant ainsi la race condition.",{"type":32,"tag":33,"props":901,"children":902},{},[903],{"type":37,"value":904},"La liste officielle des vendors de l'IAB (GVL) est mise à jour tous les 6 mois — quand un nouveau vendor est ajouté, tu dois réviser ta logique de mapping. Sinon, les nouvelles plateformes publicitaires (par ex. TikTok Ads vendor #8472) déclenchent des tags sans consentement, ce qui crée une violation du RGPD.",{"type":32,"tag":40,"props":906,"children":908},{"id":907},"comment-mesurer-la-qualité-de-la-modélisation-intervalle-de-confiance-et-test-de-lift",[909],{"type":37,"value":910},"Comment Mesurer la Qualité de la Modélisation : Intervalle de Confiance et Test de Lift",{"type":32,"tag":33,"props":912,"children":913},{},[914,916,922,924,929],{"type":37,"value":915},"Dans Google Ads, les conversions modélisées sont rapportées sous la métrique ",{"type":32,"tag":52,"props":917,"children":919},{"className":918},[],[920],{"type":37,"value":921},"conversions_value_from_interactions_rate",{"type":37,"value":923},", mais le nombre brut n'a pas de sens. La vraie métrique est l'",{"type":32,"tag":106,"props":925,"children":926},{},[927],{"type":37,"value":928},"intervalle de confiance de la conversion modélisée",{"type":37,"value":930}," — il n'existe pas dans l'API Google Ads, tu dois le calculer manuellement.",{"type":32,"tag":33,"props":932,"children":933},{},[934],{"type":37,"value":935},"Formule d'intervalle de confiance (approximation bayésienne) :",{"type":32,"tag":231,"props":937,"children":939},{"code":938},"IC = conversion_modélisée ± (1.96 × √(conversion_modélisée × (1 - taux_consentement)))\n",[940],{"type":32,"tag":52,"props":941,"children":942},{"__ignoreMap":16},[943],{"type":37,"value":938},{"type":32,"tag":33,"props":945,"children":946},{},[947],{"type":37,"value":948},"Exemple : 100 conversions modélisées, taux de consentement 30% → IC = 100 ± 16,4. C'est-à-dire que la vraie conversion se situe entre 84 et 116. Cette marge de +\u002F- 16% est assez étroite pour les enchères mais trop large pour les tests créatifs.",{"type":32,"tag":33,"props":950,"children":951},{},[952,954,959],{"type":37,"value":953},"Pour valider la précision de la modélisation, tu dois effectuer un ",{"type":32,"tag":106,"props":955,"children":956},{},[957],{"type":37,"value":958},"test de rétention géographique",{"type":37,"value":837},{"type":32,"tag":961,"props":962,"children":963},"ol",{},[964,969,974],{"type":32,"tag":137,"props":965,"children":966},{},[967],{"type":37,"value":968},"Dans 10% de zones géographiques (par ex. un Land allemand), supprime entièrement le popup de consentement (baseline : consentement 100%).",{"type":32,"tag":137,"props":970,"children":971},{},[972],{"type":37,"value":973},"Sur les 90% restants du trafic, laisse le flux de consentement normal.",{"type":32,"tag":137,"props":975,"children":976},{},[977],{"type":37,"value":978},"Après 4 semaines, compare les taux de conversion — si l'écart entre la conversion réelle dans le groupe témoin et la conversion modélisée est supérieur à 20%, la modélisation est peu fiable.",{"type":32,"tag":33,"props":980,"children":981},{},[982],{"type":37,"value":983},"Google effectue ce test de son côté mais ne te communique pas les résultats. Tu dois le refaire dans ta propre infrastructure car la qualité de la modélisation dépend du segment : sur le trafic B2B, la modélisation fonctionne moins bien (sample size réduit), sur l'e-commerce, elle fonctionne mieux (haute fréquence de conversion).",{"type":32,"tag":40,"props":985,"children":987},{"id":986},"stratégie-incitation-au-consentement-consentement-progressif",[988],{"type":37,"value":989},"Stratégie Incitation au Consentement + Consentement Progressif",{"type":32,"tag":33,"props":991,"children":992},{},[993,995,1000],{"type":37,"value":994},"Le moyen le plus efficace d'augmenter le taux de consentement est l'",{"type":32,"tag":77,"props":996,"children":997},{},[998],{"type":37,"value":999},"échange de valeur",{"type":37,"value":1001}," — mais la plupart des marques s'y prennent mal. Un message générique \"acceptez les cookies, améliorez votre expérience\" génère 5% de lift. À la place :",{"type":32,"tag":33,"props":1003,"children":1004},{},[1005],{"type":32,"tag":106,"props":1006,"children":1007},{},[1008],{"type":37,"value":1009},"Modèle de consentement par étapes :",{"type":32,"tag":133,"props":1011,"children":1012},{},[1013,1023,1033],{"type":32,"tag":137,"props":1014,"children":1015},{},[1016,1021],{"type":32,"tag":106,"props":1017,"children":1018},{},[1019],{"type":37,"value":1020},"Étape 1 (essentiels uniquement) :",{"type":37,"value":1022}," le site fonctionne, tu peux te connecter au checkout mais pas de personnalisation.",{"type":32,"tag":137,"props":1024,"children":1025},{},[1026,1031],{"type":32,"tag":106,"props":1027,"children":1028},{},[1029],{"type":37,"value":1030},"Étape 2 (+ analytics) :",{"type":37,"value":1032}," on se souvient de tes préférences, on conserve ton panier.",{"type":32,"tag":137,"props":1034,"children":1035},{},[1036,1041],{"type":32,"tag":106,"props":1037,"children":1038},{},[1039],{"type":37,"value":1040},"Étape 3 (+ publicité) :",{"type":37,"value":1042}," campagnes exclusives, accès prioritaire, code promo 10%.",{"type":32,"tag":33,"props":1044,"children":1045},{},[1046],{"type":37,"value":1047},"Avec ce modèle, le consentement Étape 3 atteint 15-25% mais c'est auprès d'utilisateurs à intention élevée — donc leur probabilité de conversion est déjà haute. C'est idéal pour la modélisation car la qualité des données d'entraînement augmente.",{"type":32,"tag":33,"props":1049,"children":1050},{},[1051],{"type":37,"value":1052},"Le timing du consentement progressif est aussi critique : afficher le popup au premier accès augmente le bounce rate de 8%. À la place :",{"type":32,"tag":961,"props":1054,"children":1055},{},[1056,1061,1066],{"type":32,"tag":137,"props":1057,"children":1058},{},[1059],{"type":37,"value":1060},"Reste silencieux les 30 premières secondes (laisse l'utilisateur découvrir le contenu).",{"type":32,"tag":137,"props":1062,"children":1063},{},[1064],{"type":37,"value":1065},"Affiche un banner de consentement minimal à 50% de scroll depth ou au moment d'ajouter un article au panier.",{"type":32,"tag":137,"props":1067,"children":1068},{},[1069],{"type":37,"value":1070},"Propose des options de consentement granulaires au checkout (avec incitation).",{"type":32,"tag":33,"props":1072,"children":1073},{},[1074],{"type":37,"value":1075},"Cette stratégie pousse le taux de consentement à 35-45% (moyenne industrie 28%). Données de test : A\u002FB test sur 50M+ impressions, portefeuille client Roibase 2025-2026.",{"type":32,"tag":40,"props":1077,"children":1079},{"id":1078},"api-de-conversion-côté-serveur-pattern-double-send-capi-ecv2",[1080],{"type":37,"value":1081},"API de Conversion Côté Serveur : Pattern Double-Send CAPI + ECv2",{"type":32,"tag":33,"props":1083,"children":1084},{},[1085],{"type":37,"value":1086},"Meta CAPI et Google Enhanced Conversions v2 permettent d'envoyer des signaux de conversion même sans consentement — mais avec la bonne architecture. Faux : envoyer l'email hashé via JS côté client (violation RGPD, car même si l'email est hashé dans le navigateur, c'est du traitement). Juste : à la validation de la commande, hash le PII côté serveur et envoie directement à l'API.",{"type":32,"tag":33,"props":1088,"children":1089},{},[1090],{"type":37,"value":1091},"Pattern double-send :",{"type":32,"tag":231,"props":1093,"children":1095},{"code":1094},"Client-side (consentement accordé) :\n  → pixel Google Ads déclenché → cookie navigateur → attribution directe\n\nCôté serveur (toujours) :\n  → événement de paiement → hash(email, phone) → Meta CAPI + Google ECv2\n  → signal d'attribution (retardé, taux de correspondance 60-70%)\n",[1096],{"type":32,"tag":52,"props":1097,"children":1098},{"__ignoreMap":16},[1099],{"type":37,"value":1094},{"type":32,"tag":33,"props":1101,"children":1102},{},[1103],{"type":37,"value":1104},"Ce pattern augmente la précision de la modélisation car :",{"type":32,"tag":133,"props":1106,"children":1107},{},[1108,1113,1118],{"type":32,"tag":137,"props":1109,"children":1110},{},[1111],{"type":37,"value":1112},"Même sans consentement client-side, tu as un signal côté serveur.",{"type":32,"tag":137,"props":1114,"children":1115},{},[1116],{"type":37,"value":1117},"Le taux de correspondance (email hashé → ID utilisateur) est 60-70%, mais ce segment a une intention très élevée — le taux de conversion est 3x plus haut.",{"type":32,"tag":137,"props":1119,"children":1120},{},[1121],{"type":37,"value":1122},"Les algorithmes de Google Ads et Meta triangulent deux sources de signal différentes, l'intervalle de confiance se resserre.",{"type":32,"tag":33,"props":1124,"children":1125},{},[1126,1131,1133,1139,1141,1147,1149,1155],{"type":32,"tag":106,"props":1127,"children":1128},{},[1129],{"type":37,"value":1130},"Attention :",{"type":37,"value":1132}," si tu envoies l'événement CAPI côté serveur avec ",{"type":32,"tag":52,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":37,"value":1138},"action_source: website",{"type":37,"value":1140},", Meta le considère comme un événement client-side et le refuse quand il n'y a pas de consentement. Correct : ",{"type":32,"tag":52,"props":1142,"children":1144},{"className":1143},[],[1145],{"type":37,"value":1146},"action_source: server_side",{"type":37,"value":1148}," + ",{"type":32,"tag":52,"props":1150,"children":1152},{"className":1151},[],[1153],{"type":37,"value":1154},"data_processing_options: [\"LDU\"]",{"type":37,"value":1156}," (Limited Data Use, mode compatible RGPD).",{"type":32,"tag":40,"props":1158,"children":1160},{"id":1159},"point-final-intersection-legal-engineering",[1161],{"type":37,"value":1162},"Point Final : Intersection Legal + Engineering",{"type":32,"tag":33,"props":1164,"children":1165},{},[1166,1168,1173],{"type":37,"value":1167},"La conformité à Consent Mode v2 et TCF 2.2 n'est pas qu'un problème d'ingénierie, c'est une intersection ",{"type":32,"tag":77,"props":1169,"children":1170},{},[1171],{"type":37,"value":1172},"legal-tech",{"type":37,"value":1174},". Le DPO (Délégué à la Protection des Données) et le développeur GTM doivent être dans la même salle car :",{"type":32,"tag":133,"props":1176,"children":1177},{},[1178,1183,1188],{"type":32,"tag":137,"props":1179,"children":1180},{},[1181],{"type":37,"value":1182},"La sélection du vendor CMP est une décision légale mais l'intégration de l'API CMP est de l'ingénierie.",{"type":32,"tag":137,"props":1184,"children":1185},{},[1186],{"type":37,"value":1187},"Le retrait du consentement (RGPD Article 17) est une obligation légale mais la logique de suppression de cookies se fait en backend.",{"type":32,"tag":137,"props":1189,"children":1190},{},[1191],{"type":37,"value":1192},"Le mapping de consentement spécifique au vendor exige à la fois la spec IAB (documentation technique) et les directives du DPA (interprétation légale).",{"type":32,"tag":33,"props":1194,"children":1195},{},[1196],{"type":37,"value":1197},"Pour minimiser la perte de modélisation sans prendre de risque légal, voici une checklist :",{"type":32,"tag":961,"props":1199,"children":1200},{},[1201],{"type":32,"tag":137,"props":1202,"children":1203},{},[1204],{"type":37,"value":1205},"Vé",{"type":32,"tag":1207,"props":1208,"children":1209},"style",{},[1210],{"type":37,"value":1211},"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":281,"depth":281,"links":1213},[1214,1215,1218,1219,1220,1221,1222],{"id":42,"depth":254,"text":45},{"id":96,"depth":254,"text":99,"children":1216},[1217],{"id":213,"depth":281,"text":216},{"id":594,"depth":254,"text":597},{"id":907,"depth":254,"text":910},{"id":986,"depth":254,"text":989},{"id":1078,"depth":254,"text":1081},{"id":1159,"depth":254,"text":1162},"markdown","content:fr:marketing:consent-mode-v2-et-tcf-2-2-gerer-la-perte-de-modelisation.md","content","fr\u002Fmarketing\u002Fconsent-mode-v2-et-tcf-2-2-gerer-la-perte-de-modelisation.md","fr\u002Fmarketing\u002Fconsent-mode-v2-et-tcf-2-2-gerer-la-perte-de-modelisation","md",1782079493952]