The Conversions API (CAPI) is Meta's interface for sending marketing events, such as purchases and leads, from your server directly to Meta instead of only from the browser through the Meta pixel. It is usually run alongside the pixel, with a shared event ID so Meta can remove duplicates.
The Meta pixel runs in the visitor's browser, so ad blockers, browser privacy features and pages that close too quickly all cost events. The Conversions API gives Meta a second copy of the same events, sent from a server, which Meta then reconciles with what the pixel saw.
How it works
Your server, or a server-side tag, sends an HTTP POST to the Graph API endpoint for your dataset (pixel) with one or more events. Each server event carries:
event_name, such asPurchaseorLeadevent_time, a Unix timestamp in seconds, at most 7 days in the pastaction_source, which iswebsitefor site eventsevent_source_urlanduser_data.client_user_agent, both required for website eventsuser_datawith customer information parameters such as hashed email or phone, plusfbpandfbccookie values where availableevent_id, used for deduplication
A minimal website purchase looks like this:
{
"data": [{
"event_name": "Purchase",
"event_time": 1791273600,
"event_id": "order-10293",
"action_source": "website",
"event_source_url": "https://www.example.com/checkout/thank-you",
"user_data": {
"em": ["<sha256 of lowercased email>"],
"client_user_agent": "Mozilla/5.0 ...",
"fbp": "fb.1.1791273000000.123456789"
},
"custom_data": { "currency": "EUR", "value": 84.50 }
}]
}The pixel sends the same purchase with eventID: 'order-10293'. Meta sees the same event name and ID on both, and keeps one. You can send events with your own code, through a server-side GTM tag, through a platform integration, or with Meta's Conversions API Gateway, which Meta offers as a no-code option from Events Manager.
Why it matters in 2026
Browser-only measurement keeps losing coverage, and Meta's delivery system optimises on the events it receives. A well-built Conversions API setup gives Meta more complete conversion data and better customer information for matching. A badly built one does the opposite: double-counted purchases inflate reported ROAS and teach the algorithm the wrong thing.
It is also a common reason to adopt server-side tagging: one server container can feed GA4, Google Ads and the Conversions API from the same event stream.
How to check it
- In Events Manager, open your dataset and use Test events with a test event code to see server events arrive in real time.
- For each key event, open its details in the dataset overview and check that it is received from both the browser and the server, and look at what Events Manager reports about deduplication.
- Compare the
event_idin the pixel hit (browser network panel) with the one your server sends. They must be identical strings. - Check the Event Match Quality score and which customer information parameters are being received.
- Review diagnostics in Events Manager for warnings about missing parameters or timestamps.
Common mistakes
- No shared event ID. Pixel and server send the same purchase with different or missing IDs.
- Event names differ.
Purchasein the pixel andpurchaseon the server do not deduplicate. - Unhashed or badly normalised data. Email not lowercased and trimmed before hashing.
- Stale timestamps. Batch jobs that send events older than 7 days get the whole request rejected.
- Ignoring consent. Server events sent for visitors who declined marketing cookies.
Related terms: enhanced conversions, dataLayer, attribution model, incrementality.
Frequently asked questions
Should I use the Conversions API instead of the Meta pixel?
Meta's guidance is to use them together in a redundant setup. The pixel captures browser context, the Conversions API sends events from your server, and deduplication keeps one copy of each event. Running only one of them gives Meta less to work with.
How does Meta deduplicate pixel and Conversions API events?
Meta treats two events as the same when the pixel's eventID matches the server's event_id and the pixel's event name matches the server's event_name, sent to the same pixel. Matching events received within 48 hours are deduplicated. Without a shared ID, both copies can count.
What is Event Match Quality?
Event Match Quality is a score out of 10 that Events Manager shows for server events. It indicates how well the customer information you send can be matched to a Meta account. Sending more of the supported customer information parameters, hashed where required, can raise it.
How far back can I send Conversions API events?
Meta's documentation says event_time can be up to 7 days before you send the event. If any event in a request is older than that, the whole request returns an error and no events in it are processed.
Sources
Dimitris builds Tracking Whisper and writes about tracking, analytics and data from the work the agent does every day: GTM containers, GA4 properties, ad platforms and the numbers in between.