[{"data":1,"prerenderedAt":886},["ShallowReactive",2],{"article-alternates":3,"article-\u002Ffr\u002Fmarketing\u002Fconversions-api-meta-implementation":13},{"i18nKey":4,"paths":5},"marketing-001-2026-07",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fmarketing\u002Fserver-side-conversions-meta-capi-richtig-einrichten","\u002Fen\u002Fmarketing\u002Fserver-side-conversions-meta-capi-setup","\u002Fes\u002Fmarketing\u002Fserver-side-conversiones-meta-capi-guia-completa","\u002Ffr\u002Fmarketing\u002Fserver-side-conversions-meta-capi-setup","\u002Fit\u002Fmarketing\u002Fserver-side-conversioni-meta-capi-installazione-corretta","\u002Fru\u002Fmarketing\u002Fserver-side-conversions-meta-capi-pravilno-nastroit","\u002Ftr\u002Fmarketing\u002Fserver-side-conversions-meta-capiyi-sifirdan-dogru-kurmak",{"_path":14,"_dir":15,"_draft":16,"_partial":16,"_locale":17,"title":18,"description":19,"publishedAt":20,"modifiedAt":20,"category":15,"i18nKey":4,"tags":21,"readingTime":27,"author":28,"body":29,"_type":880,"_id":881,"_source":882,"_file":883,"_stem":884,"_extension":885},"\u002Ffr\u002Fmarketing\u002Fconversions-api-meta-implementation","marketing",false,"","Server-Side Conversions: Implementing Meta CAPI the Right Way","Post-iOS privacy: Master Meta CAPI and sGTM architecture with event match quality, deduplication, and signal recovery strategies.","2026-07-23",[22,23,24,25,26],"meta-capi","server-side-gtm","conversion-api","event-match-quality","attribution",8,"Roibase",{"type":30,"children":31,"toc":870},"root",[32,40,47,61,88,93,99,104,131,144,151,187,192,198,203,298,303,660,665,671,676,681,686,692,724,747,771,802,825,830,836,848,864],{"type":33,"tag":34,"props":35,"children":36},"element","p",{},[37],{"type":38,"value":39},"text","Since iOS 14.5, Meta's pixel has been hemorrhaging data. ATT opt-in rates plateaued around 25%, browser tracking restrictions expanded, and cookie lifetimes shortened. The result: pixel-sourced conversion signals drop 40-60% week-over-week. Meta's algorithm goes blind, ROAS optimization breaks. Server-side Conversions API (CAPI) is no longer optional—properly configured, it recovers up to 80% of signal loss.",{"type":33,"tag":41,"props":42,"children":44},"h2",{"id":43},"where-meta-capi-works-in-your-stack",[45],{"type":38,"value":46},"Where Meta CAPI Works in Your Stack",{"type":33,"tag":34,"props":48,"children":49},{},[50,52,59],{"type":38,"value":51},"Meta CAPI isn't a pixel replacement—it's a parallel track. The pixel sends client-side data via browser; CAPI sends server-side data from your backend. Both run in parallel, and Meta deduplicates on their end. For deduplication to work, both events must carry the same ",{"type":33,"tag":53,"props":54,"children":56},"code",{"className":55},[],[57],{"type":38,"value":58},"event_id",{"type":38,"value":60},"—Meta counts identical conversions from pixel and CAPI as a single signal.",{"type":33,"tag":34,"props":62,"children":63},{},[64,66,72,74,79,81,86],{"type":38,"value":65},"CAPI delivers three critical wins: (1) ",{"type":33,"tag":67,"props":68,"children":69},"strong",{},[70],{"type":38,"value":71},"Independence from browser tracking blocks.",{"type":38,"value":73}," iOS ATT, ITP, cookie deletions—all bypassed server-side. (2) ",{"type":33,"tag":67,"props":75,"children":76},{},[77],{"type":38,"value":78},"First-party data enrichment.",{"type":38,"value":80}," Your server holds what browsers can't: CRM email hashes, phone numbers, addresses. Bolt these onto events; Event Match Quality (EMQ) surges. (3) ",{"type":33,"tag":67,"props":82,"children":83},{},[84],{"type":38,"value":85},"Extended conversion window.",{"type":38,"value":87}," Pixel caps at 7 days; CAPI stretches to 28 days, capturing long-tail conversions.",{"type":33,"tag":34,"props":89,"children":90},{},[91],{"type":38,"value":92},"EMQ measures how well Meta matches an event to the correct user on a 0-10 scale: 6 or below is weak, 7-8 is healthy, 9+ is excellent. Low EMQ means Meta can't attribute—that conversion signal becomes unusable. To lift it, send multiple identifiers: email (SHA-256 hash), phone (E.164 format, hashed), user agent, IP, fbc\u002Ffbp cookies, external_id (your CRM ID). Attach 4-5 identifiers to one event, and EMQ climbs toward 9.",{"type":33,"tag":41,"props":94,"children":96},{"id":95},"server-side-gtm-sgtm-architecture",[97],{"type":38,"value":98},"Server-Side GTM (sGTM) Architecture",{"type":33,"tag":34,"props":100,"children":101},{},[102],{"type":38,"value":103},"Sending CAPI calls manually from your backend is possible but doesn't scale—each event means separate HTTP requests, manual deduplication, messy error handling. sGTM standardizes the stack. It's Google Tag Manager's server-side container: captures events from your client, transforms them, and dispatches to Meta CAPI, GA4, TikTok Events API in parallel.",{"type":33,"tag":34,"props":105,"children":106},{},[107,109,115,117,122,124,129],{"type":38,"value":108},"Here's the flow: (1) Client-side GTM tags an event (",{"type":33,"tag":53,"props":110,"children":112},{"className":111},[],[113],{"type":38,"value":114},"dataLayer.push",{"type":38,"value":116},"). (2) Client container POSTs to your sGTM endpoint. (3) sGTM container receives it, enriches (reads server cookies, pulls CRM data), adds ",{"type":33,"tag":53,"props":118,"children":120},{"className":119},[],[121],{"type":38,"value":58},{"type":38,"value":123}," for dedup. (4) Meta CAPI tag HTTP POSTs to Meta. (5) If the same event arrives from the pixel with the same ",{"type":33,"tag":53,"props":125,"children":127},{"className":126},[],[128],{"type":38,"value":58},{"type":38,"value":130},", Meta counts it once.",{"type":33,"tag":34,"props":132,"children":133},{},[134,136,142],{"type":38,"value":135},"Host sGTM on your own domain—",{"type":33,"tag":53,"props":137,"children":139},{"className":138},[],[140],{"type":38,"value":141},"gtm.yourdomain.com",{"type":38,"value":143}," style. Meta's algorithm reads the event URL; first-party domains boost event_score (third-party script blockers can't intercept, cookie lifetime extends). Use Cloud Run, App Engine, or GCP's managed sGTM container. Typical monthly cost: $50-500 depending on traffic.",{"type":33,"tag":145,"props":146,"children":148},"h3",{"id":147},"deduplication-mechanics",[149],{"type":38,"value":150},"Deduplication Mechanics",{"type":33,"tag":34,"props":152,"children":153},{},[154,156,161,163,169,171,177,179,185],{"type":38,"value":155},"For deduplication, ",{"type":33,"tag":53,"props":157,"children":159},{"className":158},[],[160],{"type":38,"value":58},{"type":38,"value":162}," generation is critical. Don't use random UUIDs—the same event from client and server must carry the same ID. Best practice: deterministic hashing like ",{"type":33,"tag":53,"props":164,"children":166},{"className":165},[],[167],{"type":38,"value":168},"{user_id}_{event_name}_{timestamp_rounded_to_minute}",{"type":38,"value":170},". Example: user ID 12345, event ",{"type":33,"tag":53,"props":172,"children":174},{"className":173},[],[175],{"type":38,"value":176},"Purchase",{"type":38,"value":178},", timestamp 2026-07-23 14:32:18 → ",{"type":33,"tag":53,"props":180,"children":182},{"className":181},[],[183],{"type":38,"value":184},"event_id = hash(12345_Purchase_202607231432)",{"type":38,"value":186},".",{"type":33,"tag":34,"props":188,"children":189},{},[190],{"type":38,"value":191},"This way, when the same user's Purchase fires from both pixel and CAPI in the same minute, Meta sees the same ID and counts it once. If you round to milliseconds, even tiny timing skew breaks dedup.",{"type":33,"tag":41,"props":193,"children":195},{"id":194},"boosting-emq-to-9",[196],{"type":38,"value":197},"Boosting EMQ to 9+",{"type":33,"tag":34,"props":199,"children":200},{},[201],{"type":38,"value":202},"If EMQ stays below 7, attribution is broken. Check Meta Events Manager per event. Below 6? Act immediately. Here's how to lift it:",{"type":33,"tag":204,"props":205,"children":206},"ol",{},[207,226,244,270,280],{"type":33,"tag":208,"props":209,"children":210},"li",{},[211,216,218,224],{"type":33,"tag":67,"props":212,"children":213},{},[214],{"type":38,"value":215},"Email hash:",{"type":38,"value":217}," If the user logged in, SHA-256 hash their email and send as ",{"type":33,"tag":53,"props":219,"children":221},{"className":220},[],[222],{"type":38,"value":223},"user_data.em",{"type":38,"value":225},". Meta cross-references the hash against their user database.",{"type":33,"tag":208,"props":227,"children":228},{},[229,234,236,242],{"type":33,"tag":67,"props":230,"children":231},{},[232],{"type":38,"value":233},"Phone hash:",{"type":38,"value":235}," ",{"type":33,"tag":53,"props":237,"children":239},{"className":238},[],[240],{"type":38,"value":241},"user_data.ph",{"type":38,"value":243}," parameter—E.164 format (with +90 prefix), SHA-256 hashed.",{"type":33,"tag":208,"props":245,"children":246},{},[247,252,254,260,262,268],{"type":33,"tag":67,"props":248,"children":249},{},[250],{"type":38,"value":251},"Client IP and User Agent:",{"type":38,"value":253}," Attach ",{"type":33,"tag":53,"props":255,"children":257},{"className":256},[],[258],{"type":38,"value":259},"user_data.client_ip_address",{"type":38,"value":261}," and ",{"type":33,"tag":53,"props":263,"children":265},{"className":264},[],[266],{"type":38,"value":267},"user_data.client_user_agent",{"type":38,"value":269}," to the CAPI payload. sGTM auto-extracts these from the incoming request.",{"type":33,"tag":208,"props":271,"children":272},{},[273,278],{"type":33,"tag":67,"props":274,"children":275},{},[276],{"type":38,"value":277},"fbc and fbp cookies:",{"type":38,"value":279}," Meta's click ID (fbc) and browser ID (fbp) cookies. sGTM reads these because it runs on your first-party domain.",{"type":33,"tag":208,"props":281,"children":282},{},[283,288,290,296],{"type":33,"tag":67,"props":284,"children":285},{},[286],{"type":38,"value":287},"external_id:",{"type":38,"value":289}," Your CRM user ID as ",{"type":33,"tag":53,"props":291,"children":293},{"className":292},[],[294],{"type":38,"value":295},"user_data.external_id",{"type":38,"value":297},". Meta leverages this in their cross-device graph.",{"type":33,"tag":34,"props":299,"children":300},{},[301],{"type":38,"value":302},"Example CAPI payload from sGTM to Meta:",{"type":33,"tag":304,"props":305,"children":309},"pre",{"className":306,"code":307,"language":308,"meta":17,"style":17},"language-json shiki shiki-themes github-dark","{\n  \"event_name\": \"Purchase\",\n  \"event_time\": 1721741538,\n  \"event_id\": \"abc123_Purchase_202607231432\",\n  \"event_source_url\": \"https:\u002F\u002Fshop.yourdomain.com\u002Fcheckout\",\n  \"user_data\": {\n    \"em\": \"7d8c8fbb1f3e6e0f3...\",\n    \"ph\": \"9b6e2f1a3d5e8c...\",\n    \"client_ip_address\": \"185.42.12.34\",\n    \"client_user_agent\": \"Mozilla\u002F5.0...\",\n    \"fbc\": \"fb.1.1625012345678.AbCdEfGhIj\",\n    \"fbp\": \"fb.1.1625012345678.1234567890\",\n    \"external_id\": \"CRM-12345\"\n  },\n  \"custom_data\": {\n    \"currency\": \"USD\",\n    \"value\": 99.99\n  }\n}\n","json",[310],{"type":33,"tag":53,"props":311,"children":312},{"__ignoreMap":17},[313,325,351,373,395,417,431,453,474,496,518,540,562,580,589,602,624,642,651],{"type":33,"tag":314,"props":315,"children":318},"span",{"class":316,"line":317},"line",1,[319],{"type":33,"tag":314,"props":320,"children":322},{"style":321},"--shiki-default:#E1E4E8",[323],{"type":38,"value":324},"{\n",{"type":33,"tag":314,"props":326,"children":328},{"class":316,"line":327},2,[329,335,340,346],{"type":33,"tag":314,"props":330,"children":332},{"style":331},"--shiki-default:#79B8FF",[333],{"type":38,"value":334},"  \"event_name\"",{"type":33,"tag":314,"props":336,"children":337},{"style":321},[338],{"type":38,"value":339},": ",{"type":33,"tag":314,"props":341,"children":343},{"style":342},"--shiki-default:#9ECBFF",[344],{"type":38,"value":345},"\"Purchase\"",{"type":33,"tag":314,"props":347,"children":348},{"style":321},[349],{"type":38,"value":350},",\n",{"type":33,"tag":314,"props":352,"children":354},{"class":316,"line":353},3,[355,360,364,369],{"type":33,"tag":314,"props":356,"children":357},{"style":331},[358],{"type":38,"value":359},"  \"event_time\"",{"type":33,"tag":314,"props":361,"children":362},{"style":321},[363],{"type":38,"value":339},{"type":33,"tag":314,"props":365,"children":366},{"style":331},[367],{"type":38,"value":368},"1721741538",{"type":33,"tag":314,"props":370,"children":371},{"style":321},[372],{"type":38,"value":350},{"type":33,"tag":314,"props":374,"children":376},{"class":316,"line":375},4,[377,382,386,391],{"type":33,"tag":314,"props":378,"children":379},{"style":331},[380],{"type":38,"value":381},"  \"event_id\"",{"type":33,"tag":314,"props":383,"children":384},{"style":321},[385],{"type":38,"value":339},{"type":33,"tag":314,"props":387,"children":388},{"style":342},[389],{"type":38,"value":390},"\"abc123_Purchase_202607231432\"",{"type":33,"tag":314,"props":392,"children":393},{"style":321},[394],{"type":38,"value":350},{"type":33,"tag":314,"props":396,"children":398},{"class":316,"line":397},5,[399,404,408,413],{"type":33,"tag":314,"props":400,"children":401},{"style":331},[402],{"type":38,"value":403},"  \"event_source_url\"",{"type":33,"tag":314,"props":405,"children":406},{"style":321},[407],{"type":38,"value":339},{"type":33,"tag":314,"props":409,"children":410},{"style":342},[411],{"type":38,"value":412},"\"https:\u002F\u002Fshop.yourdomain.com\u002Fcheckout\"",{"type":33,"tag":314,"props":414,"children":415},{"style":321},[416],{"type":38,"value":350},{"type":33,"tag":314,"props":418,"children":420},{"class":316,"line":419},6,[421,426],{"type":33,"tag":314,"props":422,"children":423},{"style":331},[424],{"type":38,"value":425},"  \"user_data\"",{"type":33,"tag":314,"props":427,"children":428},{"style":321},[429],{"type":38,"value":430},": {\n",{"type":33,"tag":314,"props":432,"children":434},{"class":316,"line":433},7,[435,440,444,449],{"type":33,"tag":314,"props":436,"children":437},{"style":331},[438],{"type":38,"value":439},"    \"em\"",{"type":33,"tag":314,"props":441,"children":442},{"style":321},[443],{"type":38,"value":339},{"type":33,"tag":314,"props":445,"children":446},{"style":342},[447],{"type":38,"value":448},"\"7d8c8fbb1f3e6e0f3...\"",{"type":33,"tag":314,"props":450,"children":451},{"style":321},[452],{"type":38,"value":350},{"type":33,"tag":314,"props":454,"children":455},{"class":316,"line":27},[456,461,465,470],{"type":33,"tag":314,"props":457,"children":458},{"style":331},[459],{"type":38,"value":460},"    \"ph\"",{"type":33,"tag":314,"props":462,"children":463},{"style":321},[464],{"type":38,"value":339},{"type":33,"tag":314,"props":466,"children":467},{"style":342},[468],{"type":38,"value":469},"\"9b6e2f1a3d5e8c...\"",{"type":33,"tag":314,"props":471,"children":472},{"style":321},[473],{"type":38,"value":350},{"type":33,"tag":314,"props":475,"children":477},{"class":316,"line":476},9,[478,483,487,492],{"type":33,"tag":314,"props":479,"children":480},{"style":331},[481],{"type":38,"value":482},"    \"client_ip_address\"",{"type":33,"tag":314,"props":484,"children":485},{"style":321},[486],{"type":38,"value":339},{"type":33,"tag":314,"props":488,"children":489},{"style":342},[490],{"type":38,"value":491},"\"185.42.12.34\"",{"type":33,"tag":314,"props":493,"children":494},{"style":321},[495],{"type":38,"value":350},{"type":33,"tag":314,"props":497,"children":499},{"class":316,"line":498},10,[500,505,509,514],{"type":33,"tag":314,"props":501,"children":502},{"style":331},[503],{"type":38,"value":504},"    \"client_user_agent\"",{"type":33,"tag":314,"props":506,"children":507},{"style":321},[508],{"type":38,"value":339},{"type":33,"tag":314,"props":510,"children":511},{"style":342},[512],{"type":38,"value":513},"\"Mozilla\u002F5.0...\"",{"type":33,"tag":314,"props":515,"children":516},{"style":321},[517],{"type":38,"value":350},{"type":33,"tag":314,"props":519,"children":521},{"class":316,"line":520},11,[522,527,531,536],{"type":33,"tag":314,"props":523,"children":524},{"style":331},[525],{"type":38,"value":526},"    \"fbc\"",{"type":33,"tag":314,"props":528,"children":529},{"style":321},[530],{"type":38,"value":339},{"type":33,"tag":314,"props":532,"children":533},{"style":342},[534],{"type":38,"value":535},"\"fb.1.1625012345678.AbCdEfGhIj\"",{"type":33,"tag":314,"props":537,"children":538},{"style":321},[539],{"type":38,"value":350},{"type":33,"tag":314,"props":541,"children":543},{"class":316,"line":542},12,[544,549,553,558],{"type":33,"tag":314,"props":545,"children":546},{"style":331},[547],{"type":38,"value":548},"    \"fbp\"",{"type":33,"tag":314,"props":550,"children":551},{"style":321},[552],{"type":38,"value":339},{"type":33,"tag":314,"props":554,"children":555},{"style":342},[556],{"type":38,"value":557},"\"fb.1.1625012345678.1234567890\"",{"type":33,"tag":314,"props":559,"children":560},{"style":321},[561],{"type":38,"value":350},{"type":33,"tag":314,"props":563,"children":565},{"class":316,"line":564},13,[566,571,575],{"type":33,"tag":314,"props":567,"children":568},{"style":331},[569],{"type":38,"value":570},"    \"external_id\"",{"type":33,"tag":314,"props":572,"children":573},{"style":321},[574],{"type":38,"value":339},{"type":33,"tag":314,"props":576,"children":577},{"style":342},[578],{"type":38,"value":579},"\"CRM-12345\"\n",{"type":33,"tag":314,"props":581,"children":583},{"class":316,"line":582},14,[584],{"type":33,"tag":314,"props":585,"children":586},{"style":321},[587],{"type":38,"value":588},"  },\n",{"type":33,"tag":314,"props":590,"children":592},{"class":316,"line":591},15,[593,598],{"type":33,"tag":314,"props":594,"children":595},{"style":331},[596],{"type":38,"value":597},"  \"custom_data\"",{"type":33,"tag":314,"props":599,"children":600},{"style":321},[601],{"type":38,"value":430},{"type":33,"tag":314,"props":603,"children":605},{"class":316,"line":604},16,[606,611,615,620],{"type":33,"tag":314,"props":607,"children":608},{"style":331},[609],{"type":38,"value":610},"    \"currency\"",{"type":33,"tag":314,"props":612,"children":613},{"style":321},[614],{"type":38,"value":339},{"type":33,"tag":314,"props":616,"children":617},{"style":342},[618],{"type":38,"value":619},"\"USD\"",{"type":33,"tag":314,"props":621,"children":622},{"style":321},[623],{"type":38,"value":350},{"type":33,"tag":314,"props":625,"children":627},{"class":316,"line":626},17,[628,633,637],{"type":33,"tag":314,"props":629,"children":630},{"style":331},[631],{"type":38,"value":632},"    \"value\"",{"type":33,"tag":314,"props":634,"children":635},{"style":321},[636],{"type":38,"value":339},{"type":33,"tag":314,"props":638,"children":639},{"style":331},[640],{"type":38,"value":641},"99.99\n",{"type":33,"tag":314,"props":643,"children":645},{"class":316,"line":644},18,[646],{"type":33,"tag":314,"props":647,"children":648},{"style":321},[649],{"type":38,"value":650},"  }\n",{"type":33,"tag":314,"props":652,"children":654},{"class":316,"line":653},19,[655],{"type":33,"tag":314,"props":656,"children":657},{"style":321},[658],{"type":38,"value":659},"}\n",{"type":33,"tag":34,"props":661,"children":662},{},[663],{"type":38,"value":664},"Six identifiers in one payload—EMQ climbs toward 9. Meta confidently links the conversion to the user, campaign optimization stays clean.",{"type":33,"tag":41,"props":666,"children":668},{"id":667},"signal-recovery-and-incrementality-testing",[669],{"type":38,"value":670},"Signal Recovery and Incrementality Testing",{"type":33,"tag":34,"props":672,"children":673},{},[674],{"type":38,"value":675},"Once CAPI is live, monitor Meta Events Manager: watch \"Event Match Quality\" and \"Events Received\" dashboards. Total pixel+CAPI event volume should climb (deduplicated), average EMQ should hold 7+. In the first two weeks, attribution window expansion can inflate visible conversion count by 20-30%—that's signal recovery, not false inflation.",{"type":33,"tag":34,"props":677,"children":678},{},[679],{"type":38,"value":680},"To measure real lift, run a geo-holdout test. Run pixel-only in some regions, pixel+CAPI in others; compare ROAS. Meta's Conversion Lift study works the same way, but manual measurement is more trustworthy.",{"type":33,"tag":34,"props":682,"children":683},{},[684],{"type":38,"value":685},"CAPI ROI typically surfaces in 3-6 months. Markets with high iOS penetration (US, Western Europe) see faster gains. Android-heavy regions show less signal recovery but still benefit from EMQ uplift and algorithm performance.",{"type":33,"tag":41,"props":687,"children":689},{"id":688},"technical-pitfalls-and-fixes",[690],{"type":38,"value":691},"Technical Pitfalls and Fixes",{"type":33,"tag":34,"props":693,"children":694},{},[695,700,702,708,710,715,717,722],{"type":33,"tag":67,"props":696,"children":697},{},[698],{"type":38,"value":699},"Pitfall 1:",{"type":38,"value":701}," Hosting sGTM on a third-party domain (",{"type":33,"tag":53,"props":703,"children":705},{"className":704},[],[706],{"type":38,"value":707},"gtm-abc123.appspot.com",{"type":38,"value":709},"). Meta doesn't recognize it; event_score drops, cookie lifetime shortens. ",{"type":33,"tag":67,"props":711,"children":712},{},[713],{"type":38,"value":714},"Fix:",{"type":38,"value":716}," Point your own domain to sGTM via CNAME (",{"type":33,"tag":53,"props":718,"children":720},{"className":719},[],[721],{"type":38,"value":141},{"type":38,"value":723},").",{"type":33,"tag":34,"props":725,"children":726},{},[727,732,734,739,741,745],{"type":33,"tag":67,"props":728,"children":729},{},[730],{"type":38,"value":731},"Pitfall 2:",{"type":38,"value":733}," Sending events without ",{"type":33,"tag":53,"props":735,"children":737},{"className":736},[],[738],{"type":38,"value":58},{"type":38,"value":740},". Meta can't deduplicate; the same conversion counts twice, inflating ROAS (false optimization). ",{"type":33,"tag":67,"props":742,"children":743},{},[744],{"type":38,"value":714},{"type":38,"value":746}," Generate deterministic IDs for every event.",{"type":33,"tag":34,"props":748,"children":749},{},[750,755,757,761,763,769],{"type":33,"tag":67,"props":751,"children":752},{},[753],{"type":38,"value":754},"Pitfall 3:",{"type":38,"value":756}," Sending PII unhashed. Meta rejects raw email; events fail. ",{"type":33,"tag":67,"props":758,"children":759},{},[760],{"type":38,"value":714},{"type":38,"value":762}," SHA-256 hash + normalize lowercase (",{"type":33,"tag":53,"props":764,"children":766},{"className":765},[],[767],{"type":38,"value":768},"trim().toLowerCase()",{"type":38,"value":770}," before hashing).",{"type":33,"tag":34,"props":772,"children":773},{},[774,779,781,787,789,793,795,800],{"type":33,"tag":67,"props":775,"children":776},{},[777],{"type":38,"value":778},"Pitfall 4:",{"type":38,"value":780}," Omitting ",{"type":33,"tag":53,"props":782,"children":784},{"className":783},[],[785],{"type":38,"value":786},"event_source_url",{"type":38,"value":788},". Meta doesn't know where the event originated; domain verification fails. ",{"type":33,"tag":67,"props":790,"children":791},{},[792],{"type":38,"value":714},{"type":38,"value":794}," Always include ",{"type":33,"tag":53,"props":796,"children":798},{"className":797},[],[799],{"type":38,"value":786},{"type":38,"value":801}," (your checkout page URL).",{"type":33,"tag":34,"props":803,"children":804},{},[805,810,812,816,818,824],{"type":33,"tag":67,"props":806,"children":807},{},[808],{"type":38,"value":809},"Pitfall 5:",{"type":38,"value":811}," Sending timestamps in the future. Meta rejects them. ",{"type":33,"tag":67,"props":813,"children":814},{},[815],{"type":38,"value":714},{"type":38,"value":817}," Unix epoch seconds, server time only (",{"type":33,"tag":53,"props":819,"children":821},{"className":820},[],[822],{"type":38,"value":823},"Math.floor(Date.now() \u002F 1000)",{"type":38,"value":723},{"type":33,"tag":34,"props":826,"children":827},{},[828],{"type":38,"value":829},"Use sGTM's Preview Mode to inspect payloads before they reach Meta—catch errors early.",{"type":33,"tag":41,"props":831,"children":833},{"id":832},"next-multi-platform-convergence",[834],{"type":38,"value":835},"Next: Multi-Platform Convergence",{"type":33,"tag":34,"props":837,"children":838},{},[839,841,846],{"type":38,"value":840},"Once CAPI is solid, extend the same sGTM architecture to TikTok Events API, Snapchat CAPI, Google Ads Enhanced Conversions. A single event dispatches to all platforms in parallel—same ",{"type":33,"tag":53,"props":842,"children":844},{"className":843},[],[845],{"type":38,"value":58},{"type":38,"value":847}," for cross-platform dedup, consistent attribution everywhere.",{"type":33,"tag":34,"props":849,"children":850},{},[851,853,862],{"type":38,"value":852},"Meta CAPI + sGTM is now the foundation of ",{"type":33,"tag":854,"props":855,"children":859},"a",{"href":856,"rel":857},"https:\u002F\u002Fwww.roibase.com.tr\u002Ffr\u002Fppc",[858],"nofollow",[860],{"type":38,"value":861},"performance marketing",{"type":38,"value":863}," infrastructure. It recovers signal loss, lifts EMQ, resurrects algorithm optimization. It's the only engineering path through the iOS privacy wall.",{"type":33,"tag":865,"props":866,"children":867},"style",{},[868],{"type":38,"value":869},"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":17,"searchDepth":353,"depth":353,"links":871},[872,873,876,877,878,879],{"id":43,"depth":327,"text":46},{"id":95,"depth":327,"text":98,"children":874},[875],{"id":147,"depth":353,"text":150},{"id":194,"depth":327,"text":197},{"id":667,"depth":327,"text":670},{"id":688,"depth":327,"text":691},{"id":832,"depth":327,"text":835},"markdown","content:fr:marketing:conversions-api-meta-implementation.md","content","fr\u002Fmarketing\u002Fconversions-api-meta-implementation.md","fr\u002Fmarketing\u002Fconversions-api-meta-implementation","md",1785967483847]