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):
- Yes, or you are not sure: the event ID is how Meta recognizes that a browser event and a server event describe the same lead. Without it, Meta cannot merge them reliably, and the same conversion may be counted twice. We report this as high when we see signs of server-side tracking for Meta.
- No, browser pixel only: there is nothing to deduplicate yet, so we report it as low. It matters the day you add the Conversions API.
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
- Open your published Framer site in a private (incognito) window, open developer tools (F12), go to Network and filter by
facebook.com/tr. - Accept cookies, then trigger your key events (for example submit a test lead).
- In each request’s payload, the event ID is the field
eid. Noeidmeans no event ID. - 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 ownevent_idwill 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:
- 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.
- 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):
- Create a variable that produces a unique ID per event, for example Stape’s Unique Event ID variable from the Community Template Gallery.
- 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). - Send the same value with the server event, for example by passing it to your server-side GTM container and mapping it to
event_idin 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
- The pixel was pasted into Framer’s custom code using Meta’s standard base code, which does not add event IDs to your events.
- A Conversions API tool was added later, but the old pasted pixel is still the one sending browser events.
- In GTM, the Meta tag’s event ID field is empty or uses a value the server never sees.
How to verify the fix
- In the Network tab, every
facebook.com/trrequest for your key events carries aneid, and it changes between actions. - 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.
- Re-run the check on IsPixelWorking. The issue should be gone.
Sources
- Meta for Developers, Handling duplicate Pixel and Conversions API events: 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: https://www.facebook.com/business/help/2040882565969969
- Framer Marketplace, Pixelary plugin (browser and server events, deduplicated automatically): https://www.framer.com/marketplace/plugins/pixelary/
- PixelFlow Docs, Are events deduplicated by PixelFlow?: https://docs.pixelflow.so/troubleshooting/are-events-deduplicated-by-pixelflow-bl85k
- Framer Help, How to add custom code: https://www.framer.com/help/articles/how-to-add-custom-code/
- 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