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)?

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.

  1. Open a private (incognito) window, open developer tools (F12), go to the Network tab and filter by facebook.com/tr.
  2. Load the page and accept cookies. Trigger the events you care about (for example submit a test lead on your own site).
  3. Click a request and look at its payload. The event ID is sent in the field eid. If there is no eid field, the event has no ID.
  4. 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 own event_id will 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.

  1. 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.

  2. Pass it to the pixel as eventID, the fourth argument of fbq:

    fbq('track', 'Lead', { value: 10, currency: 'EUR' }, { eventID: 'lead-8f3a2c' });
  3. Send the same value as event_id in the Conversions API event, with the same event_name (Lead in this example).

  4. 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 eventID in the fourth argument of fbq. Use the same variable value for the server event, for example by passing it to your server-side GTM container.

  5. 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”.)

  6. Publish your changes.

Common causes

How to verify the fix

  1. In the Network tab, every facebook.com/tr request for your key events carries an eid value, and the value changes between actions.
  2. 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).
  3. Re-run the check on IsPixelWorking. The issue should be gone.

Sources