Meta Pixel and Conversions API: How to Stop Counting Each Sale Twice
If your store sends the same purchase through the Meta Pixel and the Conversions API, Meta can count it twice. The fix is an event ID, a shared identifier that both sides send with the same event name, so Meta counts each conversion once. This guide explains how to add it and how to check that it works.
Based on official Meta documentation. Not tested on a live store.
Before you start
0 of 4 ready
Why the Meta Pixel and Conversions API count the same sale twice
The browser sends events through the Pixel. Your server sends the same events through the Conversions API. Without a shared key, Meta sees two separate events. Meta’s recommended method matches them on two fields: the event ID and the event name. Both sides must send both fields for the match to work.
In practice, the problem shows up as inflated purchase counts in Events Manager and in your ad reports. Campaigns then optimize toward a number that is higher than your real orders. Fixing the match does not change your sales, but it makes the reported numbers match your store’s order data.
Step 1: Create one event ID per event occurrence
Generate a unique ID for each order, add-to-cart action or checkout start. Store it so that the browser and the server can both read it. The ID should identify the event, not the customer, because two orders from the same customer need two different IDs.
Expected result: Every event you track has one ID that both your browser code and your server can use.
Step 2: Send the event ID with the Pixel call
Add the ID as the fourth argument of the Pixel call, under the key eventID. Replace ORDER_12345 with the ID from step 1.
fbq('track', 'Purchase', {value: 12, currency: 'USD'}, {eventID: 'ORDER_12345'});Expected result: Each Pixel call for the event carries its eventID.
Step 3: Send the same ID with the server event
Send the event through the Conversions API with the same value in event_id and the same event name in event_name. The browser key is eventID with event, and the server key is event_id with event_name. Both must reach the same Pixel ID.
If your platform’s integration sends server events for you, check its settings for an event ID option before you write any code.
Expected result: Server events carry the same event_id and event_name as the matching browser events, sent to the same Pixel ID.
Step 4: Keep the two events within 48 hours
Meta deduplicates events only when they arrive within 48 hours of the first event with the same ID. Send the server event close to the browser event. An event that arrives more than two days later is counted as a separate conversion.
Expected result: Both copies of each event reach Meta within 48 hours of each other.
Check whether deduplication works
Meta’s Dataset Quality API reports how many Pixel events also arrive through the Conversions API with shared deduplication keys. The metric is called event coverage and is a 7-day average. The endpoint also reports dedupe key feedback, which shows how often browser and server events carry each key. Meta recommends sharing deduplication keys for all of your events, and a higher share of events carrying the key is better.
To use the endpoint you need your Pixel’s ID, a valid access token for that Pixel, and the permissions listed in the documentation. It reads your live data, so you do not need a test store to use it.
Common mistakes and how to fix them
Server events have no event ID, or the value differs from the browser.
Compare the ID in the Pixel call with the event_id sent for the same order.
Only some event types carry the key.
Check each event type separately, starting with Purchase.
The ID changed between browser and server, or the event names differ.
Compare event names exactly, including capitalization.
The server event arrived more than 48 hours after the browser event.
Check when your server sends the event.
Variants by platform
Some platforms and partner integrations send the event ID for you. Check your platform’s documentation for that option before you add code yourself. If you use a partner integration, confirm that it sends the ID for every event type you track, not only for purchases.
Key takeaways
Browser and server events match when the Pixel’s eventID equals the Conversions API’s event_id and the event names match.
Use a unique ID per event, not per customer.
Meta deduplicates events only within 48 hours of the first event.
The Dataset Quality API shows event coverage and deduplication key feedback for your live data.
FAQ
Do I need the Conversions API if my Pixel already works?
Does the event ID have to be random?
What happens if I send only server events?
Get practical store fixes in your inbox
Join the KonvertiQ newsletter for short, data-backed tips on checkout, trust and conversion. No spam, unsubscribe anytime.
We use your email only to send the newsletter. See our Privacy Policy.