{"id":3423,"date":"2026-05-18T10:29:53","date_gmt":"2026-05-18T10:29:53","guid":{"rendered":"https:\/\/hyros.com\/updates\/?p=3423"},"modified":"2026-08-03T04:30:16","modified_gmt":"2026-08-03T04:30:16","slug":"meta-conversions-api","status":"publish","type":"post","link":"https:\/\/hyros.com\/updates\/meta-conversions-api\/","title":{"rendered":"Facebook Conversions API (CAPI) Setup: Complete Guide"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Here is what most Meta advertisers do not want to hear: if you are running only the Pixel in 2026, more than half your conversions are invisible to Meta&#8217;s algorithm. That is not a scare tactic. That is what happens when you rely on browser-side JavaScript to track a world full of ad blockers and iOS privacy changes. I originally built Hyros because I was scaling ad spend on Meta and the numbers I was seeing made no sense &#8212; campaigns that were clearly working looked like they were barely breaking even. The root cause was always the same. The data pipeline was broken. The Facebook Conversions API (CAPI) is Meta&#8217;s server-side tracking interface that sends conversion events &#8212; purchases, leads, add-to-carts &#8212; directly from an advertiser&#8217;s server to Meta&#8217;s servers, bypassing the browser entirely. CAPI was introduced in 2020 and became the Meta-recommended setup after iOS 14.5 App Tracking Transparency launched in April 2021, which caused the Meta Pixel to lose visibility on a large share of iPhone conversions. Running CAPI alongside the Pixel (what Meta calls a &#8220;redundant setup&#8221;) gives advertisers more complete data for optimization and reduces cost per action. According to <a href=\"https:\/\/www.facebook.com\/business\/news\/pixel-conversionsapi-updates\" rel=\"noopener nofollow\">Meta&#8217;s April 2026 announcement<\/a>, advertisers with a Conversions API setup for web events saw an average 17.8% lower cost per result compared to those without CAPI.<\/p>\n\n\n\n<div class=\"tldr\"><h2>TL;DR<\/h2>\n<p>The Meta Conversions API sends your conversion data server-to-server, sidestepping the browser problems (ad blockers, cookie expiration, iOS App Tracking Transparency) that have meaningfully degraded Pixel accuracy on iOS traffic. There are three ways to set it up: manual API integration where you write the HTTP POST requests yourself, Meta&#8217;s hosted CAPI Gateway that runs on AWS CloudFormation with minimal code, or a managed attribution platform like Hyros that handles CAPI as part of its server-side tracking layer. Regardless of which path you choose, event deduplication is non-negotiable &#8212; every CAPI event needs an <code>event_id<\/code> that matches the corresponding Pixel event, or you will double-count conversions. Your Event Match Quality score should be above 6.0 at minimum and ideally above 8.0 for strong identity matching. After iOS 14.5 removed tracking consent from roughly 96% of US iPhone users initially, running CAPI alongside the Pixel is no longer a nice-to-have. It is the minimum standard for accurate Meta Ads measurement.<\/p><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">What Is the Facebook Conversions API?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Conversions API is a server-side data pipeline. That phrase matters because it describes exactly how it differs from the Pixel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Meta Pixel is JavaScript code that runs in the user&#8217;s browser. When someone completes a purchase, the Pixel fires a browser-side event and sends it to Meta. The problem is that this event has to survive a minefield: ad blockers that prevent the script from loading, Safari&#8217;s Intelligent Tracking Prevention that caps cookies to 7 days (sometimes 24 hours), iOS App Tracking Transparency that blocks cross-app tracking altogether, and plain old page-load failures.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CAPI bypasses all of that. When a conversion happens, your server sends the event data directly to Meta&#8217;s Graph API via an HTTPS POST request. The data never touches the browser. Ad blockers cannot intercept what they cannot see. Cookie restrictions do not apply because there is no cookie involved. And iOS privacy restrictions are irrelevant to a server-to-server data transfer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each CAPI event includes hashed customer identifiers &#8212; email address, phone number, first name, last name &#8212; that Meta uses to match the event back to a specific user in its system. When it finds a match, and that user previously interacted with one of your ads, Meta attributes the conversion. The hashing uses SHA-256, which means you never send raw customer data to Meta; you send an irreversible hash.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In May 2025, Meta retired the separate Offline Conversions API entirely. All offline conversion tracking now flows through CAPI. That consolidation made CAPI the single server-side entry point for every type of conversion data you want Meta to have.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why Did CAPI Become Essential After iOS 14.5?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Apple&#8217;s App Tracking Transparency framework launched in April 2021 and fundamentally changed digital ad measurement. ATT requires apps to ask users for explicit permission to track them across apps and websites. The result was immediate and dramatic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">According to Flurry Analytics, which tracked behavior across over 1 million mobile apps, roughly 96% of US iPhone users initially opted out of tracking. That number has softened over time &#8212; current opt-in rates sit at approximately 35-37% according to Adjust&#8217;s Q2 2025 data &#8212; but the damage to browser-based tracking was structural.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Meta felt the impact. During its Q4 2021 earnings call in February 2022, Meta CFO David Wehner projected approximately $10 billion in 2022 ad revenue loss from iOS ATT changes. That was Meta&#8217;s own money, not advertiser losses. The downstream effect on advertisers was arguably worse: the Pixel lost the ability to see conversions from the majority of iPhone users, and Meta&#8217;s attribution window permanently collapsed from 28-day click to 7-day click, 1-day view.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The practical outcome for advertisers running Pixel-only tracking in 2026 is bleak. Stores using only the Pixel routinely lose visibility on a meaningful share of iOS conversions. Meta itself stopped publishing a single accuracy figure because the gap varies by traffic mix, consent rates, and ad-blocker prevalence. Your ROAS dashboard shows a fraction of what is actually happening.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CAPI was Meta&#8217;s answer. By receiving conversion data server-side with hashed PII for identity matching, CAPI recovers a significant portion of what the Pixel lost. Advertisers running CAPI alongside the Pixel recover meaningful event volume the Pixel alone cannot capture. Per <a href=\"https:\/\/www.facebook.com\/business\/news\/pixel-conversionsapi-updates\" rel=\"noopener nofollow\">Meta&#8217;s April 2026 update<\/a>, web-event CAPI setups averaged 17.8% lower cost per result versus no-CAPI setups. Not because the ads got better &#8212; because the algorithm finally has enough data to optimize properly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a deeper look at how iOS 14.5 reshaped the entire attribution landscape, see our guide on <a href=\"https:\/\/hyros.com\/updates\/\/learn\/ios-14-changed-attribution\/\" rel=\"noopener\">how iOS 14.5 changed ad attribution<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">CAPI vs the Meta Pixel: How Do They Compare?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1429\" src=\"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-17-8-percent-lower-cost-per-result-scaled.png\" alt=\"Circuit board statistic showing 17.8% lower cost per result with Conversions API\" class=\"wp-image-3426\" srcset=\"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-17-8-percent-lower-cost-per-result-scaled.png 2560w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-17-8-percent-lower-cost-per-result-300x167.png 300w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-17-8-percent-lower-cost-per-result-1024x572.png 1024w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-17-8-percent-lower-cost-per-result-768x429.png 768w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-17-8-percent-lower-cost-per-result-1536x857.png 1536w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-17-8-percent-lower-cost-per-result-2048x1143.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The Pixel and CAPI are not competing technologies. They are complementary. But understanding where each one works &#8212; and where it fails &#8212; matters for setup decisions.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th>Meta Pixel<\/th><th>Conversions API<\/th><\/tr><\/thead><tbody><tr><td>Data source<\/td><td>User&#8217;s browser<\/td><td>Your server<\/td><\/tr><tr><td>Cookie dependent<\/td><td>Yes &#8212; relies on JavaScript cookies<\/td><td>No &#8212; server-to-server<\/td><\/tr><tr><td>Ad blocker resistant<\/td><td>No &#8212; blocked by all major ad blockers<\/td><td>Yes &#8212; invisible to ad blockers<\/td><\/tr><tr><td>iOS ATT impact<\/td><td>Severe &#8212; loses most iPhone conversion data<\/td><td>Minimal &#8212; server-side data unaffected by ATT<\/td><\/tr><tr><td>Event deduplication<\/td><td>N\/A (sends to Meta directly)<\/td><td>Must include matching <code>event_id<\/code><\/td><\/tr><tr><td>Setup difficulty<\/td><td>Low &#8212; paste a JavaScript snippet<\/td><td>Medium to high &#8212; requires server access or integration platform<\/td><\/tr><tr><td>Ongoing cost<\/td><td>Free<\/td><td>Free (manual), $10-$400\/mo (Gateway hosting), or included in platform pricing<\/td><\/tr><tr><td>Matching method<\/td><td>Cookie-based (fbp, fbc)<\/td><td>PII-based (hashed email, phone) + cookies<\/td><\/tr><tr><td>Real-time<\/td><td>Yes &#8212; fires on page load<\/td><td>Near real-time &#8212; depends on server implementation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The important takeaway: the Pixel alone leaves measurable conversions on the table. Running both together is now Meta&#8217;s recommended setup. The Pixel catches what it can from the browser, CAPI catches what the browser cannot deliver.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Do You Set Up Facebook CAPI?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1429\" src=\"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-match-quality-parameters-scaled.png\" alt=\"Traces of decreasing width showing how much each parameter adds to Event Match Quality, hashed email contributing the most\" class=\"wp-image-3427\" srcset=\"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-match-quality-parameters-scaled.png 2560w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-match-quality-parameters-300x167.png 300w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-match-quality-parameters-1024x572.png 1024w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-match-quality-parameters-768x429.png 768w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-match-quality-parameters-1536x857.png 1536w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-match-quality-parameters-2048x1143.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">There are three paths. Manual API integration gives you full control but requires developer resources. Meta&#8217;s CAPI Gateway handles the infrastructure for you at a hosting cost. And managed platforms like Hyros handle CAPI as part of their broader attribution system.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regardless of which path you pick, the setup follows six core steps.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Create a dataset in Meta Events Manager<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Meta renamed &#8220;Pixels&#8221; to &#8220;datasets&#8221; in its backend terminology, though the interface still uses both words interchangeably. Go to Meta Events Manager, select your business, and either create a new dataset or use your existing Pixel ID. The dataset ID is the same string you have been using as your Pixel ID &#8212; it is a 15-16 digit number.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This dataset will receive events from both your Pixel (browser-side) and CAPI (server-side). Both channels feed into the same dataset.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Generate a CAPI access token<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Go to Business Settings in your Meta Business Suite. Under Data Sources, find your dataset (Pixel). Open Settings and scroll to the Conversions API section. Click &#8220;Generate Access Token.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This token authenticates your server&#8217;s POST requests to Meta. Treat it like a password. It does not expire automatically, but you can revoke and regenerate it at any time. Store it in your server&#8217;s environment variables &#8212; never hardcode it in client-facing code.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Choose your integration path<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Manual API integration.<\/strong> You write the HTTP POST requests yourself. The endpoint is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST https:\/\/graph.facebook.com\/v19.0\/{DATASET_ID}\/events\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Each request includes your access token and a JSON payload with the event data. Here is a minimal cURL example for a purchase event:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST \\\n  \"https:\/\/graph.facebook.com\/v19.0\/YOUR_PIXEL_ID\/events\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"data\": &#91;{\n      \"event_name\": \"Purchase\",\n      \"event_time\": 1713100000,\n      \"event_id\": \"order_12345_1713100000\",\n      \"event_source_url\": \"https:\/\/yourstore.com\/thank-you\",\n      \"action_source\": \"website\",\n      \"user_data\": {\n        \"em\": &#91;\"309a0a5c3e211326ae75b3e33b5e2794ea5a391ffb220657de92b6acbf12cdd7\"],\n        \"ph\": &#91;\"254aa248acb47dd654ca3ea53f48c2c26d641550feae8e25841aeac7b2385e49\"],\n        \"client_ip_address\": \"123.45.67.89\",\n        \"client_user_agent\": \"Mozilla\/5.0...\",\n        \"fbc\": \"fb.1.1713099000.ABCdef123\",\n        \"fbp\": \"fb.1.1713098000.987654321\"\n      },\n      \"custom_data\": {\n        \"currency\": \"USD\",\n        \"value\": 149.99,\n        \"order_id\": \"12345\"\n      }\n    }],\n    \"access_token\": \"YOUR_ACCESS_TOKEN\"\n  }'\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>em<\/code> and <code>ph<\/code> fields are SHA-256 hashed. The <code>fbc<\/code> and <code>fbp<\/code> values come from the Meta cookies set by the Pixel in the user&#8217;s browser &#8212; you pass them through to CAPI unhashed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CAPI Gateway.<\/strong> Meta provides a pre-built infrastructure package that deploys on AWS via CloudFormation. You click through a setup wizard in Events Manager, authorize your AWS account, and Meta spins up the server infrastructure. Hosting costs run $10-$400 per month depending on event volume. The advantage is that you do not write API code. The downside is you are managing an AWS stack.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Managed platform.<\/strong> Attribution platforms like Hyros handle CAPI integration as part of their tracking setup. You connect your Meta account, Hyros sends events through CAPI automatically, deduplication is built in, and you do not touch API code or cloud infrastructure. The cost rolls into your platform subscription &#8212; no separate line item, no AWS bill to manage.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Send a test event<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before going live, use Meta&#8217;s Test Events tool in Events Manager. Open your dataset, click &#8220;Test Events,&#8221; and find the test event code. Add this test code to your CAPI request payload as <code>test_event_code<\/code>. Fire a test event and confirm it appears in the Test Events tab.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Test events do not affect your live data or ad optimization. They exist purely for debugging. Remove the test code before pushing to production.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Implement event deduplication<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This is where most CAPI implementations break. When you run CAPI alongside the Pixel, both systems send the same event to Meta. Without deduplication, Meta counts the purchase twice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deduplication works through the <code>event_id<\/code> field. You generate a unique identifier on the client side (typically a combination of order ID and timestamp) and attach it to both the Pixel event and the CAPI event. When Meta receives two events with the same <code>event_id<\/code>, same event name, and same dataset ID within 48 hours, it keeps one and discards the duplicate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The most common mistake: generating different IDs for the Pixel event and the CAPI event. If the Pixel sends <code>event_id: \"purchase_12345\"<\/code> and your server sends <code>event_id: \"order_12345\"<\/code>, Meta treats them as two separate purchases. Your conversion count doubles, your CPA looks half of reality, and your optimization data is poisoned.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Generate the <code>event_id<\/code> once, on the client side. Pass it to the Pixel. Also pass it to your server (via a hidden form field, cookie, or data layer variable) so that CAPI sends the identical value.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Verify your Event Match Quality score<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Event Match Quality (EMQ) measures how well Meta can match your server-side events to real Meta user profiles. Check it in Events Manager under the Event Match Quality column next to each event type.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>EMQ Score<\/th><th>What it means<\/th><\/tr><\/thead><tbody><tr><td>Below 6.0<\/td><td>Poor &#8212; significant matching gaps, CAPI is underperforming<\/td><\/tr><tr><td>6.0-7.0<\/td><td>Acceptable &#8212; basic matching working, room to improve<\/td><\/tr><tr><td>7.0-8.0<\/td><td>Good &#8212; strong identity resolution<\/td><\/tr><tr><td>Above 8.0<\/td><td>Excellent &#8212; near-complete matching<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To improve your EMQ score, send more matching parameters with each event:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hashed email (em):<\/strong> Adds 3-4 EMQ points. This is the single highest-impact parameter.<\/li>\n\n\n\n<li><strong>Hashed phone (ph):<\/strong> Adds 2-3 points.<\/li>\n\n\n\n<li><strong>First\/last name (fn, ln):<\/strong> Adds 1-2 points combined.<\/li>\n\n\n\n<li><strong>fbp cookie:<\/strong> Adds about 2 points.<\/li>\n\n\n\n<li><strong>fbc cookie:<\/strong> Adds 1-2 points.<\/li>\n\n\n\n<li><strong>IP address and user agent:<\/strong> Adds about 0.5 points each.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Adding hashed email alone typically improves EMQ by up to 4 points. If your score is sitting at 4.0, adding email gets you to roughly 8.0. That one parameter can be the difference between CAPI barely working and CAPI capturing nearly everything.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Are the Three Integration Paths? (Comparison)<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1429\" src=\"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-three-capi-integration-paths-scaled.png\" alt=\"Three circuit zones comparing manual API for free, CAPI Gateway at 10 to 400 a month, and a managed platform included in pricing\" class=\"wp-image-3428\" srcset=\"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-three-capi-integration-paths-scaled.png 2560w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-three-capi-integration-paths-300x167.png 300w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-three-capi-integration-paths-1024x572.png 1024w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-three-capi-integration-paths-768x429.png 768w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-three-capi-integration-paths-1536x857.png 1536w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-three-capi-integration-paths-2048x1143.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Factor<\/th><th>Manual API<\/th><th>CAPI Gateway<\/th><th>Managed Platform (e.g., Hyros)<\/th><\/tr><\/thead><tbody><tr><td>Developer required<\/td><td>Yes &#8212; backend engineering needed<\/td><td>Minimal &#8212; wizard-guided AWS setup<\/td><td>No &#8212; platform handles everything<\/td><\/tr><tr><td>Hosting cost<\/td><td>None (runs on your existing server)<\/td><td>$10-$400\/mo (AWS)<\/td><td>Included in platform pricing<\/td><\/tr><tr><td>Setup time<\/td><td>2-5 days for experienced developer<\/td><td>1-2 hours<\/td><td>Under 1 hour in most cases<\/td><\/tr><tr><td>Deduplication<\/td><td>You build it<\/td><td>Partially automated<\/td><td>Fully automated<\/td><\/tr><tr><td>EMQ optimization<\/td><td>You tune manually<\/td><td>Basic tuning available<\/td><td>Platform optimizes automatically<\/td><\/tr><tr><td>Maintenance<\/td><td>Ongoing &#8212; API version updates, schema changes<\/td><td>AWS monitoring required<\/td><td>Platform maintains the integration<\/td><\/tr><tr><td>Multi-platform<\/td><td>Meta only unless you build more<\/td><td>Meta only<\/td><td>Hyros sends to Meta, Google, TikTok from one integration<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For a solo DTC brand with a developer on staff, manual integration works. For agencies managing 10+ client accounts, the maintenance burden of manual implementations across every client makes a managed platform worth the cost difference. For mid-market brands who want to avoid both extremes, the CAPI Gateway offers a middle path.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Are the Most Common CAPI Setup Mistakes?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1429\" src=\"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-deduplication-scaled.png\" alt=\"Two traces merging at a junction, one continuing and one dead-ending, showing event deduplication within 48 hours\" class=\"wp-image-3429\" srcset=\"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-deduplication-scaled.png 2560w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-deduplication-300x167.png 300w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-deduplication-1024x572.png 1024w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-deduplication-768x429.png 768w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-deduplication-1536x857.png 1536w, https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-event-deduplication-2048x1143.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve seen this go wrong in so many accounts. Five mistakes show up over and over.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Missing or mismatched event_id.<\/strong> Already covered above, but it bears repeating because it is the single most destructive error. Double-counted conversions poison every downstream number &#8212; reported ROAS, algorithm optimization, scaling decisions. Check your Events Manager for duplicate event warnings. If your conversion count jumped after enabling CAPI, deduplication is probably broken.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sending unhashed PII.<\/strong> CAPI requires SHA-256 hashing on all personally identifiable information: email, phone, first name, last name, city, state, zip, country, date of birth, and gender. If you send raw (unhashed) data, Meta will either reject the event or process it with a privacy violation warning. Some implementations hash on the client side and re-hash on the server, sending a double-hashed value that Meta cannot match. Hash once. On the server. Right before you send.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Low Event Match Quality from incomplete data.<\/strong> Sending only an IP address and user agent gives you an EMQ of 2-3. Meta cannot reliably match that to a user. You need hashed email at minimum. Hashed phone, the fbp cookie, and the fbc cookie bring you from &#8220;barely functional&#8221; to &#8220;excellent.&#8221; Every missing parameter is a missed conversion match.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Firing events before consent.<\/strong> In GDPR and CCPA jurisdictions, you cannot fire CAPI events before the user has given consent for data processing. Some implementations send the CAPI event on page load (before the cookie consent banner is accepted), which creates a legal liability. The Pixel typically waits for consent via a consent management platform. Your CAPI implementation must do the same.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ignoring the event_time field.<\/strong> CAPI accepts events with timestamps up to 7 days in the past. But if your server sends the wrong timestamp (common when the server timezone differs from UTC), Meta may reject the event or attribute it to the wrong time window. Always send Unix timestamps in seconds, in UTC.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Does Hyros Handle CAPI Automatically?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hyros handles CAPI as part of its server-side attribution layer. You connect your Meta Business account during onboarding, and Hyros manages the rest &#8212; sending conversion events through CAPI, deduplicating against the Pixel, optimizing Event Match Quality, and maintaining the integration as Meta updates its API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But Hyros does something CAPI alone cannot do: it provides independent attribution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CAPI feeds data back to Meta. It improves Meta&#8217;s ability to count and optimize. That is valuable. But CAPI still operates within Meta&#8217;s measurement system. Meta still decides what gets credit. Meta still cannot see touchpoints on Google, TikTok, email, or organic search.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s imagine a user who clicks your Meta ad on Monday. They do not buy. They click a Google search ad on Thursday. Still do not buy. They open your email on day 18 and finally convert at $300. Meta sees nothing &#8212; the conversion happened outside its 7-day click window. Google claims full credit. Your email platform claims full credit. Hyros sees the entire path and shows you which channel actually started that journey. That is a completely different optimization signal than what any single platform can give you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">According to an <a href=\"https:\/\/checkthat.ai\/brands\/hyros\/reviews\" rel=\"noopener nofollow\">independent analysis by CheckThat.ai<\/a> that aggregated 600+ Trustpilot reviews, Hyros users consistently report tracking 29-33% more conversions compared to native platform reporting. That gap is not just noise; it represents real revenue that platforms cannot see.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hyros also sends corrected conversion data back to Meta through CAPI &#8212; enriching Meta&#8217;s optimization signal with conversions its own tracking missed. This is the mechanism behind Hyros&#8217;s AI Optimization feature. The result is a feedback loop: Hyros sees the real conversions, tells Meta about them, and Meta&#8217;s algorithm optimizes better because it has better data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">According to a published Hyros case study, Dan Henry became 300% more profitable within 72 hours of implementing Hyros and scaled from $20,000 to $300,000 per month in ad spend. According to a published Hyros case study, Regenalight discovered $80,000-$100,000 per month in wasted ad spend and grew from $1M to $3M per month in revenue in a single quarter. These outcomes required knowing which campaigns were actually driving revenue &#8212; data that CAPI alone, feeding into Meta&#8217;s limited attribution window, could not provide.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hyros pricing starts at $230\/month on an annual plan or $379\/month on a monthly plan for the Business pricing tier. For advertisers already spending money on CAPI Gateway hosting ($10-$400\/month) plus the engineering time to maintain it, Hyros replaces that cost entirely while adding independent cross-channel attribution on top. For a full breakdown of what Hyros does and how it works, see our guide on <a href=\"https:\/\/hyros.com\/updates\/\/learn\/what-is-hyros\/\" rel=\"noopener\">what is Hyros<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a broader look at how server-side tracking works across platforms, see our guide on <a href=\"https:\/\/hyros.com\/updates\/\/learn\/server-side-tracking\/\" rel=\"noopener\">server-side tracking explained<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Do I still need the Meta Pixel if I have CAPI?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. Meta explicitly recommends running both together, not replacing one with the other. The Pixel captures real-time browser events with minimal latency and provides the fbp and fbc cookies that CAPI needs for higher Event Match Quality scores. CAPI catches what the Pixel misses (ad-blocked users, expired cookies, iOS-restricted events). Either one alone leaves significant gaps. Meta&#8217;s <a href=\"https:\/\/www.facebook.com\/business\/news\/pixel-conversionsapi-updates\" rel=\"noopener nofollow\">April 2026 data<\/a> shows web-event CAPI setups averaged 17.8% lower cost per result vs no-CAPI setups.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What is event deduplication and why does it matter?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Event deduplication prevents Meta from counting the same conversion twice when both the Pixel and CAPI report it. You generate a unique <code>event_id<\/code> on the client side and include it in both the Pixel event and the CAPI event. Meta matches events with the same ID, event name, and dataset within 48 hours and keeps only one. Without deduplication, your reported conversions inflate by up to 100%, your CPA looks artificially low, and Meta&#8217;s algorithm optimizes on phantom data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How do I check my CAPI Event Match Quality?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open Meta Events Manager, select your dataset (Pixel), and look for the Event Match Quality column next to each event type (Purchase, Lead, AddToCart). The score ranges from 1 to 10. Below 6.0 means significant identity-matching gaps. Above 8.0 means near-complete matching. The fastest way to improve a low score is adding hashed email addresses to your CAPI events &#8212; that single parameter typically adds 3-4 points.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Does Shopify support native CAPI?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. Shopify&#8217;s Facebook &amp; Instagram sales channel includes a built-in CAPI integration. Enable it in your sales channel settings under &#8220;Data sharing.&#8221; Set the data sharing level to &#8220;Maximum&#8221; to send all available customer data through CAPI. No custom code required. Shopify handles the server-side event sending, deduplication, and hashing automatically. For stores on Shopify, this is the fastest path to a working CAPI implementation. For more on how Shopify and attribution tools work together, see our guide on <a href=\"https:\/\/hyros.com\/updates\/\/learn\/shopify-ad-attribution\/\" rel=\"noopener\">Shopify ad attribution<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is CAPI GDPR compliant?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CAPI itself is a data transport mechanism &#8212; it does not determine compliance. Your compliance depends on how you use it. In GDPR jurisdictions, you need valid consent before sending user data through CAPI, just as you do with the Pixel. The data you send must be hashed (SHA-256), and you should only fire CAPI events after the user has accepted your consent banner. Meta processes CAPI data under its own Data Processing Terms, but the obligation to collect consent falls on you. Implement a consent management platform and gate your CAPI events behind it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What happens if my CAPI events fail silently?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Meta does not always return clear error messages for CAPI failures. Events can be accepted by the API (returning a 200 status) but still fail to match to a user profile. Monitor two things: your Event Match Quality score in Events Manager (a sudden drop signals matching problems) and your event volume trends (if CAPI events stop appearing while Pixel events continue, your server integration broke). Use the Test Events tool regularly &#8212; not just during initial setup.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How long does it take to see results after enabling CAPI?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Attribution data improvements show up within 48 hours as Meta starts receiving and matching server-side events. EMQ scores update every 48 hours. Meaningful performance improvements to campaign optimization typically take 2-4 weeks because Meta&#8217;s algorithm needs time to retrain on the richer data set. Do not judge CAPI impact based on the first three days. Give it 21 days minimum before evaluating whether it is working.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I use CAPI for offline conversions?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. Since May 2025, the Conversions API handles all offline conversion data. The previous Offline Conversions API was retired. To send offline events, set the <code>action_source<\/code> parameter to <code>physical_store<\/code> or <code>system_generated<\/code> instead of <code>website<\/code>. This is useful for businesses that close sales over the phone, in retail locations, or through any channel that does not involve a web page.<\/p>\n\n\n\n<div class=\"standalone-summary\"><h2>Standalone Summary<\/h2>\n<p>The Facebook Conversions API (CAPI) is Meta&#8217;s server-side event transmission system that sends conversion data directly from an advertiser&#8217;s server to Meta, bypassing browser-based tracking limitations. CAPI became critical after iOS 14.5&#8217;s App Tracking Transparency caused roughly 96% of US iPhone users to initially opt out of tracking, leaving Pixel-only setups blind to a meaningful share of iOS conversions. Running CAPI alongside the Pixel is Meta&#8217;s recommended setup. Per <a href=\"https:\/\/www.facebook.com\/business\/news\/pixel-conversionsapi-updates\" rel=\"noopener nofollow\">Meta&#8217;s April 2026 announcement<\/a>, web-event CAPI advertisers saw an average 17.8% lower cost per result compared to those without CAPI. Setup requires generating an access token, choosing an integration path (manual API, CAPI Gateway on AWS at $10-$400 per month, or a managed platform like Hyros), implementing event deduplication via matching event IDs, and optimizing Event Match Quality scores above 6.0. Hyros goes beyond CAPI by providing independent cross-channel attribution, tracking 29-33% more conversions than platform reporting, and feeding corrected data back to Meta&#8217;s algorithm &#8212; starting at $230 per month on an annual plan.<\/p>\n<hr>\n<p><strong>Hyros ships CAPI integration out of the box &#8212; no Gateway to manage, no code to write. <a href=\"https:\/\/hyros.com\/demo\" rel=\"noopener\">Book a demo<\/a><\/strong><\/p>\n<hr><\/div>\n\n\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"Article\",\n      \"@id\": \"https:\/\/hyros.com\/updates\/meta-conversions-api#article\",\n      \"headline\": \"Facebook Conversions API (CAPI) Setup: Complete Guide\",\n      \"description\": \"Complete guide to setting up Meta's Conversions API (CAPI) for server-side tracking. Covers manual API integration, CAPI Gateway, managed platforms, event deduplication, and Event Match Quality optimization.\",\n      \"author\": {\n        \"@type\": \"Person\",\n        \"@id\": \"https:\/\/hyros.com\/#alex-becker\",\n        \"name\": \"Alex Becker\",\n        \"jobTitle\": \"CEO\",\n        \"worksFor\": {\n          \"@id\": \"https:\/\/hyros.com\/#organization\"\n        },\n        \"sameAs\": [\n          \"https:\/\/www.linkedin.com\/in\/alexbecker\",\n          \"https:\/\/x.com\/zssbecker\"\n        ],\n        \"knowsAbout\": [\n          \"ad attribution\",\n          \"Meta Conversions API\",\n          \"server-side tracking\",\n          \"ROAS optimization\",\n          \"Facebook CAPI\"\n        ]\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"@id\": \"https:\/\/hyros.com\/#organization\"\n      },\n      \"datePublished\": \"2026-05-18\",\n      \"dateModified\": \"2026-05-18\",\n      \"mainEntityOfPage\": {\n        \"@type\": \"WebPage\",\n        \"@id\": \"https:\/\/hyros.com\/updates\/meta-conversions-api\"\n      },\n      \"image\": \"https:\/\/hyros.com\/images\/meta-conversions-api-og.png\",\n      \"keywords\": [\n        \"Facebook CAPI setup\",\n        \"Conversions API\",\n        \"Meta CAPI\",\n        \"server-side tracking\",\n        \"event deduplication\",\n        \"Event Match Quality\",\n        \"iOS 14.5 tracking\"\n      ]\n    },\n    {\n      \"@type\": \"HowTo\",\n      \"@id\": \"https:\/\/hyros.com\/updates\/meta-conversions-api#howto\",\n      \"name\": \"How to Set Up Facebook Conversions API (CAPI)\",\n      \"description\": \"Six-step guide to implementing Meta's server-side Conversions API alongside the Pixel for accurate ad attribution.\",\n      \"totalTime\": \"PT3H\",\n      \"estimatedCost\": {\n        \"@type\": \"MonetaryAmount\",\n        \"currency\": \"USD\",\n        \"value\": \"0-400\"\n      },\n      \"tool\": [\n        \"Meta Events Manager\",\n        \"Meta Business Suite\",\n        \"Server access or hosting platform\",\n        \"SHA-256 hashing library\"\n      ],\n      \"step\": [\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 1,\n          \"name\": \"Create a dataset in Meta Events Manager\",\n          \"text\": \"Go to Meta Events Manager, select your business, and create a new dataset or use your existing Pixel ID. The dataset ID is the same 15-16 digit number as your Pixel ID.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 2,\n          \"name\": \"Generate a CAPI access token\",\n          \"text\": \"Go to Business Settings in Meta Business Suite, find your dataset under Data Sources, open Settings, and click Generate Access Token in the Conversions API section. Store it securely in server environment variables.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 3,\n          \"name\": \"Choose your integration path\",\n          \"text\": \"Select from three options: manual API integration (write HTTP POST requests to graph.facebook.com), Meta CAPI Gateway (hosted on AWS CloudFormation for $10-$400\/month), or a managed attribution platform like Hyros that handles CAPI automatically.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 4,\n          \"name\": \"Send a test event\",\n          \"text\": \"Use Meta's Test Events tool in Events Manager. Add the test_event_code to your CAPI request payload, fire a test event, and confirm it appears in the Test Events tab. Remove the test code before going live.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 5,\n          \"name\": \"Implement event deduplication\",\n          \"text\": \"Generate a unique event_id on the client side and include it in both the Pixel event and the CAPI event. Meta deduplicates events with matching event_id, event name, and dataset ID within 48 hours.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 6,\n          \"name\": \"Verify Event Match Quality score\",\n          \"text\": \"Check your EMQ score in Events Manager. Target 6.0 minimum, 8.0 or higher for excellent matching. Improve scores by sending hashed email (adds 3-4 points), hashed phone (2-3 points), fbp cookie (2 points), and fbc cookie (1-2 points).\"\n        }\n      ]\n    },\n    {\n      \"@type\": \"FAQPage\",\n      \"@id\": \"https:\/\/hyros.com\/updates\/meta-conversions-api#faq\",\n      \"mainEntity\": [\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Do I still need the Meta Pixel if I have CAPI?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Yes. Meta recommends running both together. The Pixel captures real-time browser events and provides fbp and fbc cookies that CAPI needs for higher Event Match Quality. CAPI catches what the Pixel misses. Per Meta's April 2026 data, web-event CAPI setups averaged 17.8% lower cost per result vs no-CAPI setups.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"What is event deduplication and why does it matter?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Event deduplication prevents Meta from counting the same conversion twice when both Pixel and CAPI report it. You include a matching event_id in both events. Without deduplication, reported conversions can inflate by up to 100%, and Meta's algorithm optimizes on phantom data.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"How do I check my CAPI Event Match Quality?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Open Meta Events Manager, select your dataset, and look for the Event Match Quality column next to each event type. Scores range from 1-10. Below 6.0 means significant gaps. Above 8.0 means near-complete matching. Adding hashed email addresses typically adds 3-4 points.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Does Shopify support native CAPI?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Yes. Shopify's Facebook & Instagram sales channel includes built-in CAPI integration. Enable it in sales channel settings under Data sharing and set the level to Maximum. No custom code required.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Is CAPI GDPR compliant?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"CAPI is a data transport mechanism. Compliance depends on your implementation. You need valid consent before sending user data, must hash all PII with SHA-256, and should gate CAPI events behind your consent management platform.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"What happens if my CAPI events fail silently?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Meta can accept events (returning HTTP 200) that still fail to match a user profile. Monitor your Event Match Quality score for sudden drops and track event volume trends in Events Manager. Use the Test Events tool regularly, not just during initial setup.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"How long does it take to see results after enabling CAPI?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Attribution data improvements appear within 48 hours. EMQ scores update every 48 hours. Meaningful campaign performance improvements take 2-4 weeks as Meta's algorithm retrains on richer data. Give it 21 days minimum before evaluating impact.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Can I use CAPI for offline conversions?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Yes. Since May 2025, CAPI handles all offline conversion data after Meta retired the Offline Conversions API. Set the action_source parameter to physical_store or system_generated instead of website.\"\n          }\n        }\n      ]\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"@id\": \"https:\/\/hyros.com\/updates\/meta-conversions-api#breadcrumb\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Home\",\n          \"item\": \"https:\/\/hyros.com\/\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Learn\",\n          \"item\": \"https:\/\/hyros.com\/updates\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"Facebook Conversions API (CAPI) Setup\",\n          \"item\": \"https:\/\/hyros.com\/updates\/meta-conversions-api\"\n        }\n      ]\n    },\n    {\n      \"@type\": \"Organization\",\n      \"@id\": \"https:\/\/hyros.com\/#organization\",\n      \"name\": \"Hyros\",\n      \"url\": \"https:\/\/hyros.com\",\n      \"logo\": \"https:\/\/hyros.com\/images\/hyros-logo.png\",\n      \"sameAs\": [\n        \"https:\/\/www.linkedin.com\/company\/hyros\",\n        \"https:\/\/twitter.com\/hyaborz\"\n      ],\n      \"aggregateRating\": {\n        \"@type\": \"AggregateRating\",\n        \"ratingValue\": \"4.8\",\n        \"bestRating\": \"5\",\n        \"reviewCount\": 601,\n        \"itemReviewed\": {\n          \"@type\": \"SoftwareApplication\",\n          \"name\": \"Hyros\"\n        }\n      }\n    }\n  ]\n}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Here is what most Meta advertisers do not want to hear: if you are running only the Pixel in 2026, more than half your conversions are invisible to Meta&#8217;s algorithm. That is not a scare tactic. That is what happens when you rely on browser-side JavaScript to track a world full of ad blockers and [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":3425,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[45,44],"tags":[88,182,183,180,184,181,86],"class_list":["post-3423","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ad-attribution","category-hyros","tag-conversions-api","tag-event-deduplication","tag-event-match-quality","tag-facebook-capi-setup","tag-ios-14-5-tracking","tag-meta-capi","tag-server-side-tracking"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Meta&#039;s Conversions API sends conversions server-to-server. Setup paths, event deduplication, Event Match Quality, and the mistakes that break it.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Gregory\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/hyros.com\/updates\/meta-conversions-api\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"HYROS\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Facebook Conversions API (CAPI) Setup: Complete Guide - HYROS\" \/>\n\t\t<meta property=\"og:description\" content=\"Meta&#039;s Conversions API sends conversions server-to-server. Setup paths, event deduplication, Event Match Quality, and the mistakes that break it.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/hyros.com\/updates\/meta-conversions-api\/\" \/>\n\t\t<meta property=\"article:tag\" content=\"conversions api\" \/>\n\t\t<meta property=\"article:tag\" content=\"event deduplication\" \/>\n\t\t<meta property=\"article:tag\" content=\"event match quality\" \/>\n\t\t<meta property=\"article:tag\" content=\"facebook capi setup\" \/>\n\t\t<meta property=\"article:tag\" content=\"ios 14.5 tracking\" \/>\n\t\t<meta property=\"article:tag\" content=\"meta capi\" \/>\n\t\t<meta property=\"article:tag\" content=\"server-side tracking\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-05-18T10:29:53+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-08-03T04:30:16+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Facebook Conversions API (CAPI) Setup: Complete Guide - HYROS\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Meta&#039;s Conversions API sends conversions server-to-server. Setup paths, event deduplication, Event Match Quality, and the mistakes that break it.\" \/>\n\t\t<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t\t<meta name=\"twitter:data1\" content=\"Gregory\" \/>\n\t\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#article\",\"name\":\"Facebook Conversions API (CAPI) Setup: Complete Guide - HYROS\",\"headline\":\"Facebook Conversions API (CAPI) Setup: Complete Guide\",\"author\":{\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/author\\\/gregorydigitalrooftop-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/hyros.com\\\/updates\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/m2-07-send-it-server-to-server-scaled.png\",\"width\":2560,\"height\":1429,\"caption\":\"Circuit board with a broken upper trace and a continuous lower trace, headlined Send It Server To Server\"},\"datePublished\":\"2026-05-18T10:29:53+00:00\",\"dateModified\":\"2026-08-03T04:30:16+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#webpage\"},\"articleSection\":\"Ad Attribution, Hyros, conversions API, event deduplication, Event Match Quality, Facebook CAPI setup, iOS 14.5 tracking, Meta CAPI, server-side tracking\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hyros.com\\\/updates\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/category\\\/hyros\\\/#listItem\",\"name\":\"Hyros\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/category\\\/hyros\\\/#listItem\",\"position\":2,\"name\":\"Hyros\",\"item\":\"https:\\\/\\\/hyros.com\\\/updates\\\/category\\\/hyros\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#listItem\",\"name\":\"Facebook Conversions API (CAPI) Setup: Complete Guide\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#listItem\",\"position\":3,\"name\":\"Facebook Conversions API (CAPI) Setup: Complete Guide\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/category\\\/hyros\\\/#listItem\",\"name\":\"Hyros\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/#organization\",\"name\":\"HYROS\",\"description\":\"Blog\",\"url\":\"https:\\\/\\\/hyros.com\\\/updates\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/author\\\/gregorydigitalrooftop-com\\\/#author\",\"url\":\"https:\\\/\\\/hyros.com\\\/updates\\\/author\\\/gregorydigitalrooftop-com\\\/\",\"name\":\"Gregory\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#authorImage\",\"url\":\"https:\\\/\\\/hyros.com\\\/updates\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/Screen-Shot-2020-08-05-at-5.19.03-AM-150x150.png\",\"width\":96,\"height\":96,\"caption\":\"Gregory\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#webpage\",\"url\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/\",\"name\":\"Facebook Conversions API (CAPI) Setup: Complete Guide - HYROS\",\"description\":\"Meta's Conversions API sends conversions server-to-server. Setup paths, event deduplication, Event Match Quality, and the mistakes that break it.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/author\\\/gregorydigitalrooftop-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/author\\\/gregorydigitalrooftop-com\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/hyros.com\\\/updates\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/m2-07-send-it-server-to-server-scaled.png\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#mainImage\",\"width\":2560,\"height\":1429,\"caption\":\"Circuit board with a broken upper trace and a continuous lower trace, headlined Send It Server To Server\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/meta-conversions-api\\\/#mainImage\"},\"datePublished\":\"2026-05-18T10:29:53+00:00\",\"dateModified\":\"2026-08-03T04:30:16+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/#website\",\"url\":\"https:\\\/\\\/hyros.com\\\/updates\\\/\",\"name\":\"HYROS\",\"description\":\"Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/hyros.com\\\/updates\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Facebook Conversions API (CAPI) Setup: Complete Guide - HYROS","description":"Meta's Conversions API sends conversions server-to-server. Setup paths, event deduplication, Event Match Quality, and the mistakes that break it.","canonical_url":"https:\/\/hyros.com\/updates\/meta-conversions-api\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#article","name":"Facebook Conversions API (CAPI) Setup: Complete Guide - HYROS","headline":"Facebook Conversions API (CAPI) Setup: Complete Guide","author":{"@id":"https:\/\/hyros.com\/updates\/author\/gregorydigitalrooftop-com\/#author"},"publisher":{"@id":"https:\/\/hyros.com\/updates\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-send-it-server-to-server-scaled.png","width":2560,"height":1429,"caption":"Circuit board with a broken upper trace and a continuous lower trace, headlined Send It Server To Server"},"datePublished":"2026-05-18T10:29:53+00:00","dateModified":"2026-08-03T04:30:16+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#webpage"},"isPartOf":{"@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#webpage"},"articleSection":"Ad Attribution, Hyros, conversions API, event deduplication, Event Match Quality, Facebook CAPI setup, iOS 14.5 tracking, Meta CAPI, server-side tracking"},{"@type":"BreadcrumbList","@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/hyros.com\/updates#listItem","position":1,"name":"Home","item":"https:\/\/hyros.com\/updates","nextItem":{"@type":"ListItem","@id":"https:\/\/hyros.com\/updates\/category\/hyros\/#listItem","name":"Hyros"}},{"@type":"ListItem","@id":"https:\/\/hyros.com\/updates\/category\/hyros\/#listItem","position":2,"name":"Hyros","item":"https:\/\/hyros.com\/updates\/category\/hyros\/","nextItem":{"@type":"ListItem","@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#listItem","name":"Facebook Conversions API (CAPI) Setup: Complete Guide"},"previousItem":{"@type":"ListItem","@id":"https:\/\/hyros.com\/updates#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#listItem","position":3,"name":"Facebook Conversions API (CAPI) Setup: Complete Guide","previousItem":{"@type":"ListItem","@id":"https:\/\/hyros.com\/updates\/category\/hyros\/#listItem","name":"Hyros"}}]},{"@type":"Organization","@id":"https:\/\/hyros.com\/updates\/#organization","name":"HYROS","description":"Blog","url":"https:\/\/hyros.com\/updates\/"},{"@type":"Person","@id":"https:\/\/hyros.com\/updates\/author\/gregorydigitalrooftop-com\/#author","url":"https:\/\/hyros.com\/updates\/author\/gregorydigitalrooftop-com\/","name":"Gregory","image":{"@type":"ImageObject","@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#authorImage","url":"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-05-at-5.19.03-AM-150x150.png","width":96,"height":96,"caption":"Gregory"}},{"@type":"WebPage","@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#webpage","url":"https:\/\/hyros.com\/updates\/meta-conversions-api\/","name":"Facebook Conversions API (CAPI) Setup: Complete Guide - HYROS","description":"Meta's Conversions API sends conversions server-to-server. Setup paths, event deduplication, Event Match Quality, and the mistakes that break it.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/hyros.com\/updates\/#website"},"breadcrumb":{"@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#breadcrumblist"},"author":{"@id":"https:\/\/hyros.com\/updates\/author\/gregorydigitalrooftop-com\/#author"},"creator":{"@id":"https:\/\/hyros.com\/updates\/author\/gregorydigitalrooftop-com\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/hyros.com\/updates\/wp-content\/uploads\/2026\/08\/m2-07-send-it-server-to-server-scaled.png","@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#mainImage","width":2560,"height":1429,"caption":"Circuit board with a broken upper trace and a continuous lower trace, headlined Send It Server To Server"},"primaryImageOfPage":{"@id":"https:\/\/hyros.com\/updates\/meta-conversions-api\/#mainImage"},"datePublished":"2026-05-18T10:29:53+00:00","dateModified":"2026-08-03T04:30:16+00:00"},{"@type":"WebSite","@id":"https:\/\/hyros.com\/updates\/#website","url":"https:\/\/hyros.com\/updates\/","name":"HYROS","description":"Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/hyros.com\/updates\/#organization"}}]},"og:locale":"en_US","og:site_name":"HYROS","og:type":"article","og:title":"Facebook Conversions API (CAPI) Setup: Complete Guide - HYROS","og:description":"Meta's Conversions API sends conversions server-to-server. Setup paths, event deduplication, Event Match Quality, and the mistakes that break it.","og:url":"https:\/\/hyros.com\/updates\/meta-conversions-api\/","article:tag":["conversions api","event deduplication","event match quality","facebook capi setup","ios 14.5 tracking","meta capi","server-side tracking"],"article:published_time":"2026-05-18T10:29:53+00:00","article:modified_time":"2026-08-03T04:30:16+00:00","twitter:card":"summary_large_image","twitter:title":"Facebook Conversions API (CAPI) Setup: Complete Guide - HYROS","twitter:description":"Meta's Conversions API sends conversions server-to-server. Setup paths, event deduplication, Event Match Quality, and the mistakes that break it.","twitter:label1":"Written by","twitter:data1":"Gregory","twitter:label2":"Est. reading time","twitter:data2":"19 minutes"},"aioseo_meta_data":{"post_id":"3423","title":null,"description":"Meta's Conversions API sends conversions server-to-server. Setup paths, event deduplication, Event Match Quality, and the mistakes that break it.","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":"https:\/\/hyros.com\/updates\/meta-conversions-api\/","og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-08-03 04:12:14","updated":"2026-08-03 04:58:06","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/hyros.com\/updates\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/hyros.com\/updates\/category\/hyros\/\" title=\"Hyros\">Hyros<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tFacebook Conversions API (CAPI) Setup: Complete Guide\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/hyros.com\/updates"},{"label":"Hyros","link":"https:\/\/hyros.com\/updates\/category\/hyros\/"},{"label":"Facebook Conversions API (CAPI) Setup: Complete Guide","link":"https:\/\/hyros.com\/updates\/meta-conversions-api\/"}],"_links":{"self":[{"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/posts\/3423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/comments?post=3423"}],"version-history":[{"count":2,"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/posts\/3423\/revisions"}],"predecessor-version":[{"id":3430,"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/posts\/3423\/revisions\/3430"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/media\/3425"}],"wp:attachment":[{"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/media?parent=3423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/categories?post=3423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hyros.com\/updates\/wp-json\/wp\/v2\/tags?post=3423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}