If ad platforms report significantly more conversions than you have real orders — typically almost double — it's almost always missing deduplication between the client-side pixel and server-side measurement.
Symptoms
- The conversion count in GA4 / Meta / Google Ads is much higher than the order count in your store.
- Revenue reported by advertising is inflated.
- The problem appeared after deploying server-side tracking alongside the existing pixel.
Why it happens
When moving to server-side, the pixel (client-side) and server-side measurement often run at the same time. The same purchase is sent by both paths — and if the platform can't match them, it counts it twice. Matching is done via a unique event ID.
How to fix it
- 1. Make sure both paths (pixel and server-side) send the same
event_idon Meta, or the sametransaction_idon purchase events. - 2. Verify the event name (
event_name) matches too — Meta matches on the combination of event_name + event_id. - 3. The ID must come from one source — typically the order ID from your store passed into the data layer. If you generate it randomly in two places, matching fails.
How to verify the fix
- In Meta Events Manager, on the Test Events tab, check that pixel and CAPI events are marked as deduplicated.
- Compare the conversion count with the order count in your store for the same period — they should converge.
For context and a detailed breakdown, see GA4 + Meta CAPI deduplication: what breaks. The basis for a correct ID is a clean data layer.