Skip to main content
Dedup checkerFree tool

Check whether your two paths deduplicate

Paste the browser event and the server event from the same real conversion. This compares the event IDs byte for byte and the event names exactly, which are the two things a destination matches on. If they differ, every conversion you record is being counted twice and bidding has learned a click is worth roughly double — which is why reported ROAS looks excellent right up until someone compares it against the bank.

Free30 minutesNo obligation

Free toolRuns in your browser · nothing is uploaded

Check whether your two paths deduplicate

Paste the browser event and the server event from the same real conversion. This compares the event IDs byte for byte and the event names exactly — the two things a destination matches on. If they differ, every conversion you record is being counted twice and bidding has learned that a click is worth roughly double.

Browser event (from the Pixel or tag)
Server event (from your container or integration)

Paste both payloads from the same conversion and press Check. Everything happens in your browser. Nothing is sent anywhere.

What should I use as the event ID?

Your order number. Stable, unique, and available identically to the browser and the server without either needing to coordinate with the other.

Dedup checker · what breaks

What this tool is for — Dedup checker

  1. 01

    Your conversion count looks doubled

    Roughly a 2.0 ratio against your real orders.

  2. 02

    You added CAPI to an existing Pixel

    The most common way this happens.

  3. 03

    No deduplication indicator

    And you want to know why before you start changing things.

Dedup checker · the fix

What you get out of it — Dedup checker

  • An exact-match verdict

    Byte for byte, not 'both present'.

  • A case-sensitivity check on event names

    Which alone produces two events even with a shared ID.

  • A suggestion for what to use as the ID

    Per conversion type.

Dedup checker · architecture

Why deduplication fails so consistently

It's structural rather than careless — the two paths are almost always built at different times by different people.

  1. 1

    The paths are built separately

    A Pixel goes in early. CAPI is added later, often by a platform app. Neither knows the other exists.

  2. 2

    A valid ID is not a shared ID

    Both events process successfully and look correct in isolation. Nothing errors anywhere.

  3. 3

    Timestamps look like IDs and aren't

    They match on the day you test and collide when two conversions land in the same millisecond.

  4. 4

    Nobody opens the indicator

    Meta exposes a Deduplicated marker. It's the only visible signal and most accounts have never looked at it.

Dedup checker · diagnose

What this tool cannot tell you — Dedup checker

Stated up front, because a tool that implies more confidence than it has is worse than no tool. These are checks you have to run yourself.

  1. 01

    Whether a third path exists

    Two payloads can't reveal a partner integration you forgot about. Inventory every system that could be sending.

  2. 02

    Whether it holds over time

    One conversion proves the mechanism. Read the destination's indicator over a full week for the ongoing behaviour.

  3. 03

    Whether the server event arrives in time

    A long send delay can push it outside the deduplication window, and that's invisible from the payload.

  4. 04

    Which of the two paths is wrong

    Neither, usually. They just don't share an ID.

Dedup checker · prove

How to confirm the result — Dedup checker

Against your own records, not against the tool's output.

Source of truth

your backend records, matched on the business ID used as the event ID

  • Identical event ID confirmed on both paths for one real conversion.
  • Deduplicated indicator visible over a full week.
  • Conversion count within a few percent of your own records.
  • No business ID appearing twice at any destination.
  • Reconciled over a fully closed window, matched per record rather than on totals.
  • Re-checked after your next site release, which is when most breaks happen.

Dedup checker · free audit

What we check in the free audit

  • Whether a third path exists
  • Whether it holds over time
  • Whether the server event arrives in time
  • Which of the two paths is wrong

Checked against

your backend records, matched on the business ID used as the event ID

Get my free conversion tracking audit

Free30 minutesNo obligation

Dedup checker · when not to buy

Why this isn't gated — Dedup checker

There's no email form in front of it, and that's deliberate.

  • A tool you have to pay for with your contact details is a lead form wearing a costume. If this is useful, it should be useful without a transaction.
  • Everything it does runs in your browser. There is no endpoint, so there is nothing for us to collect even if we wanted to — open your network tab and check.
  • It will tell you when you don't have a problem. That outcome costs us a sale and happens regularly, which is the point of publishing it rather than putting it behind a call.
  • If it does find something and you'd rather fix it yourself, the reference pages on this site cover the how. Hiring us is one option, not the conclusion.

Dedup checker · what we deliver

What it checks

  • Event IDs, character by character

    A single difference means no deduplication.

  • Event names, exactly

    Including a specific check for case-only differences.

  • ID fragility

    Flags a shared ID that looks like a millisecond timestamp — works today, fragile tomorrow.

  • Presence on both sides

    One ID can't deduplicate against nothing.

Pricing

Pick the package that fits your ad spend

Browser-side starter

$400One-time fee · lifetime ownership

If the tool found something and you'd rather not fix it yourself: we repair the root cause in your existing setup and verify it on a live conversion.

  • Root cause fixed, not worked around
  • Verified on a live conversion
  • Reconciled against your own records
  • Written handover
Have it fixed

1st-party server-side

Recommended

$800One-time fee · most popular

Removes the class of failure rather than the instance. Money events from your own records through a first-party container on your subdomain.

  • First-party server container on your own subdomain
  • Events from your records, not the browser
  • Deduplicated on a shared event ID at every destination
  • First-party cookies beyond Safari's 7-day cap
  • 95%+ accuracy and 8+ Meta EMQ, guaranteed in writing
Rebuild it server-side

Full 1st-party stack

$1,800One-time fee · lifetime ownership

Every paid channel server-side plus the offline loop, with monitoring so the next break surfaces in days rather than at quarter end.

  • Everything in 1st-party server-side
  • Pinterest, Snapchat, Reddit and LinkedIn CAPI
  • CRM and offline conversion loop
  • Refunds and cancellations corrected wherever each platform allows it
  • Monitoring on every destination
Get the full stack

FAQ

Dedup checker questions, answered

A stable business identifier — the order number for a purchase, a lead ID for a lead. Both paths can produce it identically without coordinating.

Free · 30 min

Stop counting every sale twice

Free30 minutesNo obligation