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
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.
Paste both payloads from the same conversion and press Check. Everything happens in your browser. Nothing is sent anywhere.
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
- 01
Your conversion count looks doubled
Roughly a 2.0 ratio against your real orders.
- 02
You added CAPI to an existing Pixel
The most common way this happens.
- 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
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
A valid ID is not a shared ID
Both events process successfully and look correct in isolation. Nothing errors anywhere.
- 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
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.
- 01
Whether a third path exists
Two payloads can't reveal a partner integration you forgot about. Inventory every system that could be sending.
- 02
Whether it holds over time
One conversion proves the mechanism. Read the destination's indicator over a full week for the ongoing behaviour.
- 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.
- 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
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
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
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
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.
Only if it's generated once and both paths read the same value. Generated separately per path, it defeats the whole mechanism.
For that conversion, the mechanism works. Read the destination's indicator over a week, and check no third integration is also sending.
Most destinations match on name and ID together. Purchase and purchase are two different events, so a case difference produces two conversions even with a shared ID.
