Fix guide · Any website · advanced · about 60 min
Meta events have no event ID
For the finding “Meta events have no event ID”. Using Framer? See the Framer guide.
What this means
Each event your pixel sends can carry an event ID: a unique label for that one action. Your events arrive without one.
Whether this costs you money depends on one question: does your site also send events to Meta from a server, through the Conversions API (CAPI)?
- Yes, or you are not sure: the event ID is how Meta recognizes that a browser event and a server event describe the same purchase or lead. Without it, Meta cannot merge them reliably, so the same conversion may be counted twice (inflating results) or handled inconsistently. We report this as high when we see signs of server-side tracking for Meta.
- No, you only use the browser pixel: there is nothing to deduplicate, so this has little effect today. We report it as low. It becomes important the day you add the Conversions API, so it is worth setting up then.
We cannot see server-to-server traffic from a browser, so we cannot confirm whether your Conversions API works. We only see whether the browser events carry an ID.
How to confirm it yourself
Our check runs from a browser in the EU and accepts the cookie banner first.
- Open a private (incognito) window, open developer tools (F12), go to the Network tab and filter by
facebook.com/tr. - Load the page and accept cookies. Trigger the events you care about (for example submit a test lead on your own site).
- Click a request and look at its payload. The event ID is sent in the field
eid. If there is noeidfield, the event has no ID. - Some IDs start with
ob3_plugin-set_followed by random characters. These are set by Meta’s own pixel code, not by your site. Meta does not document what they are used for or whether they can be matched with Conversions API events you send yourself. What is certain: your server does not know these IDs, so an event your server sends with its ownevent_idwill not match them.
In Meta Events Manager, the Test events tool (Data sources > your pixel or dataset > Test events) shows which browser and server events were received and which were deduplicated. The Diagnostics tab lists problems Meta has detected with your events.
How to fix
Meta merges a browser event and a server event when both have the same event name and the same event ID, and the second arrives within 48 hours of the first. (Meta can also try to match on the fbp or external_id parameters, but its developer documentation says this only works when the browser event arrives before the server event. The event ID is the reliable method.) So the fix has two halves: give the browser event an ID, and send exactly the same ID with the matching server event.
-
Generate one unique ID per action (per page view, per lead, per purchase). Order numbers or form submission IDs work well for conversions; a random string works for page views and clicks. Never reuse a fixed value.
-
Pass it to the pixel as
eventID, the fourth argument offbq:fbq('track', 'Lead', { value: 10, currency: 'EUR' }, { eventID: 'lead-8f3a2c' }); -
Send the same value as
event_idin the Conversions API event, with the sameevent_name(Leadin this example). -
If you use Google Tag Manager: generate the ID with a variable from the Community Template Gallery, for example Stape’s Unique Event ID variable, and put that variable into the event ID field of your Meta tag. In the widely used Facebook Pixel tag template by Simo Ahava, this is the Event ID field under More Settings; in a Custom HTML tag, pass it as
eventIDin the fourth argument offbq. Use the same variable value for the server event, for example by passing it to your server-side GTM container. -
If you use a Conversions API tool or plugin: most of these tools set matching IDs for you, but only for the browser events they send. If you also have a separate, manually installed pixel, its events will have no ID. Remove the manual pixel or check the tool’s documentation for deduplication. (A second pixel usually also shows up as “Duplicate Meta events”.)
-
Publish your changes.
Common causes
- The pixel was installed with Meta’s standard base code, which does not add event IDs to your own events.
- The Conversions API was added later (through a plugin, a partner integration or server-side GTM) and the browser side was never updated.
- A tool sets IDs on its server events, but the browser events come from a different, older pixel installation.
- The ID is generated separately in the browser and on the server, so the two never match even though both are present.
How to verify the fix
- In the Network tab, every
facebook.com/trrequest for your key events carries aneidvalue, and the value changes between actions. - In Meta Events Manager, browser and server events for the same action are shown as deduplicated rather than counted separately (this can take some time to update).
- Re-run the check on IsPixelWorking. The issue should be gone.
Sources
- Meta for Developers, Handling duplicate Pixel and Conversions API events (event_id / eventID, event name, 48-hour window): https://developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events
- Meta Business Help Center, About deduplication for Meta Pixel and Conversions API events: https://www.facebook.com/business/help/823677331451951
- Meta Business Help Center, Test events tool: verify app and web browser events for Meta (shows which events are processed and which are deduplicated): https://www.facebook.com/business/help/2040882565969969
- Meta Business Help Center, About diagnostics in Meta Events Manager: https://www.facebook.com/business/help/667164051342757
- Simo Ahava, Facebook Pixel custom tag template (Event ID under More Settings): https://www.simoahava.com/custom-templates/facebook-pixel/
- Stape, Unique Event ID variable: https://stape.io/helpdesk/documentation/unique-event-id