Fix guide · Framer · advanced · about 60 min

Meta events have no event ID on Framer

For the finding “Meta events have no event ID”. Not on Framer? See the general guide.

What this means

Each Meta Pixel event can carry an event ID, a unique label for that one action. Your events arrive without one.

Whether this costs you money depends on whether your site also sends events from a server through the Meta Conversions API (CAPI):

We cannot see server-to-server traffic from a browser, so we cannot tell whether your Conversions API works; we only check the browser events.

How to confirm it yourself

  1. Open your published Framer site in a private (incognito) window, open developer tools (F12), go to Network and filter by facebook.com/tr.
  2. Accept cookies, then trigger your key events (for example submit a test lead).
  3. In each request’s payload, the event ID is the field eid. No eid means no event ID.
  4. IDs that start with ob3_plugin-set_ are set by Meta’s own pixel code, not by your site. Meta does not document whether they can be matched with Conversions API events. Your server does not know these IDs, so server events you send with your own event_id will not match them.

How to fix

Meta merges a browser event and a server event when both have the same event name and the same event ID, received within 48 hours of each other. On Framer you have three realistic routes.

Route 1: a tracking plugin that does browser and server together. Several tracking plugins for Framer (for example Pixelary or PixelFlow) offer a server-side Conversions API option next to the browser pixel. Where the plugin sends both, it can give them a shared ID, so you do not have to write code. Both Pixelary’s marketplace page and PixelFlow’s documentation say they deduplicate browser and server events; for any tool, check its documentation to confirm. If you choose this route:

  1. Remove any Meta base code you pasted into Framer’s custom code (Project Settings > Custom Code) or into GTM, so the plugin’s pixel is the only one.
  2. Turn on the plugin’s server-side (Conversions API) option and check its documentation for how it sets event IDs.

Pixelary is built by the same team as IsPixelWorking. The check gives the same result whichever tool you use.

Route 2: Google Tag Manager with server-side GTM. If your Meta Pixel runs as a GTM tag (often alongside Framer’s Cookie Banner component):

  1. Create a variable that produces a unique ID per event, for example Stape’s Unique Event ID variable from the Community Template Gallery.
  2. 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 (see Route 3).
  3. Send the same value with the server event, for example by passing it to your server-side GTM container and mapping it to event_id in the Conversions API tag.

Route 3: your own code. If you send server events from your own backend (for example from a form handler), pass the same ID to the pixel as the fourth argument of fbq, and as event_id on the server:

fbq('track', 'Lead', {}, { eventID: 'lead-8f3a2c' });

The ID must be generated once and shared by both sides; two separately generated random IDs will never match.

Common causes

How to verify the fix

  1. In the Network tab, every facebook.com/tr request for your key events carries an eid, and it changes between actions.
  2. In Meta Events Manager, open Data sources > your pixel or dataset > Test events and trigger the action: the tool shows which events were received and which were deduplicated. Regular reports can take 30 minutes or more to update.
  3. Re-run the check on IsPixelWorking. The issue should be gone.

Sources