deduplication • event_id
Meta Event Deduplication with event_id
Meta deduplicates a browser pixel event and a Conversions API event when both have the same event name and the same event ID and arrive within 48 hours, so it counts the lead once. Your website creates one unique ID at the moment of the event, sends it as eventID in the pixel and as event_id from the server, and you test that only one event appears.
01 • the problem
Why do pixel and Conversions API events get counted twice?
When you run both the pixel and the Conversions API (which Meta recommends), the same lead is reported twice: once by the visitor's browser and once by your server. Without a way to tell they are the same, Meta would count two leads. Deduplication is the process Meta uses to keep one and discard the other.
02 • meta's rules
How does Meta decide two events are duplicates?
| Method | What must match | Notes from Meta's documentation |
|---|---|---|
| Event ID (recommended) | event_name and event_id | Deduplicated if they arrive within 48 hours of the first event with that ID |
| fbp or external_id | event_name plus fbp and/or external_id | Works mainly when the browser event arrives first; does not deduplicate browser-only or server-only duplicates |
Meta's page says that when duplicate events do not meaningfully differ, it generally prefers the one received first. In the pixel code, the ID is passed as eventID in the fourth argument of the track call; on the server it is event_id.
Event flow • one id, two routes
- 01
Form submitted
Site creates ID, e.g. lead-8f2c…
- 02
Pixel
fbq('track','Lead',{},{eventID})
- 03
Server
event_id: same value
- 04
Meta
Same name + ID within 48h → one event
03 • set it up
How do I set up event_id deduplication?
- 1When the form is submitted, generate one unique ID in the page (for example a random string).
- 2Fire the pixel Lead event with that ID as eventID.
- 3Send the same ID to your server along with the form data.
- 4Your server sends the Conversions API Lead event with event_id set to that ID and event_name exactly 'Lead'.
- 5Test: submit a test lead and check Events Manager shows it once, received from both browser and server.
Names must match exactly
'Lead' and 'lead' are different event names. So are 'Lead' and 'Lead Submitted'. If the names differ, Meta will not treat the events as duplicates.
04 • what goes wrong
What are the most common deduplication mistakes?
- Creating a new ID on the server instead of reusing the browser's ID.
- Using the same fixed ID for every event, so different leads are wrongly merged.
- Different event names in the browser and the server.
- The server event arriving more than 48 hours later, outside the deduplication window.
- A CRM stage event and a website event both called 'Lead' for the same person but with different IDs.
If your numbers look inflated after adding the Conversions API, deduplication is the first thing to check. See also Meta pixel vs Conversions API.
05 • check it
How do I check that deduplication is working?
- 1Submit one test lead on your site.
- 2In Test Events, confirm you see the Lead event from the browser and from the server.
- 3Open each and confirm the event ID is identical and the event name matches exactly.
- 4A day later, in Events Manager Overview, check that the test counted as one event, not two.
- 5Compare a week of Leads in Events Manager with the same week in your CRM. They should be close; a big gap above your CRM suggests duplicates.
If numbers jump after adding the Conversions API, do not panic and switch it off. Check the event IDs first. Missing or mismatched IDs are by far the most common cause.
06 • web and crm together
How do website events and CRM events fit together without duplicates?
A lead often produces two kinds of event: a website Lead when the form is submitted, and later CRM stage events. These are different events, not duplicates, as long as they have different names.
| Event | Sent by | Event ID rule |
|---|---|---|
| Lead (website) | Pixel and server, deduplicated | One ID per form submission, shared by both |
| Qualified | CRM | One ID per lead for this stage |
| Booked | CRM | One ID per lead for this stage |
| Won / Purchase | CRM | One ID per lead for this stage |
The mistake to avoid is a CRM also sending 'Lead' for website leads that the site already reported. Decide which system owns the Lead event and let the other one start at the next stage.
07 • key terms
Which terms do I need to know?
Short, plain definitions of the terms used on this page.
| Term | What it means |
|---|---|
| Deduplication | Meta's way of counting a browser event and a server event once when they are the same |
| event_id | A unique ID shared by the browser and server copies of an event |
| Meta pixel | Code on your website that reports visitor actions to Meta from the browser |
| Conversions API (CAPI) | Meta's way for your server or CRM to send events directly to Meta |
| fbp | A Meta browser ID cookie set by the pixel |
| Event | A recorded action, such as Lead, Schedule or Purchase |
08 • crm events
Do CRM stage events need event IDs too?
Yes. Meta's best-practices page recommends sending event_id with all events. For CRM stages, use an ID that is unique per lead and per stage, so if the same 'won' event is sent twice by mistake, Meta can recognise it.
Think your leads are being double counted? Ask for the free tracking check and I will look at what Meta receives.
Free tracking checksee what meta actually receives
Free tracking check
I review which events your Meta ads actually receive and what is missing, then send you a short written summary. No calls required, and no promise of results: just a clear picture of your tracking.
questions
Frequently asked questions
01. What is event_id in the Conversions API?
+
A unique ID for an event. When the pixel and the server send the same event with the same ID and name, Meta counts it once.
02. How long is the deduplication window?
+
Meta's documentation says 48 hours from the first event with a given event_id.
03. Does event name case matter?
+
Yes. The names must match exactly in the browser and server events.
04. Can I deduplicate with fbp instead?
+
Meta supports fbp or external_id as another method, but it works mainly when the browser event arrives first. Event ID is the recommended method.
Sources
Checked on 21 October 2026. Pages change, so read the current version before you act.
Read next
PrimeBuild is not affiliated with any company, platform or website named on this page. Names and links are given only so you can check them yourself.