[{"data":1,"prerenderedAt":638},["ShallowReactive",2],{"guide-facebook-conversions-api-setup":3},{"id":4,"title":5,"answer":6,"authorId":7,"body":8,"category":492,"ctaVariant":493,"dataset":492,"description":494,"examples":495,"extension":508,"faqs":509,"heroImage":534,"intro":535,"meta":536,"navigation":537,"path":538,"publishedAt":539,"seo":540,"sources":541,"stats":594,"stem":636,"updatedAt":539,"__hash__":637},"blog\u002Fblog\u002Ffacebook-conversions-api-setup.md","Facebook Conversions API (CAPI) Setup (2026)","The Conversions API (CAPI) is a server-side connection that sends web, app, and CRM events to Meta server-to-server, alongside your browser Pixel rather than instead of it. You set it up in Events Manager: pick your dataset, generate a Conversions API access token under Settings, then connect either through a partner integration like your store platform or your own server, sending the same event_id and event_name from both sources so Meta deduplicates inside a 48-hour window. It matters because browser and app signal under-reports after Apple's App Tracking Transparency, where only about 50% of users opt in globally per AppsFlyer (2024). Meta reports advertisers running a Conversions API setup for web events saw on average 17.8% lower cost per result, a directional figure from Meta itself.","likit-sae-lee",{"type":9,"value":10,"toc":469},"minimark",[11,16,20,23,32,35,39,42,45,48,55,58,62,65,73,76,80,83,86,89,97,100,104,107,163,166,171,174,178,181,184,187,190,193,199,202,206,209,212,215,219,222,230,233,236,240,243,246,317,320,324,327,331,339,343,346,349,356,360,363,366,370,373,432,436,439,442,445,448,461],[12,13,15],"h2",{"id":14},"what-the-conversions-api-actually-is","What the Conversions API actually is",[17,18,19],"p",{},"The Conversions API, usually shortened to CAPI, is a server-side connection that sends events to Meta directly from your server, your store platform, or your CRM, rather than from the visitor's browser. The browser Pixel still has a job. It captures rich context like the ad click that brought someone in. But it lives in an environment Meta no longer controls, where ad blockers, privacy settings, and operating-system rules quietly remove a share of every event before it arrives.",[17,21,22],{},"CAPI does not replace the Pixel. This is the single most common misconception, and getting it wrong costs you signal. The 2026 best practice is redundancy: the Pixel and the Conversions API send the same events through two different paths, and Meta reconciles them. The browser path gives you depth. The server path gives you reliability. Together they recover conversions that either one alone would lose.",[17,24,25,26,31],{},"In Events Manager today, your Pixel sits inside a container Meta now calls a dataset. The dataset groups your website Pixel, your server-side CAPI, and any app or offline sources under one ID, and that ID is usually the same number your old Pixel used. When you read setup steps that say \"select your dataset,\" they mean the object that used to be labelled simply as your Pixel. The vocabulary shift trips up people following older tutorials, so hold this mapping: dataset is the container in Events Manager, Pixel is the browser tag inside it, and the Conversions API is a second source feeding the same container from your server. If your account still shows a Pixel where newer guides say dataset, the ",[27,28,30],"a",{"href":29},"\u002Fblog\u002Fmeta-pixel-to-dataset-migration","Pixel to dataset migration"," is the same asset renamed, not a new thing to build.",[17,33,34],{},"Worth naming what CAPI is not, because the wrong mental model leads to the wrong build. It is not a workaround that lets you skip the Pixel. It is not a way to track people who refused to be tracked, since it respects the same consent and privacy rules. And it is not a Meta product you buy or that a third-party tool installs on your behalf. It is a connection you configure inside Meta's own surfaces, either through your store platform or your own server, and the only assets it needs are a dataset and an access token you already have the right to generate.",[12,36,38],{"id":37},"why-browser-signal-under-reports-in-the-ios-era","Why browser signal under-reports in the iOS era",[17,40,41],{},"The reason CAPI went from a nice-to-have to a default sits in two privacy changes that gutted browser-only measurement.",[17,43,44],{},"The first is Apple's App Tracking Transparency, the prompt that asks whether an app may track you. Adoption of the prompt itself is near-universal: AppsFlyer reported in 2024 that 84% of gaming apps show it. But users say no far more than they say yes. Three years after launch, AppsFlyer put the global opt-in rate at 50%, with the US at 44% and the UK at 46%. When half your audience declines tracking inside the apps where Facebook and Instagram live, a measurement system that depends on that tracking is reporting on half a room.",[17,46,47],{},"The second is Safari's Intelligent Tracking Prevention, which caps how long browser cookies survive. Per Stape's 2024 breakdown, ITP limits JavaScript-set first-party cookies to a 7-day lifespan, and cookies set on URLs carrying query parameters, exactly the click-decorated links your ads send people to, to as little as 24 hours. Those cookies hold the click IDs the Pixel uses to attribute a sale back to an ad. When they expire in a day, a purchase that happens 48 hours after the click has nothing left to attribute it to.",[17,49,50],{},[51,52],"img",{"alt":53,"src":54},"Diagram contrasting a browser-only event path that leaks signal at ad blockers, ATT opt-outs, and Safari cookie caps against a server-side path that delivers events intact to Meta","\u002Fimages\u002Fblog\u002Ffacebook-conversions-api-setup-signal-loss.webp",[17,56,57],{},"The result is a reporting gap that has nothing to do with your ad spend. Your store records 100 orders; the browser Pixel reports 70. The 30 it missed were real buyers on iPhones, on Safari, or inside apps where they declined the prompt. CAPI sends those same purchase events from your server, where none of those browser rules apply, and backfills the gap.",[12,59,61],{"id":60},"how-attribution-windows-shape-what-you-can-still-match","How attribution windows shape what you can still match",[17,63,64],{},"Even a clean server feed will not make Meta's number equal your order count, and the attribution window is a big part of why. The window is the period after someone interacts with your ad in which Meta will still credit a resulting conversion. Before App Tracking Transparency, the default ran to a 28-day click window. Meta cut that after iOS 14.5, and the current default is 7-day click and 1-day view, per Meta's Business Help Center: a sale counts only if it happens within seven days of a click or one day of a view. The longer 28-day click window is gone from the default.",[17,66,67,68,72],{},"So a buyer who clicks your ad, thinks it over for nine days, then purchases is a real sale your store records, but Meta will not attribute it to the ad, because it fell outside the window. CAPI cannot recover that one; no amount of server-side signal stretches the window. Internalize this before you go hunting for a tracking bug. After you turn CAPI on, expect your Meta-reported conversions to climb toward your real orders, but not to match them exactly, because window cutoffs, cross-device journeys, and genuinely unattributable sales all sit between the two numbers. The companion guide on the ",[27,69,71],{"href":70},"\u002Fblog\u002Ffacebook-ads-attribution-window","Facebook ads attribution window"," goes deeper on choosing and reading the setting.",[17,74,75],{},"One related cleanup from the same privacy era: the old Aggregated Event Measurement step, where you ranked eight events per domain by priority, is no longer how this works. Meta announced on 15 May 2023 that it had removed the eight-event cap and the manual prioritization, and it now auto-aggregates eligible events for you. If a tutorial tells you to open a configuration tab and pick your top eight events, it predates the change and you can ignore that step.",[12,77,79],{"id":78},"what-capi-does-to-your-cost-per-result","What CAPI does to your cost per result",[17,81,82],{},"This is where the upstream investment pays off downstream. Meta reports that advertisers running a Conversions API setup for web events saw on average 17.8% lower cost per result than those without it. Treat that as directional. It is a figure from Meta itself, reported through trade press at Social Media Today and PPC Land in 2026, with no published methodology, and your own result depends on your store, your traffic mix, and how clean your event data is.",[17,84,85],{},"Put numbers on it to see the mechanism. Say you spend $2,000 in a week and make 100 sales. With only the browser Pixel reporting 70 of them, Meta sees a cost per result of about $28.57 ($2,000 divided by 70). Add the server feed, recover most of the 30 it was missing, and the same spend now reports against roughly 100 sales, a cost per result near $20. Nothing about your real business changed: you sold 100 either way. But the number Meta optimizes against, and the number on your dashboard, just dropped by close to a third, because the denominator finally reflects reality. That single mechanic is a large part of where the reported improvement comes from.",[17,87,88],{},"The rest of the mechanism is plausible even if the exact percentage is not gospel. Meta's delivery system optimizes toward the conversions it can see. Feed it 70% of your real purchases and it learns from a partial, biased sample, often the people easiest to track rather than the people most likely to buy. Feed it close to 100% with the server path filling the gaps, and it optimizes toward your actual buyers. Better input data, better targeting, lower cost per result. That is the chain, and it is why measurement work belongs before creative work, not after.",[17,90,91,92,96],{},"There is a quieter benefit too. With more conversions reported per dollar, your campaigns exit the learning phase faster, because Meta needs a threshold of attributed events before delivery stabilizes. A campaign starved of signal can stall short of that threshold even when the sales are genuinely happening, since the browser dropped the events that would have counted. Server-side reporting hands those events back, so the optimization engine reaches statistical confidence sooner and spends less of your budget guessing. If you have ever watched a converting campaign sit stuck in the ",[27,93,95],{"href":94},"\u002Fblog\u002Ffacebook-ad-learning-phase","learning phase",", thin signal is a prime suspect.",[17,98,99],{},"This is also why it is a mistake to judge CAPI by your reported cost-per-result moving in week one. The honest test is whether your Meta-reported conversions move closer to your real order count over a few weeks, and whether delivery steadies. The lower cost follows from better data, but it follows on Meta's optimization timeline, not overnight.",[12,101,103],{"id":102},"setting-up-capi-in-events-manager","Setting up CAPI in Events Manager",[17,105,106],{},"The setup has three pieces, and you complete all of them inside Events Manager. You need a Meta Business Manager first, because access tokens and system users live in Business settings.",[108,109,110,126],"table",{},[111,112,113],"thead",{},[114,115,116,120,123],"tr",{},[117,118,119],"th",{},"Step",[117,121,122],{},"Where it happens",[117,124,125],{},"What you do",[127,128,129,141,152],"tbody",{},[114,130,131,135,138],{},[132,133,134],"td",{},"Generate the access token",[132,136,137],{},"Events Manager, dataset, Settings",[132,139,140],{},"Open the Conversions API section and click Generate access token. Use a permanent or system-user token.",[114,142,143,146,149],{},[132,144,145],{},"Connect the source",[132,147,148],{},"Partner integration or your own server",[132,150,151],{},"Either flip on CAPI in your store platform, or send events to Meta's API endpoint from your server.",[114,153,154,157,160],{},[132,155,156],{},"Match events for dedup",[132,158,159],{},"Both the Pixel and the server",[132,161,162],{},"Send the same event_id and event_name from each path so Meta counts one conversion.",[17,164,165],{},"The access token is your server's credential. Generate it under Settings for your dataset, and choose a permanent or system-user token rather than a temporary one. Temporary tokens expire, and when they do your tracking goes quiet without any error you will notice until your numbers drop. Store the token like a password. It should never appear in a public repository or a client-side script.",[167,168,170],"h3",{"id":169},"creating-a-system-user-access-token-step-by-step","Creating a system-user access token, step by step",[17,172,173],{},"The token is easy to create badly. A token generated from the dataset's own Settings tab works, but the durable, team-safe option is a system user, a non-human account that owns the credential so it survives an employee leaving. The path is short once you know it. Open Business Settings (not Events Manager). Find Users, then System Users, and create one with an admin or employee role. Click Add Assets and assign your dataset, the same one your Pixel and CAPI share, to that system user with full control. Then click Generate New Token, choose the app the token belongs to, and tick the ads_management permission, the scope CAPI needs to write events. Copy the token once, because Meta shows it a single time, and store it as a server-side secret. Anyone holding it can write events into your dataset, so treat it accordingly.",[12,175,177],{"id":176},"choosing-your-connection-method","Choosing your connection method",[17,179,180],{},"You have four ways to send the server events, ordered here from least to most effort.",[17,182,183],{},"The easiest is the one-click Meta-enabled Conversions API, which Meta introduced in April 2026. It requires no developer work and stands up a basic server connection for you. For most small advertisers this is now the fastest honest starting point.",[17,185,186],{},"The next is a partner integration. If your store runs on a platform like Shopify, WooCommerce, or WordPress, open its Meta or server-side tracking panel, enter your dataset or Pixel ID and your access token, and enable the Conversions API. The platform handles the server calls and the event matching. A jewellery store on a hosted platform, for instance a brand like Bene Jewellery running showcase creative, can switch on server-side tracking entirely from the store's Meta settings, no code touched.",[17,188,189],{},"Between the partner integration and a full custom build sits a fourth option many teams already run: a server-side tagging container. This is a small server you host, often through your existing tag-management stack, that receives events from the browser and relays them to Meta's endpoint with the right parameters attached. It gives you most of the control of a direct integration without writing the API calls from scratch, which is why it is a common home for CAPI on larger sites. Treat it purely as the place your events pass through; the connection it makes is still server to Meta, the same as every other method here.",[17,191,192],{},"The most flexible, and the most work, is a direct API integration where your own server posts events to Meta's endpoint. This suits custom stacks, headless storefronts, and anyone who needs to send CRM or offline events the platform connectors do not cover. An aesthetic clinic that books consultations, a brand like UR Klinik, might send a server-side Lead event the moment an appointment is confirmed in its own system, so a booking made off Safari is still counted.",[17,194,195],{},[51,196],{"alt":197,"src":198},"Diagram comparing three CAPI connection methods, one-click Meta-enabled setup, partner platform integration, and a direct server API build, by setup effort and flexibility","\u002Fimages\u002Fblog\u002Ffacebook-conversions-api-setup-methods.webp",[17,200,201],{},"Whichever path you pick, the principle is identical. The server sends the same events the Pixel sends, tagged so Meta can reconcile the two.",[12,203,205],{"id":204},"which-events-to-send-and-which-matter-most","Which events to send, and which matter most",[17,207,208],{},"CAPI is only as useful as the events you feed it, and the guiding rule is simple: send the same set through the server that you send through the browser, so every path reports the same conversions. Meta's standard events are a fixed vocabulary, and an ecommerce funnel usually maps to a handful of them. PageView marks a page load, ViewContent a product page, then AddToCart, InitiateCheckout, AddPaymentInfo, and Purchase down the checkout path, with Search and AddToWishlist as optional shopping signals. A lead-gen or service business leans on Lead, CompleteRegistration, Subscribe, Contact, and Schedule instead. Meta's full standard list also includes CustomizeProduct, Donate, FindLocation, StartTrial, and SubmitApplication, so there is almost always a standard name that fits the action. Reach for a custom event only when none of the standard ones does.",[17,210,211],{},"Do not send everything at maximum volume and hope. The event you optimize a campaign toward, usually Purchase or Lead, is the one whose signal must be cleanest and most complete, so prioritize getting that one mirrored perfectly across both paths with a value and currency attached. Upper-funnel events like PageView and ViewContent are useful for building audiences and reading the funnel, but they are cheap and abundant; flooding the server with low-value events while the Purchase event is patchy is effort spent in the wrong place. Send the full funnel, but invest your setup care from the bottom up, starting with the conversion that actually pays you.",[17,213,214],{},"Spell each event name exactly as Meta defines it, capitalization included. Purchase is not the same event as purchase, and a casing slip is enough to break both deduplication and optimization without any warning on screen.",[12,216,218],{"id":217},"deduplication-sending-events-twice-without-counting-them-twice","Deduplication: sending events twice without counting them twice",[17,220,221],{},"Running both the Pixel and CAPI raises an obvious worry: if both send a purchase, does Meta count two? No, as long as you deduplicate correctly.",[17,223,224,225,229],{},"Deduplication hangs on two parameters that must match across the two sources: event_id and event_name. Generate a unique event_id for each conversion and send that exact ID from both the Pixel and the server, with the same event_name, for example Purchase. When Meta sees a matching event_id and event_name pair sent to the same dataset within a 48-hour window, per Meta's own Business Help Center, it keeps one and discards the duplicate. The deeper companion piece on ",[27,226,228],{"href":227},"\u002Fblog\u002Fmeta-pixel-capi-deduplication","Pixel and CAPI deduplication"," walks the edge cases in detail.",[17,231,232],{},"A frequent mistake is reaching for the wrong parameters. The fbp and fbc cookies, and hashed customer data like email and phone, are for matching, deciding which Meta user an event belongs to. They do not deduplicate. If your numbers look inflated, check that a shared event_id is genuinely flowing from both paths, not that your fbp is set. Get the ID match right and the redundancy is free.",[17,234,235],{},"In practice the event_id needs to be generated once, at the moment the conversion happens, and then carried to both senders. If the Pixel mints one ID and the server independently mints another for the same purchase, the two will never reconcile and Meta will count both. Most partner integrations solve this for you by writing a single ID into the page and reusing it server-side, which is one more reason the no-code paths are forgiving. On a custom build, the cleanest approach is to create the ID server-side when the order is confirmed and pass it down to the browser event, rather than the other way around, since the server is the source you most want to trust. Keep the event_name spelled identically too, exact case included, because Purchase and purchase are not the same event to Meta.",[12,237,239],{"id":238},"improving-event-match-quality","Improving Event Match Quality",[17,241,242],{},"Once events arrive and dedup cleanly, the next lever is how well Meta can match each event to a real person. Events Manager scores this per event as Event Match Quality, or EMQ, on a scale from 0 to 10, where a higher score means more of your events get matched to a Meta account, which Meta ties directly to more conversions and lower cost per result. Aim for the Good or Great band; in practice a score around 6 and up is a sensible working floor, with returns flattening as you climb.",[17,244,245],{},"Not every match parameter pulls the same weight, and that is where you should spend your effort. A hashed email and the click ID (fbc) carry the most signal, because they identify a person or a specific ad click precisely. A hashed phone number, the fbp browser cookie, the IP address, and the user-agent come next. Lower-precision fields like city, state, zip, and name add incremental lift but will not rescue a weak score on their own.",[108,247,248,261],{},[111,249,250],{},[114,251,252,255,258],{},[117,253,254],{},"Match parameter",[117,256,257],{},"Relative weight",[117,259,260],{},"Notes",[127,262,263,274,284,295,306],{},[114,264,265,268,271],{},[132,266,267],{},"Hashed email (em)",[132,269,270],{},"Highest",[132,272,273],{},"The single strongest identifier; send it wherever you hold it",[114,275,276,279,281],{},[132,277,278],{},"Click ID (fbc)",[132,280,270],{},[132,282,283],{},"Ties the event to a specific ad click",[114,285,286,289,292],{},[132,287,288],{},"Hashed phone (ph)",[132,290,291],{},"High",[132,293,294],{},"The second-strongest identifier after email",[114,296,297,300,303],{},[132,298,299],{},"Browser ID (fbp), IP, user-agent",[132,301,302],{},"Medium",[132,304,305],{},"Browser and session context",[114,307,308,311,314],{},[132,309,310],{},"City, state, zip, name",[132,312,313],{},"Lower",[132,315,316],{},"Incremental lift, not a substitute for email or phone",[17,318,319],{},"The Conversions API is especially good here because your server already holds customer details the browser may never have captured. A fitness or membership business, for example a brand like Fitness Achievers, can attach a hashed email and phone to each sign-up Lead it sends server-side, pushing EMQ into the Good or Great band and recovering attribution the browser alone would miss.",[167,321,323],{"id":322},"normalize-and-hash-but-not-everything","Normalize and hash, but not everything",[17,325,326],{},"Hashing matters for privacy and for matching. Normalize each field before you hash it: lowercase the email and trim the spaces, reduce the phone number to country code plus digits with symbols stripped, then run each through SHA-256 so Meta receives a fingerprint, not the raw detail. Get the normalization wrong and your hash will not match Meta's, so the parameter is wasted even though it was sent. Most platform integrations and Meta's API libraries normalize and hash for you when you map the fields correctly. Two parameters are the exception: never hash fbc or fbp, and never invent an fbc when there was no ad click. Send those two as plain strings, only when they actually exist.",[167,328,330],{"id":329},"reading-fbp-and-fbc-on-the-server","Reading fbp and fbc on the server",[17,332,333,334,338],{},"This is where most do-it-yourself builds lose their score. The fbp and fbc values live in cookies the browser Pixel sets, so a server sending events has to go and fetch them rather than assume they are present. Read the _fbp and _fbc cookies off the incoming request and attach them to the matching server event. If the _fbc cookie is missing but the landing URL carried an fbclid query parameter (the click tag Meta appends to ad links), you can reconstruct fbc yourself in Meta's format: the prefix fb, then the subdomain index, then the creation timestamp in milliseconds, then the fbclid, joined by dots, for example fb.1.1554763741205. followed by the fbclid value. A server build that never reads these cookies is the most common reason a technically working CAPI setup still posts a low EMQ, and it is worth checking first when your score looks stuck. For the full breakdown of the score and how each input moves it, see the ",[27,335,337],{"href":336},"\u002Fblog\u002Fmeta-event-match-quality-emq","Event Match Quality guide",".",[12,340,342],{"id":341},"sending-offline-in-store-and-crm-events","Sending offline, in-store, and CRM events",[17,344,345],{},"The browser only ever sees what happens on your website. A large share of real conversions happen somewhere it cannot watch: a sales call that closes, a contract signed in person, a purchase rung up at a physical till, a subscription that renews on your billing system months later. CAPI is the only way to feed those back to Meta, and for lead-gen and high-ticket businesses it is the main reason to adopt it, not pixel parity.",[17,347,348],{},"The pattern is the same as a web event: when the real conversion happens in your own system, fire a server-side event for it. A B2B software company can send a Lead when a demo is booked and a separate, higher-value event when the deal is signed in the CRM, so Meta optimizes toward revenue, not just form fills. A retailer can send an in-store Purchase keyed to a loyalty email. A subscription business can send a Subscribe or Purchase when a renewal bills. To match these back to the ad that started them, attach whatever identifiers you hold: a hashed email or phone is usually the strongest, since the original click cookies are long gone by the time a contract is signed.",[17,350,351,352,338],{},"There is one hard edge to respect on delayed events. Meta accepts an event_time up to seven days in the past, and if a single event in a batch carries a timestamp older than that, Meta rejects the entire request and processes none of it. So a contract that closes three weeks after the click cannot be sent with its true conversion date; you send it inside the seven-day window or it is refused. Plan your CRM and offline syncs to fire within that window rather than as a monthly batch. For the upstream half of a server-side lead flow, see the guide to ",[27,353,355],{"href":354},"\u002Fblog\u002Ffacebook-lead-ads","Facebook lead ads",[12,357,359],{"id":358},"consent-privacy-and-limited-data-use","Consent, privacy, and Limited Data Use",[17,361,362],{},"A fair worry about server-side tracking is that it sounds like a way to follow people who said no. It is not, and treating it that way is both wrong and a real legal risk. The Conversions API is bound by the same consent and privacy rules as the Pixel. If a visitor declines tracking in your consent banner, do not fire the server event for them either; the server path is not a loophole around a refusal. Wire your consent management so a no suppresses both the browser and the server event, and pass the visitor's consent state on the events you do send.",[17,364,365],{},"For United States state privacy laws such as California's CCPA and its CPRA amendment, Meta provides Limited Data Use, set through the data_processing_options fields on the event. Flagging an event for Limited Data Use tells Meta to handle that person's data in line with the state signal, and the flag works across the Pixel, the Conversions API, and offline events alike. For GDPR in the EU and UK, the principle is consent first: collect a lawful basis, honor withdrawals, and only then send the event. None of this is exotic. It is the same discipline a compliant Pixel already needs, extended to the second path. Done properly, CAPI is no more invasive than the browser tag it backs up; it simply survives the technical breakage the privacy era introduced.",[12,367,369],{"id":368},"common-mistakes-that-quietly-break-a-capi-build","Common mistakes that quietly break a CAPI build",[17,371,372],{},"Most broken setups fail in a handful of predictable ways, and nearly all of them are silent: the dashboard looks fine while the data underneath is wrong. Scan this list when your numbers feel off.",[374,375,376,384,390,396,402,408,414,420,426],"ul",{},[377,378,379,383],"li",{},[380,381,382],"strong",{},"Mismatched event names."," Purchase from the browser and purchase from the server are two different events to Meta, so they never deduplicate and you double-count. Spell every event name identically, capitalization included.",[377,385,386,389],{},[380,387,388],{},"The server minting its own event_id."," If the Pixel and the server each generate a separate ID for the same conversion, the pair cannot reconcile. Create one ID per conversion and send that exact value from both paths.",[377,391,392,395],{},[380,393,394],{},"Over-sending low-value events while the conversion event is patchy."," Flooding PageView is wasted effort if Purchase arrives without a value or fires only half the time.",[377,397,398,401],{},[380,399,400],{},"Missing value and currency on Purchase."," The event still counts as a conversion but tells Meta nothing about revenue, which quietly weakens value-based optimization and any ROAS reporting.",[377,403,404,407],{},[380,405,406],{},"A temporary token that expired."," Tracking goes quiet with no error you will notice until your numbers drop. Use a system-user token instead.",[377,409,410,413],{},[380,411,412],{},"Unhashed customer data."," Meta rejects raw email and phone sent for matching, so normalize and SHA-256 them first. Conversely, never hash fbc or fbp.",[377,415,416,419],{},[380,417,418],{},"Not reading fbp and fbc server-side,"," which strands your match quality at the low end of the scale.",[377,421,422,425],{},[380,423,424],{},"Two Pixels or two datasets firing for one site,"," splitting your signal in half and confusing dedup. Consolidate onto one dataset.",[377,427,428,431],{},[380,429,430],{},"An event_time older than seven days on an offline or CRM send,"," which makes Meta reject the whole request.",[12,433,435],{"id":434},"verifying-before-you-trust-the-numbers","Verifying before you trust the numbers",[17,437,438],{},"Do not assume the connection works because the setup screen turned green. Validate it with the Test Events tool, a tab in Events Manager. Trigger a real action on your site, a product view, an add to cart, a test purchase, then watch the tool to confirm the event appears and that it is labelled as arriving from both the Pixel and the server.",[17,440,441],{},"Two failure modes show up here. If an event appears only once when it should come from both sources, one path is not firing. If the same purchase appears twice and is not collapsed, your event_id is not matching across Pixel and server, and your dedup is broken. A purchase-led ecommerce brand, say one like Skinlycious running testimonial video to a checkout, should walk its own funnel end to end in Test Events and confirm Purchase fires once, carries a value and currency, and is deduplicated, before letting any campaign optimize toward it.",[17,443,444],{},"After the live walk-through, give the dataset a few days and check its diagnostics. Events Manager flags deduplication problems, missing required parameters, and dips in match quality, and those warnings are worth reading before they cost you delivery. A healthy CAPI setup shows your key events arriving from both the browser and the server, a deduplication rate that looks sane rather than zero, and an Event Match Quality that holds in the Good or Great band. If any of those slip, it is almost always a parameter that stopped being sent, a token that expired, or a platform update that reset a setting. Build a habit of glancing at the dataset health monthly, the same way you would reconcile a bank statement, because a silent measurement failure is the kind that goes unnoticed until a quarter of reporting is already wrong.",[17,446,447],{},"One more guardrail: confirm your Purchase value and currency are populated on the server event, not just the browser one. Optimization toward revenue, and any return-on-ad-spend reporting you do later, depends on Meta receiving a number it can sum. A purchase event that arrives without a value still counts as a conversion but tells Meta nothing about how much that conversion was worth, which quietly weakens value-based optimization.",[17,449,450,451,455,456,460],{},"Clean it up at this stage and everything downstream inherits trustworthy signal. Reporting reconciles with your real orders. Optimization learns from your actual buyers. And once that signal is solid, the rest of the creative loop, researching what is working in the ",[27,452,454],{"href":453},"\u002Fblog\u002Fmeta-ad-library-guide","Meta Ad Library",", building and launching the next round, and reading ",[27,457,459],{"href":458},"\u002Fblog\u002Ffacebook-ad-reporting","Facebook ad reporting"," you can believe, all runs on a foundation that is finally telling the truth. Tools like AdPlay.ai sit on top of that clean signal rather than installing it; CAPI is Meta-native plumbing you set up in Events Manager and your platform, then keep working as you scale.",[17,462,463,464,468],{},"For the steps just upstream of this one, see the companion guide on ",[27,465,467],{"href":466},"\u002Fblog\u002Fmeta-pixel-setup","Meta Pixel setup",", since the Pixel and CAPI are configured as a pair, not in isolation.",{"title":470,"searchDepth":471,"depth":471,"links":472},"",2,[473,474,475,476,477,481,482,483,484,488,489,490,491],{"id":14,"depth":471,"text":15},{"id":37,"depth":471,"text":38},{"id":60,"depth":471,"text":61},{"id":78,"depth":471,"text":79},{"id":102,"depth":471,"text":103,"children":478},[479],{"id":169,"depth":480,"text":170},3,{"id":176,"depth":471,"text":177},{"id":204,"depth":471,"text":205},{"id":217,"depth":471,"text":218},{"id":238,"depth":471,"text":239,"children":485},[486,487],{"id":322,"depth":480,"text":323},{"id":329,"depth":480,"text":330},{"id":341,"depth":471,"text":342},{"id":358,"depth":471,"text":359},{"id":368,"depth":471,"text":369},{"id":434,"depth":471,"text":435},null,"neutral","Set up the Facebook Conversions API: connect server-side events to Meta, pair Pixel with CAPI, dedup cleanly, and stop iOS-era under-reporting.",[496,500,504],{"brand":497,"hook":498,"format":499},"Skinlycious","Testimonial ad for skin that cleared after eight weeks","Video",{"brand":501,"hook":502,"format":503},"Bene Jewellery","Showcase ad for a layered gold pendant set","Static",{"brand":505,"hook":506,"format":507},"UR Klinik","Before and After ad for a clinic facial result","UGC","md",[510,513,516,519,522,525,528,531],{"question":511,"answer":512},"What is the Facebook Conversions API and how is it different from the Pixel?","The Conversions API is a server-side connection that sends events to Meta directly from your server or platform, instead of from the visitor's browser. The Pixel is a browser tag, so it can be blocked by ad blockers, cookie limits, and tracking opt-outs. CAPI is not a replacement for the Pixel. The 2026 best practice is to run both, sending the same events through each path, so the server feed backfills whatever the browser drops.",{"question":514,"answer":515},"Is the Conversions API GDPR and CCPA compliant?","It can be, and it is bound by the same consent rules as the Pixel. CAPI is not a way around a no. If a visitor declines tracking in your consent banner, suppress both the browser and the server event for them, and pass the consent state on the events you do send. For US state laws like California's CCPA, Meta offers Limited Data Use, set through the data_processing_options fields on the event, which works across the Pixel, the Conversions API, and offline events. For GDPR, collect a lawful basis first and honor withdrawals. Sending data server-side is not inherently sneaky; it respects the same refusal the Pixel does.",{"question":517,"answer":518},"How do I get a Conversions API access token?","Open Events Manager, select your dataset (often the same ID as your existing Pixel), then go to Settings and find the Conversions API section. Click Generate access token. For a durable setup, create a system user in Business Settings and generate the token there with the ads_management permission, rather than a temporary token that expires and silently stops your tracking. Treat the token like a password and never commit it to a public repository.",{"question":520,"answer":521},"Do I need a developer to set up the Conversions API?","Usually no. If your store runs on a platform like Shopify, WooCommerce, or WordPress, open its Meta or server-side tracking panel, paste in your Pixel or dataset ID and your access token, and enable the Conversions API. In April 2026 Meta also added a one-click Meta-enabled Conversions API that needs no developer work at all. You only need a developer for a custom or headless stack, or to send offline and CRM events the platform connectors do not cover.",{"question":523,"answer":524},"How does event deduplication work with Pixel and CAPI?","Send the same event_id and the same event_name from both the Pixel and the Conversions API to the same dataset. When Meta sees a matching pair within a 48-hour window, per Meta's documentation, it keeps one and drops the duplicate. The fbp and fbc parameters and hashed customer data improve how well Meta matches the event to a person, but they do not handle deduplication. The event_id plus event_name match is what prevents double-counting, and the event name must match exactly, capitalization included.",{"question":526,"answer":527},"What is Event Match Quality and how do I improve it?","Event Match Quality, or EMQ, is a score from 0 to 10 shown per event in Events Manager that rates how well your event data matches a Meta user, per Meta's Business Help Center. Aim for the Good or Great band; around 6 and up is a sensible working floor, with diminishing returns above it. You raise it by passing more clean first-party parameters with each event, with a hashed email and the click ID (fbc) carrying the most weight, then a hashed phone, the fbp cookie, and IP. More accurate customer information means more events get attributed.",{"question":529,"answer":530},"How do I test that my Conversions API events are arriving?","Use the Test Events tool, a tab in Events Manager. Trigger a real action on your site, then watch the tool to confirm the event appears and is labelled as coming from both the Pixel and the server. If you see the same purchase listed twice without being deduplicated, your event_id is not matching across the two sources. Fix that before you let a campaign optimize toward the event.",{"question":532,"answer":533},"Why are my Pixel conversions lower than my actual order count?","Because the browser loses events before they reach Meta. Apple's App Tracking Transparency limits in-app tracking, where only about half of users opt in globally per AppsFlyer in 2024, and Safari's Intelligent Tracking Prevention caps the cookies that carry click attribution to as little as 24 hours. Both strip browser-side signal. The Conversions API sends those same events server to server, recovering much of the under-reported gap, though the attribution window means Meta still will not match every order.","\u002Fimages\u002Fblog\u002Ffacebook-conversions-api-setup-hero.webp","Your order confirmations and your Meta reporting no longer agree, and the gap keeps widening. The cause is rarely your campaign. It is that the browser tag carrying your conversions gets blocked, capped, and opted out of before half of it ever reaches Meta. The Conversions API is the fix that the iOS era forced on every advertiser: a server-side feed that carries the events a browser can no longer be trusted to deliver. Set it up once, pair it with your Pixel, and the rest of your optimization finally has clean signal to work with.",{},true,"\u002Fblog\u002Ffacebook-conversions-api-setup","2026-10-23",{"title":5,"description":494},[542,546,549,553,556,559,563,566,569,572,575,578,581,584,587,591],{"label":543,"url":544,"year":545},"Social Media Today, Meta simplifies ad performance elements","https:\u002F\u002Fwww.socialmediatoday.com\u002Fnews\u002Fmeta-simplifies-ad-performance-elements\u002F817629\u002F","2026",{"label":547,"url":548,"year":545},"PPC Land, Meta upgrades Pixel and Conversions API to close the gap for small advertisers","https:\u002F\u002Fppc.land\u002Fmeta-upgrades-pixel-and-conversions-api-to-close-the-gap-for-small-advertisers\u002F",{"label":550,"url":551,"year":552},"AppsFlyer newsroom, ATT data findings three years post-ATT","https:\u002F\u002Fwww.appsflyer.com\u002Fcompany\u002Fnewsroom\u002Fpr\u002Fatt-data-findings\u002F","2024",{"label":554,"url":555,"year":552},"Stape, Safari ITP: Everything You Need to Know","https:\u002F\u002Fstape.io\u002Fblog\u002Fsafari-itp",{"label":557,"url":558,"year":545},"Meta for Developers, Conversions API Get Started","https:\u002F\u002Fdevelopers.facebook.com\u002Fdocs\u002Fmarketing-api\u002Fconversions-api\u002Fget-started\u002F",{"label":560,"url":561,"year":562},"Meta for Developers, Handling Duplicate Pixel and Conversions API Events","https:\u002F\u002Fdevelopers.facebook.com\u002Fdocumentation\u002Fads-commerce\u002Fconversions-api\u002Fdeduplicate-pixel-and-server-events","2025",{"label":564,"url":565,"year":545},"Meta Business Help Center, About deduplication for Meta Pixel and Conversions API events","https:\u002F\u002Fwww.facebook.com\u002Fbusiness\u002Fhelp\u002F823677331451951",{"label":567,"url":568,"year":545},"Meta for Developers, Sending Offline Events Using the Conversions API","https:\u002F\u002Fdevelopers.facebook.com\u002Fdocumentation\u002Fads-commerce\u002Fconversions-api\u002Foffline-events",{"label":570,"url":571,"year":545},"Meta for Developers, Customer Information Parameters","https:\u002F\u002Fdevelopers.facebook.com\u002Fdocumentation\u002Fads-commerce\u002Fconversions-api\u002Fparameters\u002Fcustomer-information-parameters",{"label":573,"url":574,"year":545},"Meta for Developers, ClickID and the fbp and fbc Parameters","https:\u002F\u002Fdevelopers.facebook.com\u002Fdocs\u002Fmarketing-api\u002Fconversions-api\u002Fparameters\u002Ffbp-and-fbc",{"label":576,"url":577,"year":545},"Meta Business Help Center, About Limited Data Use","https:\u002F\u002Fwww.facebook.com\u002Fbusiness\u002Fhelp\u002F1151133471911882",{"label":579,"url":580,"year":545},"Meta Business Help Center, About Attribution Models and Attribution Settings","https:\u002F\u002Fwww.facebook.com\u002Fbusiness\u002Fhelp\u002F460276478298895",{"label":582,"url":583,"year":545},"Meta Business Help Center, About Event Match Quality","https:\u002F\u002Fwww.facebook.com\u002Fbusiness\u002Fhelp\u002F765081237991954",{"label":585,"url":586,"year":545},"Meta Business Help Center, About Aggregated Event Measurement","https:\u002F\u002Fwww.facebook.com\u002Fbusiness\u002Fhelp\u002F721422165168355",{"label":588,"url":589,"year":590},"DEPT, Meta's removal of Aggregated Event Measurement and its implications for advertisers (dates the eight-event cap removal to 15 May 2023)","https:\u002F\u002Fwww.deptagency.com\u002Fen-dk\u002Finsight\u002Fmetas-removal-of-aggregated-event-measurement-aem-and-its-implications-for-advertisers\u002F","2023",{"label":592,"url":593,"year":545},"Meta for Developers, Meta Pixel Standard Events Reference","https:\u002F\u002Fdevelopers.facebook.com\u002Fdocs\u002Fmeta-pixel\u002Freference",[595,599,602,606,609,612,615,619,622,626,629,633],{"label":596,"value":597,"source":598},"Lower cost per result for advertisers running a Conversions API setup for web events vs without (Meta's own figure, directional)","17.8% lower","Social Media Today, reporting Meta, 2026",{"label":600,"value":597,"source":601},"Lower cost per result with a Conversions API setup, second neutral confirmation of the same Meta figure (directional)","PPC Land, reporting Meta, 2026",{"label":603,"value":604,"source":605},"Global App Tracking Transparency opt-in rate three years after launch, the share of app users who allow tracking","50% global","AppsFlyer, 2024",{"label":607,"value":608,"source":605},"US App Tracking Transparency opt-in rate, why browser and app-only signal under-reports","44% US",{"label":610,"value":611,"source":605},"UK App Tracking Transparency opt-in rate","46% UK",{"label":613,"value":614,"source":605},"Share of gaming apps showing the ATT prompt, context that the prompt is near-universal in-app","84% of gaming apps",{"label":616,"value":617,"source":618},"Safari Intelligent Tracking Prevention cap on JavaScript-set first-party cookies, capping the lifespan of click IDs the Pixel relies on","7-day cookie lifespan","Stape, 2024",{"label":620,"value":621,"source":618},"Safari ITP cap on cookies set when URLs include query parameters, the shortest cap and the fastest signal decay","24-hour cookie lifespan",{"label":623,"value":624,"source":625},"Meta deduplication window: matching event_id sent by Pixel and CAPI within this window counts once","48-hour window","Meta Business Help Center, 2026",{"label":627,"value":628,"source":625},"Event Match Quality score range shown per event in Events Manager, with a Good or Great target","0 to 10 scale",{"label":630,"value":631,"source":632},"Maximum age of an event_time the Conversions API will accept; an older timestamp makes Meta reject the whole request","7 days","Meta for Developers, 2026",{"label":634,"value":635,"source":625},"Meta's default attribution window after iOS 14.5, the period in which a conversion is credited to an ad","7-day click, 1-day view","blog\u002Ffacebook-conversions-api-setup","IS9MHmYnyHa9PFmUzy1AOldNiz5oi6rvLWuQfETjHvY",1786093698273]