Meta Pixel firing twice: how to find duplicate events in the browser
If one action sends two Purchase or Lead events to the same Pixel, investigate the repeated send. The browser shows the outgoing requests; check Meta separately to establish what it received and counted.
1. What Meta's deduplication covers
Meta's documentation describes deduplication between browser and server events.
The Pixel's eventID must match the server's event_id,
and the Pixel's event must match the server's event_name.
For the same Pixel ID, Meta discards subsequent matching events received within
48 hours of when Meta receives the first event with that event ID. That covers one
event arriving from two sources. For its alternative method, based on fbp or external_id, the
page notes that two consecutive browser events with the same information are not discarded. Don't count on Meta to
absorb a repeated send from the page: fix it where it starts.
2. How to see it in the browser
- Open DevTools, go to the Network tab, enable Preserve log and filter by
facebook.com/tr. - Go through the step you want to check, for example the order confirmation.
- Open each request:
evis the event name,idis the Pixel ID andeidis the event ID, if the site sends one. - Two requests with the same
evandidfor the same action are repeated browser sends. Compare their payloads, status and Initiator before concluding that two tags fired. Different Pixel IDs are different destinations, which may be intentional.
Reload the thank-you page once as part of the check: a purchase sent again on reload is one of the most common cases.
3. Usual causes
- The Pixel is installed twice, for example in the theme code and again through a tag manager or a platform integration, so each event is sent by both.
- The event is triggered twice: a Tag Manager trigger that matches two data layer events, or a click handler attached twice.
- The thank-you page sends the purchase on every load, so a reload or a return visit sends it again.
- Single-page apps that send a PageView on route changes and also on the initial load for the same page.
4. Fix and check again
For each intended Pixel ID, remove overlapping sending paths for the same action and send Purchase once per order. If you also use the Conversions API, send the event to the same Pixel ID from the browser and the server, with the same event name and event ID, so Meta can deduplicate the pair (see how to check Meta Pixel event parameters). The same problem often affects GA4 on the same page (see duplicate purchase events in GA4), and duplicates are one of the reasons purchases in GA4 and Meta don't match (see GA4 and Meta purchases that don't match).
Checklist
- One
facebook.com/trrequest per event and action, per Pixel ID. - The purchase is not sent again when the thank-you page is reloaded.
- If you use the Conversions API, the Pixel
eidmatches the serverevent_idfor the same event name and the same Pixel ID.