How deduplication works
Modern measurement deliberately reports the same action twice. The browser fires a pixel when the purchase page loads, and your server sends the same purchase through an API. That redundancy is the point — each source catches events the other loses — but it leaves the platform holding two messages about one sale.
Deduplication is the matching step that collapses them. The platform compares the event name and the identifier carried on each message, and where both agree it keeps one and discards the other. Some platforms will also fall back to other signals, but a shared identifier is the only method you can rely on, because it is the only one that is unambiguous.
Timing plays a part too. The two copies are expected to arrive within a reasonable window of each other; a server send that is queued for hours may arrive after the platform has stopped looking for a match.
Why deduplication matters
When it fails, every commercial number moves in the flattering direction. Conversions inflate, cost per acquisition falls, return on ad spend rises. Nothing looks broken — a report full of double-counted sales looks like a report of a good month, which is exactly why the fault can run for a long time before anyone questions it.
Bidding is affected as much as reporting. Automated strategies optimise towards the conversions they are told about, so if duplication is uneven across campaigns, audiences or devices, the system shifts budget towards whichever segment happens to double-count most. You then scale the wrong thing on the strength of numbers you trusted.
Where deduplication goes wrong
Most failures come down to the two copies not agreeing. The event ID is generated separately on each side, so the values never match. The event name differs — one send uses the platform’s standard name, the other a custom variant. Or only one copy carries an identifier at all, which is enough to break the match.
There is a second family of duplicates that has nothing to do with server sends: the same tag firing twice on the same page. This happens when a tag is hard-coded into the theme and also added through a tag manager, or when a confirmation page can be reloaded or reached again from the browser’s back button.
The instinctive fix — remove one source — is usually the wrong one. Deleting the server send restores the count but gives back the completeness you added it for.
How to act on it
Start by finding out whether you have a problem, because the symptom is subtle. Compare the platform’s conversion count against the orders or enquiries in your own system for the same period. Your own records are the truth; a platform reporting materially more actions than you actually received is duplicating.
Then check the mechanics: one identifier generated per action and shared by both sends, identical event names, and both copies dispatched close together. Meta’s Events Manager and a server-side tag container both report on matching, so use their output rather than guessing. Re-check after any website rebuild or theme change, since a lost identifier or a second hard-coded tag is easy to introduce and invisible from the front end — this is routine work in an analytics and tracking setup and worth scheduling rather than waiting for a report to look odd.