// Tracking and data
What Is the Conversions API (CAPI) and How It Works in Meta Ads
The Conversions API sends events from your server to Meta. Read the send path, how event_id removes double counting, and how to raise match quality.

The Conversions API is a server-to-server path that sends events to Meta. The pixelPixelA piece of code on a web page that tells the ad platform somebody opened the page or took an action.What is the Meta Pixel? sends events from the buyer browser. The Conversions APICAPIA server path that sends conversion data from your system to the ad platform, without depending on the buyer browser.What is the Conversions API (CAPI)? sends the same events from your server. Both paths write into one dataset, and Meta joins them with event_id.
This page explains the send path, how to remove double counting, and how to read the event match score.
How the Conversions API works in 3 steps
A buyer presses pay. The browser sends one event. Your server sends the same event with the same event_id. Meta receives two sends and stores one row.
Scroll the diagram sideways
event_id makes Meta keep one row instead of two.Why the pixel alone leaves gaps
The pixel runs inside the browser. Ad blockers, browser cookie limits, and network failures stop that send. Your server does not meet the same limits, because the call runs from server to server.
The pixel also stops at payments that complete outside your site. A payment confirmation that arrives as a webhookWebhookAn automatic message one system sends to another the moment something happens, for example an incoming WhatsApp message.Open the glossary is one example. Only the server can send that event.
Deduplication: one purchase stays one row
Meta reads two fields to join the sends: event_name and event_id. Send the same values on both paths for the same single action.
| Field | Pixel | Conversions API | Rule |
|---|---|---|---|
event_name | Purchase | Purchase | Must match exactly. |
event_id | Order ID | Order ID | Must match exactly. |
event_time | Click time | Server time | A small gap is accepted. |
action_source | website | website | State where the action happened. |
The order number is a safe candidate for event_id, because that number is already unique in your system.
Event match quality and how to raise it
Meta gives an event match score to each web dataset. The score rates how well the customer information you send can match one account. The Dataset Quality API publishes that score together with event coverage and deduplication state.
Scroll the diagram sideways
Your server creates the hash before the send. Meta does not accept a raw email address on the Conversions API.
A safe install order
- Install the pixel first, then confirm the base events arrive.
- Pick one source for
event_id, such as the order number. - Send server events for one event first, such as Purchase.
- Check the deduplication state in Events Manager for 7 days.
- Add the next event after the double rows disappear.
Run the tracking health check to see the state of your own install.
Questions and answers
Does the Conversions API replace the pixel? No. Meta asks you to run both paths together. The pixel carries browser signals such as fbp and fbc, and the server carries events that never leave the browser.
What happens when the event_id differs? Meta counts two separate events. Your report shows double purchases, and campaign optimisation learns from the wrong number.
How late may a server event arrive? Send it as soon as the action happens. Meta accepts late events, but an event that arrives much later no longer helps campaign optimisation.
// references
Official sources
We checked every claim on this page against the documents below on 11 September 2026. Open the source before you change a live system.


