You set up the pixel and CAPI, dedup worked, and then one week your conversions quietly doubled. Deduplication is easy to configure and easy to break, and the breakage rarely announces itself.

Here's how to diagnose it from the symptom, not from the docs.

How dedup is supposed to behave

Meta drops a duplicate when a pixel event and a CAPI event share the same event_name and event_id, within about a 48-hour window. When that link holds, you see one event received from two sources.

Every failure below is really the same failure: that link quietly broke.

Symptom: conversions roughly doubled

The classic sign is a Purchase count that jumped without more sales. Check the event_id first.

  • The browser and server are sending different event_ids, so nothing matches.
  • A tag update changed the id source, for example from order id to a random value.
  • A second integration, a plugin or the native channel, started firing its own Purchase.

Symptom: match quality dropped but counts look fine

Dedup is holding, but the server events carry weak identifiers. Usually the server is reading its own IP and user agent instead of the visitor's, or fbp and fbc aren't being forwarded.

Symptom: only some events double

One event type, often Purchase from a post-purchase upsell or a thank-you page reload, fires twice with the same or a new id. Isolate which event and which page, then pin its event_id.

The fixes, in order

  1. Confirm the same event_id reaches both the pixel and CAPI, ideally a stable business id like the order id.
  2. Confirm event_name matches exactly on both sides, since dedup keys on both fields.
  3. Forward the real client IP, user agent, fbp, and fbc from the request, not the server's own values.
  4. Hunt down the second integration and turn one off.

Prove it with the diagnostics

Events Manager shows, per event, how many were deduplicated over the last several days. That number is your source of truth, so watch it after every tag change, not just at launch.

A fast triage order

When counts look wrong, work from the cheapest check to the most expensive:

  1. Open one recent conversion in Events Manager and read whether it was received from one source or two.
  2. If two but not deduplicated, compare the event_id on the pixel and the server for that exact event.
  3. If deduplicated but match quality is low, inspect the user_data the server sent.
  4. If a second Purchase appears with a new id, hunt the integration or page that fired it.

The changes that quietly break it

Deduplication rarely breaks on its own. It breaks when something changed: a plugin update, a new theme, a tag edit, a migration to server-side, or a marketer enabling the native channel "to be safe."

So the most useful habit is boring. After any tag or platform change, open the diagnostics and confirm the deduplication rate held. Catching it the day it moves is minutes of work; catching it a month later means a month of doubled numbers in every report.

Keep a note of which integration owns each event, so the next person doesn't add a second one on top.

And when you find the culprit, fix the root cause, not the symptom. Turning off one of two integrations stops the doubling today; making sure only one thing can ever own an event stops it from coming back next quarter.

Getting pixel and CAPI deduplication right isn't a one-time setting, it's a link you keep from breaking. Read the symptom, check the event_id first, and the double counting that appeared out of nowhere goes away as quietly as it came.

Want a stronger data analyst role or a raise? Grab the FREE Product Analyst Playbook and get the exact roadmap to your next offer.