Fix guide · WordPress · advanced · about 60 min

Meta Pixel events have no event ID on WordPress

For the finding “Meta events have no event ID”. Also for: Any website, Shopify, Webflow, Framer.

What this means

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

The Meta Pixel (still often called the Facebook Pixel) sends events from the visitor’s browser; the Meta Conversions API (CAPI) sends them from a server. Whether a missing event ID costs you money depends on whether your site also sends events from a server through the Conversions API. On WordPress that is common, because Meta for WooCommerce, Meta Pixel for WordPress and several tracking plugins can send server events:

  • 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, 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

  1. Log out of WordPress or use 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: submit a test lead, or on a store add a product to the cart.
  3. In each request’s payload, the event ID is the field eid. No eid means no event ID. Note which events lack it: if AddToCart carries an ID but a second PageView or Lead does not, the events without an ID usually come from a second installation.
  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 you send yourself.

In Meta Events Manager, the Test events tool (Data sources > your pixel or dataset > Test events) shows which browser and server events arrived and which were deduplicated.

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 WordPress, the simplest way to get there is to let one plugin send both the browser and the server event, because it can give them a shared ID.

Route 1: one plugin for browser and server events.

  • WooCommerce stores, Meta for WooCommerce (formerly Facebook for WooCommerce, under Marketing > Facebook): WooCommerce’s documentation says the Conversions API is built in once the extension is set up, and that pixel and Conversions API events are deduplicated with a unique event ID.
  • Sites without WooCommerce, Meta Pixel for WordPress: its plugin page says it supports the Conversions API. Set it up under Settings > Meta (Get Started): complete Meta’s Business Extension flow and agree to share the access token with your site. Then check in the Network tab which of its events carry eid.
  • PixelYourSite: add your pixel ID and a Conversions API access token in its Meta settings. Its documentation describes every event being sent from the browser and the server with an event ID.
  • Pixel Manager for WooCommerce: server-side Conversions API tracking is part of its Pro version; check its documentation for how it sets event IDs.

Then:

  1. Remove every other copy of the pixel: base code pasted into a snippet plugin such as WPCode, Elementor Pro’s Custom Code, a theme field or header.php, Meta tags in GTM, and a second tracking plugin. These tools only add IDs to the events they send; events from another copy arrive without one (and usually also show up as “Duplicate Meta events”).
  2. Keep the plugin updated and connected to Meta. Its server events depend on that connection.
  3. Watch out for full-page caching. If a plugin writes the event ID into the page’s HTML, a page cache (WP Rocket, LiteSpeed Cache, your host’s or CDN’s cache) can serve the same ID to every visitor, and Meta then drops real events as duplicates. PixelYourSite’s documentation describes this problem and, for that reason, delivers the ID through a separate request that the cache does not store (the Events delivery options in PixelYourSite Professional, on by default). With any plugin, check that eid changes when you open the same page in a new private window.

Route 2: Google Tag Manager with server-side GTM. If your Meta Pixel runs as a GTM tag (GTM added by Site Kit, GTM4WP or a snippet; GTM4WP can push WooCommerce events such as add_to_cart and purchase to the data layer):

  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 in the fourth argument of fbq.
  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 a developer sends server events from your theme or a custom plugin (for example from a WooCommerce order hook), pass the same ID to the pixel and to the server. For purchases, an ID built from the WooCommerce order number works well:

fbq('track', 'Purchase', { value: 49.90, currency: 'EUR' }, { eventID: 'order-1234' });

The server event must use event_id: "order-1234" and the event name Purchase. Two separately generated random IDs will never match.

Common causes

  • The pixel was pasted with Meta’s standard base code (in a snippet plugin, theme field or page builder), which does not add event IDs to your events.
  • A plugin with the Conversions API was added later, but an older pasted pixel or GTM tag still sends its own browser events.
  • Two tracking plugins run side by side, and only one of them sets event IDs.
  • In GTM, the Meta tag’s event ID field is empty or uses a value the server never sees.

How to verify the fix

  1. In the Network tab, every facebook.com/tr request for your key events carries an eid, and the value changes between actions and between visitors (test in two private windows).
  2. In Meta Events Manager, Test events shows browser and server events for the same action as deduplicated. Regular reports can take some time to update.
  3. Re-run the check on IsPixelWorking. The issue should be gone.

Sources