Analytics & Reporting6 min read

Meta Conversions API (CAPI): Setup, Deduplication, and Why You Still Need the Pixel

Tarek Kekhia

Tarek Kekhia

Jun 23, 2026
Share
Meta Conversions API (CAPI): Setup, Deduplication, and Why You Still Need the Pixel

TL;DR

The meta conversions api is a server-to-server signal that sends conversion data directly to Meta, bypassing browser limitations that block the Pixel. It does not replace the Facebook Pixel. Both signals run in parallel, and Meta deduplicates them server-side using the event_id parameter. Advertisers at any meaningful scale who rely on Pixel-only tracking are systematically undercounting conversions. Running both signals, correctly deduplicated, gives Meta the most complete attribution data available.

Do You Need the Meta Conversions API?

The short answer is yes, for almost every advertiser. The table below gives you the specific answer for your setup.

CAPI requirement by platform and situation

Your situationWhat you need
Running ads with Meta Pixel onlyCAPI + Pixel (both, deduplicated)
Running ads on ShopifyEnable native Shopify-Meta integration (CAPI is built in)
Running ads on WooCommerceInstall the official Meta for WooCommerce plugin
Running ads with a custom checkoutDirect CAPI integration via Meta's API or GTM server-side
Spending under $1,000/moPixel-only may be acceptable short-term; CAPI becomes critical as you scale
Pixel already installed, CAPI not set upFix this: CAPI dramatically improves event match quality

Signal loss without CAPI

Without CAPI, iOS 14 restrictions and browser-level blocking cause a significant portion of conversion events to go unrecorded in Meta's system. Industry reports and vendor case studies show recovered events ranging from roughly 20% to 60% depending on browser mix, device split, and account setup. Your results will vary. That gap compounds as browsers tighten privacy controls.

What the Meta Conversions API Is (and What It Isn't)

The Meta Conversions API (CAPI) is a server-to-server integration that sends conversion event data directly from your server to Meta, without relying on the user's browser.

You may have heard that the Meta Conversions API replaces the Facebook Pixel. It doesn't. Disabling the Pixel after implementing CAPI removes browser-side matching signals. Based on how Meta's deduplication model works, this degrades rather than improves attribution because you've eliminated one of two independent measurement paths instead of adding a second.

Here's how the two systems work:

The Meta Pixel fires from the user's browser when a user takes an action: viewing a product, initiating checkout, or completing a purchase. It captures data client-side, which means it's subject to browser restrictions, iOS privacy controls, ad blockers, and ITP (Intelligent Tracking Prevention in Safari).

The Meta Conversions API (CAPI) fires from your server when a conversion event occurs. It sends the same data directly to Meta's API, bypassing the browser entirely. A server-to-server signal can't be blocked by browser extensions or iOS ATT.

Why you need both: When both signals fire for the same event, Meta deduplicates them server-side using the event_id parameter, so the conversion is counted once, not twice. The result is more complete conversion data than either signal provides alone, and your ROAS becomes more accurate because the learning algorithm has better signal to optimize against.

Pixel and CAPI are redundant measurement paths, not alternatives. Think of them as two independent witnesses to the same conversion event — having both consistently yields more complete data than either signal alone.

100

purchases processed

68

attributed with Pixel only

91

attributed with Pixel + CAPI

5.1 to 8.4

EMQ improvement after CAPI

The Conversions API is designed to create a direct connection between your marketing data and Meta, which helps optimize ad targeting, decrease cost per result, and measure outcomes across Meta technologies.

M
Meta
Official Conversions API Documentation

The 'facebook conversions api' and 'capi meta' terms refer to the same system. Meta rebranded from Facebook to Meta in 2021, but the underlying API and Events Manager interface use both names.

Why CAPI Exists: The Browser Signal Problem

Browser-only tracking is increasingly unreliable for three compounding reasons:

Three reasons browser-only tracking fails

1
iOS 14+ App Tracking Transparency (ATT)

Users who opt out of tracking prevent the Pixel from firing on mobile Safari. Meta has estimated this affects 60%+ of iOS traffic (source: Meta Business Help Center). Without a server-side signal, those conversions disappear from your attribution entirely. For e-commerce accounts with a high mobile share, this alone justifies CAPI.

2
Ad blockers and browser extensions

An estimated 30-40% of desktop users run ad blocking software that also blocks the Meta Pixel from loading (source: Statista). A server-side signal bypasses this entirely. Your server fires the event regardless of what's installed on the user's browser.

3
ITP (Intelligent Tracking Prevention)

Safari limits first-party cookie lifespan to 7 days or shorter (source: WebKit blog). Longer attribution windows, like 28-day click, become unreliable because the cookie that ties a click to a conversion may no longer exist. CAPI sends hashed customer data (email, phone) directly, bypassing cookie dependency for matching.

Pixel-only accounts are systematically undercounting conversions. CAPI is a primary server-side fix that recovers many browser-blocked events. Combine it with first-party data, clean tagging, and Advanced Matching for best results. Other mitigations (consented CRM uploads, attribution modeling) also help, but CAPI is the most direct structural solution.

Why attribution quality matters for AI-assisted decisions

Poor CAPI health has a downstream effect: if your attribution signals are degraded, any AI-assisted budget or bidding recommendations you're relying on are working from inaccurate ROAS data. Attribution quality is a prerequisite for reliable automated decisions, not an afterthought.

How to Set Up the Meta Conversions API

There are three setup paths depending on your platform. Use the one that matches your stack.

Conversions API on Shopify (Native Integration)

Shopify's native Meta integration handles conversions api shopify setup automatically once connected. No developer required.

1
Open Shopify admin

Go to Sales Channels then Facebook & Instagram

2
Connect Meta Business account

Connect your Meta Business account if not already connected

3
Enable Maximum data sharing

Under Data Sharing, select Maximum to enable server-side event sharing (CAPI)

4
Deduplication is automatic

Shopify automatically passes order IDs as the event_id parameter for deduplication

5
Verify in Events Manager

Open Meta Events Manager, select your dataset, and confirm both browser and server events appear with an Event Match Quality score

What 'Maximum' data sharing means

Shopify sends SHA-256 hashed customer data (email, phone, name) alongside conversion events. Meta matches this against its user graph to attribute conversions even when Pixel fires were blocked. No PII is stored by Meta in identifiable form; only hashed values are transmitted.

Highest-impact fix for Shopify advertisers

If you're running Shopify and haven't selected Maximum, this is the single highest-impact tracking fix available to you right now.

CAPI on WooCommerce (Plugin-Based)

The official Meta for WooCommerce plugin handles the integration without custom code.

1
Add plugin

In your WordPress admin, go to Plugins then Add New

2
Install Meta for WooCommerce

Search for and install Meta for WooCommerce (the official plugin by Meta)

3
Connect Meta Business account

Connect your Meta Business account and select your pixel

4
Enable Advanced Matching

Enable Advanced Matching in the plugin settings

5
Enable server-side events

Under Events, confirm server-side events are toggled ON. The plugin sends server events for ViewContent, AddToCart, InitiateCheckout, and Purchase.

Use the official Meta plugin

Third-party WooCommerce CAPI plugins have inconsistent deduplication logic and can cause double-counting that inflates your conversion numbers. Use the official Meta plugin where possible.

Direct Server-Side Integration (Custom / Headless)

For custom checkout systems, headless commerce setups, or events beyond standard e-commerce, this is the facebook capi integration path for developers.

1
Access Meta's Conversions API

Access via the Meta Marketing API: https://developers.facebook.com/docs/marketing-api/conversions-api

2
Include required parameters

For each event, include: event_name, event_time, user_data (hashed), and event_id

3
Send events within 1 hour

Send events within 1 hour of occurrence (real-time is ideal; delays degrade match quality)

4
Match event_id across Pixel and CAPI

Generate a unique event_id for each event (UUID or order ID) and pass the same value to both the Pixel and CAPI

event_id is required for deduplication

To deduplicate browser and server events, send the same event_id (and event_name) in both Pixel and CAPI payloads. Without matching values, you risk double-counting. If you're sending server events only with no Pixel running, deduplication isn't a concern, but including event_id is still recommended for consistency and future-proofing.

Event Match Quality: What Score You Need

Event Match Quality (EMQ) is Meta's score (0-10) for how well your customer signals match Meta user profiles. Higher EMQ = more conversions attributed = more accurate signal for the algorithm.

Event Match Quality scoring

EMQ ScoreRatingWhat it means
0-3PoorMinimal signals (IP + user agent only). Many conversions go unmatched.
4-6FairSome advanced matching parameters included. Acceptable minimum.
7-8GoodEmail or phone hash included. Strong attribution coverage.
9-10ExcellentMultiple hashed parameters (email, phone, first name, last name, zip). Maximum attribution.

How to improve EMQ:

  • Pass SHA-256 hashed email with every event where available
  • Pass hashed phone number where customers provide it at checkout
  • Pass first name, last name, and zip code for purchase events
  • Enable Advanced Matching in Meta Pixel settings (browser-side)
  • Use CAPI to send these parameters even when browser signals are blocked

Where to check: Meta Events Manager, your dataset, Event Match Quality column

Recommended EMQ targets (industry heuristic, not an official Meta threshold)

7+ for purchase events; 5+ for top-of-funnel events (ViewContent, AddToCart). Below 5 on purchase events is a strong signal that attribution is degraded and ROAS figures may be unreliable. Meta hasn't published official minimum thresholds - treat these as practitioner benchmarks.

Deduplication: How Meta Prevents Double-Counting

When both Pixel and CAPI fire for the same conversion, Meta counts it once. This works via the event_id parameter, a unique identifier you generate for each event.

deduplication-flow
Purchase occurs
       |
       +---> Pixel fires (browser)     --+
       |     event_id: "order_12345"     +--> Meta matches event_id --> 1 conversion
       +---> CAPI fires (server)        --+
             event_id: "order_12345"
bash

How deduplication works

1
Generate a unique event_id

A purchase occurs; your system generates a unique event_id (e.g., order_12345)

2
Pixel fires with event_id

The Pixel fires: fbq('track', 'Purchase', {eventID: 'order_12345'})

3
CAPI fires with same event_name and event_id

CAPI fires for the same event with the identical event_name: 'Purchase' and event_id: 'order_12345'

4
Meta deduplicates

Meta matches both events by event_name + event_id together and counts the conversion once

What happens without event_id

Meta receives two purchase signals for the same order. Without a deduplication key, it may count both, inflating conversion numbers, making ROAS appear higher than it is, and degrading the algorithm's learning on false data.

Symptoms of a deduplication failure

  • Conversion counts in Meta are significantly higher than actual orders
  • ROAS looks unexpectedly strong while profit doesn't match
  • Events Manager Activity Log shows near-identical duplicate events

In Meta Events Manager, check the Diagnostics tab. It flags duplicate events if deduplication is failing. Cross-reference your Meta-attributed conversions against your actual platform order volume as a sanity check.

How to Verify CAPI Is Working

After setup, confirm CAPI is firing correctly before trusting your attribution data.

1
Use Test Events in Meta Events Manager

Open Events Manager, select your dataset, then Test Events. Fire a live test event and check what Meta receives. Verify: server events appear alongside browser events; event_id values match; Event Match Quality shows 7+ on purchase events; no Missing required parameters warnings.

2
Check the Diagnostics Tab

Events Manager Diagnostics flags three issue categories: missing parameters, high duplicate rates, and event mismatch. Resolve all warnings before running any attribution-dependent analysis.

3
Compare attributed conversions with actual orders

After approximately 7 days of CAPI running correctly, compare Meta's attributed purchase count against your actual order volume. If Meta is attributing more than 10-15% above actual orders under a 1-day click window, deduplication is likely failing.

Common CAPI Problems and Fixes

Common CAPI problems, causes, and fixes

ProblemLikely causeFix
Conversion count much higher than actual ordersMissing or mismatched event_idEnsure identical event_id passes to both Pixel and CAPI for every event
EMQ below 5 on purchase eventsMissing hashed customer dataAdd SHA-256 hashed email and phone to every server event
Only browser events in Events ManagerCAPI not firingRe-check your server-side integration; re-verify with Test Events
Only server events in Events ManagerPixel not loading in browserCheck Pixel installation; verify it's not blocked in your tag manager
Missing required parameters in DiagnosticsIncomplete event payloadConfirm event_name, event_time, user_data, and event_id are all present

Frequently Asked Questions

CAPI Setup Checklist

Before trusting attribution data after CAPI implementation, verify all of the following:

  • Meta Pixel installed and firing on all key pages (confirmed in Test Events)
  • CAPI enabled for your platform (Shopify Maximum, WooCommerce plugin, or direct API)
  • event_id matching between Pixel and CAPI for every conversion event
  • SHA-256 hashed email passed with every purchase event
  • Hashed phone number passed where customers provide it
  • Event Match Quality score 7+ on Purchase events in Events Manager
  • No warnings in the Events Manager Diagnostics tab
  • Both browser and server event rows visible in Test Events for the same conversion
  • Attributed conversions within 10-15% of actual order volume under a 1-day click window

Summary

The Meta Conversions API is a complementary tracking signal, not a Pixel replacement. Setting up both, with correct event_id deduplication, gives Meta the most complete conversion data available and improves the algorithm's ability to optimize your spend. For advertisers using AI-assisted tools like AdAdvisor, CAPI health is a prerequisite: automated budget and bidding recommendations depend on accurate ROAS data, which depends on accurate attribution. Weak CAPI health produces unreliable ROAS, which makes any AI-driven recommendations untrustworthy.

AdAdvisor monitors Pixel and CAPI health as part of its account-level tracking diagnostics, flagging attribution signal issues before they affect your budget decisions.

Tarek Kekhia

Written by

Tarek Kekhia

Co-Founder of AdAdvisor. Builder. AI and Data Specialist.