The loss is silent by design
When a browser-fired conversion event is blocked, nothing anywhere reports an error. The event simply does not arrive. Meta, Google and TikTok each continue reporting confidently on the subset that did arrive, and nobody looking at those dashboards has any way to tell that a third of the picture is missing.
That matters more than the missing revenue attribution, because the platforms use those events to decide who to show your ads to. Optimising against a filtered sample means optimising toward whoever is least likely to block tracking — which is not the same population as whoever is most likely to buy.
View as table
| Stage | Events arriving |
|---|---|
| Actual purchases | 100 |
| After browser prevention | 74 |
| After ad blockers | 63 |
| After consent | 51 |
| After mechanics | 44 |
Illustrative of the mechanism, not measured from a client account. Real loss varies substantially by market, device mix and consent implementation.
Where it goes, roughly in order
Tracking prevention built into the browser removes a share outright, before any extension is involved. Ad blockers take another. Consent banners, correctly implemented, withhold more. Then a further slice is lost to ordinary mechanics — the tab closed before the pixel fired, the redirect that dropped the parameter, the app that stripped it.
None of these are faults. Most are a browser or a user behaving exactly as intended. The mistake is building a measurement strategy that assumes they do not happen.
Why server-side changes the shape
Sending the conversion from your server rather than the visitor's browser removes the categories of loss that happen inside the browser. It does not — and must not — remove the consent requirement, which is a legal question rather than a technical one.
The catch is deduplication. Send both browser and server events without a shared identifier and every conversion is counted twice. Reported return looks excellent, budget increases on the strength of it, and the correction arrives a quarter later.
What to take from this
- A conversion gap does not announce itself — the dashboard looks normal.
- Partial data skews who your ads are shown to, not just what is reported.
- Server-side collection fixes technical loss; it does not replace consent.
- Without shared event identifiers, fixing the gap creates double counting instead.
See whether this is happening to you
The free diagnostic checks your storefront for exactly these patterns and tells you which ones apply.
Scan my store free