An event ID is a unique reference attached to a tracked action, such as a purchase or a lead, so that an ad platform can tell when it has received the same action twice and count it once. It matters most when you send conversions to Meta from both the browser, through the Meta Pixel, and your server, through the Conversions API.
How an event ID works
Many sites now report each conversion twice on purpose. The browser sends it through the Pixel, which is quick but can be stopped by ad blockers, browser privacy features or a declined cookie banner. The server sends it through the Conversions API, which is much harder to block. Between them, fewer conversions go missing, but Meta now receives two copies of most of them.
Meta sorts this out through deduplication. When two events reach the same dataset with the same event name and the same event ID, within 48 hours of each other, Meta keeps one and discards the other. In the Pixel code the ID is passed as eventID; in the Conversions API it is the event_id field.
The ID can be any value unique to that one action. For a purchase, the order number works well. For a lead, a reference created when the form is submitted, and stored so both the browser and the server can read it, does the same job. What matters is that the browser copy and the server copy carry exactly the same value.
Other platforms use the same idea. TikTok’s Events API also deduplicates on an event ID, while Google relies on the transaction ID to drop repeated purchases in GA4 and on order IDs to drop repeated conversions in Google Ads.
Why it matters
Without a matching event ID, Meta counts the browser and server copies separately. A shop taking 100 orders a week could see close to 200 purchases in Ads Manager, a reported return on ad spend almost double the real one, and a bidding system convinced its campaigns are doing better than they are. For a UK business deciding whether to put more money into Facebook and Instagram, that is an expensive misreading.
The opposite fault is just as damaging. If one ID is reused across different actions, Meta treats genuine conversions as duplicates and throws them away. Campaigns then look weaker than they are and may be paused for the wrong reason.
Common mistakes
- Different IDs on each side. Generating a random ID in the browser and a separate one on the server means nothing ever matches.
- A fixed ID. Hard-coding a value such as “purchase”, or leaving a template placeholder unfilled, makes every event look like the same one.
- Mismatched event names. Deduplication needs the event names to match exactly as well. Send Purchase from both the Pixel and the server, not Purchase from one and a custom name from the other.
- Late server events. Server events sent in a nightly batch can fall outside the 48-hour window.
- Assuming the plugin handles it. Some Shopify apps and WordPress plugins set event IDs correctly; others send server events without one. Check rather than assume.
How to act on it
- In Meta Events Manager, open your dataset, select each conversion event and look at the deduplication and event coverage details, which show whether browser and server events are being paired.
- Place a test order or submit a test lead with the Test Events tool open, and confirm the browser and server events show the same event ID.
- Compare a week of purchases in Ads Manager with your shop’s real order count. A reported figure well above the real one points to failed deduplication.
- Agree a source for the ID with your developer: the order number for purchases, a stored reference for leads.
Checking deduplication is a standard step when I set up tracking for Facebook and Instagram ads management, because every reported result depends on it.
