Duplicate fires are the single most common bug in real-world tag setups. Pixel Auditor catches them with a three-layer dedup chain plus a rapid-fire heuristic.
The dedup chain
Layer 1 — page agent (400 ms window)
At capture time, fires are deduplicated within a 400 ms window keyed by tagId + eventName + extractedId. This collapses fires captured by both the JS hook and the network layer.
Layer 2 — service worker relay (identity-keyed)
The service worker drops messages from the page agent that match an identity it's already relayed to the panel. Catches the rare case where two content-script instances on the same frame both report the same fire.
Layer 3 — panel-side render (chronological rank)
The panel sorts by capture time and drops adjacent rows with identical fingerprints. Last line of defence.
Rapid-fire heuristic
A row is only marked as duplicate when at least two fires of the same event land within 10 seconds. A purchase event that legitimately fires twice across a session (separate transactions) is not marked duplicate.
Common causes of duplicates
| Cause | Signal |
|---|---|
| Direct + GTM installation of the same pixel | Two installation sources on the tag card |
| SPA route handler + history listener | Multiple page_view on a single route change |
| Hardcoded fbq + GTM Meta tag | Two pixel IDs detected, both firing |
| Conversion tag on every page (instead of just thank-you page) | Multiple purchase on different pages |
| GTM trigger configured on "All Pages" and "Page View" | Two page_view on every page |
Forensic analysis
Click a duplicate row to see the duplicate analysis: timing of each fire, installation source per fire, and an event-specific hint. For example:
What's NOT a duplicate
- Multiple GA4 properties receiving the same hit — that's routing, not duplication.
- The same event firing on different page loads — only intra-session, intra-10s fires are flagged.
- Body-parse failures on identical network requests — Pixel Auditor's null-ID suppression handles this case.