Why it happens
Browser and server events do not deduplicate
Browser and server events do not deduplicate
Both sides send Purchase, one without the shared event_id. Meta counts each. See Conversions API deduplication.
The pixel is installed twice
Theme code plus a store app, or hard-coded plus Google Tag Manager. Every page view and purchase fires two times.
The thank-you page fires on every load
A buyer refreshes or comes back to the confirmation page from an email, and Purchase fires again.
Two server sources
A partner integration and a custom setup both send server events. Server counts run near double the browser counts.
Two pixels feed the same ad account
Two datasets both connected and both firing Purchase. Reports that sum them double count.
How to fix it, step by step
Count against orders
Compare Purchase in Events Manager with orders in your store for the same days. For the analytics side, see GA4 vs Meta and PostHog vs Meta.
Read the event details
Open Purchase in Events Manager. Event deduplication shows whether both sides carry the event ID.
Count the requests on the page
On the confirmation page, filter the Network tab for facebook.com/tr. More than one Purchase request per order is a double install or a double fire.
Remove the extra install
Keep one base code per pixel: the store integration or the manual code, not both.
Fire Purchase once per order
Use the order ID as the event ID, so a reload sends the same ID and Meta drops the repeat.
Steps checked against Meta Business Help Center articles: About deduplication for the Meta Pixel and Conversions API; Troubleshoot your Meta Pixel; About standard events.
Sprites diagnoses this
Sprites diagnoses it
Sprites reads your pixel and CAPI health and shows where it breaks: which events double count and which side sends the extra.
What Sprites does
- Reads deduplication health per event from event ID coverage on both sides.
- Reads how many server events arrive per browser event, so a server side sending twice stands out.
- Lists every pixel on the ad account, so a second dataset firing the same events shows up.
- Lines Meta purchases up with Ads Manager and with GA4 or PostHog when you connect them.
What it doesn't do
- Remove a duplicate install from your site
- Change the events your server sends
Questions
Why is my Meta pixel counting purchases twice?
Usually browser and server events without a shared event ID. After that: the pixel installed twice, or Purchase firing on every load of the thank-you page.
How do I find duplicate pixel installs?
On any page, filter the Network tab for facebook.com/tr and reload. Two PageView requests for the same pixel ID is a double install.
Do duplicate events hurt my ads?
Yes. Reported cost per purchase looks better than it is, and the ad set learns from inflated signals.
Is it normal for Meta to show more purchases than my store?
Not by much. Attribution can credit a purchase to an ad differently, but raw Purchase events above real orders means double counting.
- Conversions API deduplication
- Meta pixel not tracking purchases
- Meta Conversions API
- Meta pixel not firing
- Event Match Quality
- CAPI not receiving events
- Pixel events not showing in Events Manager
- Meta pixel not active
- Meta pixel not showing in Ads Manager
- Meta pixel vs Conversions API
- Meta test events not working
See where it breaks
Connect your accounts. Sprites reads them side by side and shows you exactly where the numbers split.