Meta Ads · Sprites diagnoses this

Conversions API deduplication

Meta deduplicates a browser event and a server event when both carry the same event name and the same event_id. If either side leaves the event_id out, the same purchase counts twice. Open the event in Events Manager: it shows what share of browser and server events carry the key.

$1 today. Cancel anytime before day 7.

What Sprites checks

  • ✓Purchase event ID, browserOn 98%
  • !Purchase event ID, serverOn 12%
  • !Purchase deduplicationBroken
  • ✓Lead deduplicationHealthy
Illustration of a typical broken account. Your own readout comes from your account.

Why it happens

The server sends no event_id

  1. The server sends no event_id

    The most common one. The pixel passes an ID, the server integration does not, and nothing pairs.

  2. Each side makes its own ID

    Both send an event_id, but the browser and the server each generate a random one. They never match.

  3. The event names differ

    Purchase on one side and purchase or a custom name on the other. Names must match exactly.

  4. The server event arrives too late

    Meta pairs a server event with its browser twin only when it arrives within 48 hours of it. Batched uploads that run later miss the window.

  5. Two server sources

    A store integration and a hand-built setup both send Purchase. That is a duplicate dedup cannot catch. See duplicate events.

How to fix it, step by step

  1. Read the event details

    In Events Manager, open Data sources, your dataset, Overview, and select the event. Event deduplication shows the share of browser and server events that carry the key.

  2. Generate one ID per action

    Make the ID once, on the page, for each action. An order ID works for Purchase. Pass it to the pixel as eventID and send the same value to your server.

  3. Send the same ID and name from the server

    The server event carries event_id with the identical value and an event_name spelled exactly like the browser one.

  4. Send promptly

    Post server events in real time, not in a nightly batch.

  5. Confirm in Test events

    Fire the event from the browser and the server with your test code. Test events marks the pair as deduplicated.

Steps checked against Meta Business Help Center articles: About deduplication for the Meta Pixel and Conversions API; Test your events in Events Manager. Meta for Developers: Handling duplicate pixel and Conversions API events.

Sprites diagnoses this

Sprites diagnoses it

Sprites reads your pixel and CAPI health and shows where it breaks: for every event, whether the browser and server sides pair up or double count.

What Sprites does

  • Reads, per event, the share of browser events and of server events that carry the event ID.
  • Calls deduplication healthy when both sides carry it on 90 percent of events or more, and broken when one side carries it on under half.
  • Says plainly when Meta returned no deduplication data for an event, rather than guessing.
  • Shows browser and server counts side by side before deduplication, so the size of the double count is visible.

What it doesn't do

  • Add the event ID to your pixel or server code
  • Send events to the Conversions API

Questions

How does Conversions API deduplication work?

Meta keeps one event when a browser event and a server event share the same event name and event_id, and arrive within 48 hours of each other.

What should the event_id be?

Any value unique to that action and identical on both sides. An order ID is the easiest for purchases.

How do I know deduplication works?

Open the event in Events Manager. Both browser and server should carry the key on nearly every event.

Do I need deduplication if I only use the Conversions API?

No. With one source there is nothing to pair. It matters the moment both send the same event.

See where it breaks

Connect your accounts. Sprites reads them side by side and shows you exactly where the numbers split.