Facebook Pixel + CAPI Are Both Firing

March 11, 2026
by Cherry Rose

Both are firing. And unless you’ve added one specific parameter, Meta is counting every WooCommerce sale twice. That’s not a guess — 70% of ecommerce stores have broken or incomplete tracking configurations (Conversios, 2025), and undeduped Pixel + CAPI stacks are among the most common silent errors. The result: inflated ROAS, budget optimization pointed at ghost conversions, and campaign decisions built on numbers that don’t reflect reality.

How Deduplication Stops Double-Counted WooCommerce Sales

The fix is a single parameter called event_id. Include it in both your browser pixel and your server-side CAPI payload for the same purchase, and Meta matches the two events and discards the duplicate. Skip it, and every sale gets reported twice — once from the browser, once from your server. This article explains what’s happening, how to check whether it’s happening to you right now, and how to stop it.

Why Both Pixel and CAPI Fire the Same Event

This isn’t a bug. Running Facebook Pixel alongside the Conversions API is exactly what Meta recommends. The browser pixel captures the moment a user completes checkout — fast, immediate, tied to their session. The server-side CAPI event fires from your server — reliable, unaffected by ad blockers, and carrying enriched data like hashed email and phone for better matching.

The hybrid setup is the right setup. The problem is what happens next.

When a customer places a WooCommerce order, two separate systems report a Purchase event to Meta’s Events API: your browser pixel fires immediately from the customer’s browser, and your server-side CAPI integration fires seconds later from your server. Without a shared event_id linking both events to the same order, Meta has no way to know they describe the same transaction. It counts both. Your conversion tally doubles.

Advertisers using server-side tracking typically see 20–30% more attributed conversions versus browser-only tracking (Madgicx / Seresa, 2025) — but only when deduplication is implemented correctly. Without it, that lift is artificial. You’re not recovering lost conversions; you’re counting the ones you already had, twice.

You may be interested in: WooCommerce Tracking Script Bloat Kills Speed and Data

What event_id Is and How It Works

The definition

Definition: Event deduplication is the process by which Meta identifies and removes duplicate conversion events when the same user action is reported by both a browser-side pixel and a server-side API — preventing double-counting.

Key benefit: One real conversion stays in your data. The phantom duplicate disappears.

How it differs from plain CAPI setup: Most tutorials walk you through connecting CAPI and confirming events arrive in Events Manager. Deduplication is a second, separate step — and most tutorials skip it entirely.

Here’s the mechanism. When a customer completes a WooCommerce purchase, your system generates a unique string — the event_id. That same ID gets sent in two places: embedded in the browser pixel’s fbq('track', 'Purchase', {...}, {eventID: 'abc123'}) call, and included in the CAPI server event payload under the same event_id field. Meta receives both events, matches the IDs, and within a 48-hour deduplication window, records only one conversion (Meta for Developers, 2025).

The event_id must be identical in both payloads for the same order. Any mismatch — different strings, one missing — and Meta counts both events as separate conversions.

What inflated ROAS looks like

Facebook already shows 30–40% higher ROAS than click-focused platforms like Google by design — different attribution windows, different counting models (Top Draw Digital Marketing / Seresa, 2025). Without deduplication, that gap inflates further. A store doing 100 real purchases per day suddenly shows 200 in Events Manager. ROAS that should read 3x reads 6x. Meta’s algorithm interprets this as proof the ads are working brilliantly, doubles down on spend, and optimizes toward audiences who never actually bought.

The symptom to watch for: ROAS spikes immediately after CAPI is added, without any change in actual WooCommerce revenue. That gap is your deduplication problem.

You may be interested in: GA4 Says 120. Facebook Claims 180. Google Shows 95.

How to Verify Deduplication in Meta Events Manager

You don’t need a developer to diagnose this. Here’s the four-step check:

  • Open Events Manager and select your pixel.
  • Click the Events tab and filter for Purchase events.
  • Look for the Deduplication column. Events received from both browser and server will show a deduplication match rate. A rate near zero means your event_ids are missing or mismatched.
  • Use Test Events to fire a live test purchase and inspect the raw payload. Confirm event_id appears in both the browser and server event with the same value.

If your Events Manager shows Purchase events arriving from both browser and server but the deduplication rate is zero, you have double-counting. Every campaign decision you’ve made since adding CAPI has been based on inflated data.

The Practical Fix for WooCommerce Stores

Implementing event_id correctly requires generating the unique identifier at the order level — before the browser pixel fires — and passing the same value to your CAPI server event. In WooCommerce, this typically means generating a UUID or hashed order ID when the thank-you page loads, injecting that ID into the browser pixel’s fbq call as the eventID parameter, and passing the same ID to your server-side CAPI event, matched to the same order.

Third-party scripts cause 50–80% of total website performance slowdowns (Marketing LTB, 2025) — adding a manual deduplication layer on top of an already fragile pixel + CAPI setup compounds both the tracking and the performance risk.

Translation: patching this manually on a WooCommerce store that’s already running multiple tracking scripts is genuinely messy. The event_id has to travel from server to browser to pixel to CAPI, staying consistent across the entire round trip. Miss one handoff and you’re back to counting twice.

Transmute Engine™ handles this automatically. It’s a first-party Node.js server that runs on your subdomain (e.g., data.yourstore.com) — not a WordPress plugin. The inPIPE WordPress plugin captures WooCommerce purchase events and sends them via API to your Transmute Engine server, which generates a unique event_id server-side, injects it into the browser pixel via a data layer push, and includes the identical ID in the CAPI server event payload. Deduplication works by default, from the first order, without manual implementation.

Key Takeaways

  • Running Facebook Pixel + CAPI without event_id deduplication counts every purchase twice — inflating ROAS and corrupting campaign optimization signals sent to Meta.
  • The event_id parameter must be identical in both the browser pixel and the server CAPI event for the same order. Meta deduplicates within a 48-hour window when the IDs match (Meta for Developers, 2025).
  • Diagnosis is free and fast: check the Deduplication tab in Meta Events Manager. A near-zero match rate confirms double-counting.
  • A sudden ROAS spike immediately after adding CAPI — with no matching lift in WooCommerce order revenue — is the most reliable symptom of undeduped events.
  • Manual implementation is error-prone because event_id must stay consistent across browser, server, and CAPI payload — any mismatch breaks deduplication silently.
Will adding CAPI to my WooCommerce store cause duplicate Facebook conversions?

Yes — unless you implement event_id deduplication. When both Facebook Pixel (browser) and CAPI (server) fire a Purchase event for the same order, Meta counts both unless the events share an identical event_id. Without it, every purchase appears twice in your Events Manager, inflating ROAS and misfiring budget optimization.

What is event_id deduplication in Meta Conversions API?

event_id is a unique identifier you include in both the browser pixel and the server-side CAPI payload for the same user action. Meta matches events from both sources using this ID within a 48-hour window. When the IDs match, only one conversion is recorded — eliminating the duplicate.

How do I check if my Facebook Pixel and CAPI are sending duplicate events?

Open Meta Events Manager, select your pixel, click the Events tab, and look for events flagged as received from browser and server. If the Deduplication column shows zero matches, your event_ids are missing or mismatched. The Test Events tool lets you fire a live test purchase and inspect both payloads in real time.

My Facebook ROAS doubled after adding CAPI — is that real or duplicate counting?

Almost certainly duplicate counting. A sudden ROAS spike after adding CAPI — without implementing event_id — is the most reliable symptom of double-reporting. Check Events Manager under the Deduplication tab. If the deduplication rate shows near zero matches, you’re counting every purchase twice and feeding inflated signals into Meta’s campaign optimization.

Your CAPI setup is only as good as your deduplication. Get the event_id right and the hybrid pixel + server stack works exactly as intended. Skip it and you’re optimizing toward data that doesn’t exist. Seresa.io handles this automatically — no manual implementation, no mismatch risk.

Share this post
Related posts