Meta pixel counting purchases twice: causes and how to fix duplicates
Meta counts a purchase twice when the same sale reaches it from two places without a shared event_id, for example the pixel and the Conversions API, or two apps or plugins that both send Purchase. It also happens when customers return to the thank-you page from an external payment page and the pixel fires again. The fix is one source per event and the same event_id on the browser and the server event.
The usual causes
- Pixel and Conversions API both send Purchase, but without the same event_id, so Meta cannot tell they are the same sale.
- Two tools send the event: a platform app plus a plugin, or an app plus Google Tag Manager.
- The thank-you page loads twice: after an external payment, a refresh or a return from the payment provider.
- The Purchase event is set on a page that also loads for other actions.
How to check it
- Compare one week of real orders against the purchases in Events Manager.
- In Events Manager, open the Purchase event and look at how many events arrive from the browser and from the server, and the deduplication status.
- Use the Test Events tool, make one test purchase and count how many Purchase events arrive.
How to fix it
- Leave a single tool sending each event to Meta.
- Send the same event_id, usually the order ID, with the browser event and the server event.
- Fire Purchase only once per order, for example by checking the order ID before sending.
Frequently asked questions
Will Shopify, Meta and Google ever match exactly?
No. Each platform counts in its own way. A small, stable gap is normal; a gap above about 20% usually means something is broken.
Does deduplication need the Conversions API?
Deduplication matters when you send events from both the browser and the server. With the pixel only, duplicates come from double firing on the page.
Meta Conversions API · Fixed price: 49 USD. You get the price in writing before any work starts.