Key takeaways
- Duplicate events happen when the same pixel is installed in two places simultaneously (e.g., both via a Shopify app and manually in theme.liquid).
- Signs of duplicates: doubled purchase events in Meta Events Manager, inflated GA4 conversions, ad platform ROAS that seems too good.
- Fix: keep one installation per platform, either the platform’s Shopify app or one custom pixel in Customer events.
- The checkout’s Additional scripts field has been turned off, so checkout tracking now runs through Customer events (app pixels or custom pixels).
To fix duplicate pixel events in Shopify, find every place the same pixel is installed (a sales channel app, theme.liquid, a custom pixel in Customer events or GTM), keep one and remove the rest, then test a purchase in Meta Test Events and GA4 DebugView. Duplicates inflate reported conversions and ROAS.
How do you know if you have duplicate events?
Meta Ads Manager: Go to Events Manager → your Pixel → Test Events. Purchase events should fire once per completed order. If you see two identical events firing within seconds of each other, you have duplicates.
GA4: Go to Configure → DebugView. Complete a test checkout. If the purchase event appears twice with the same transaction ID, you have duplicates.
Indirect signs: Your reported conversions in an ad platform are significantly higher than your Shopify order count for the same period.
Common causes of duplicate pixel events in Shopify
Cause 1 — App + manual code both active
The most frequent cause. You installed the Meta Pixel manually in theme.liquid years ago. Then you installed the Facebook & Instagram Shopify app, which also installs the pixel. Now both are firing.
Check: Online Store → Themes → three-dot menu (…) next to your theme → Edit code → open theme.liquid. Search for fbq (Meta Pixel code). If you find it AND you have the Facebook & Instagram app installed, you have a duplicate.
Fix: Delete the manual fbq code from theme.liquid. The app handles everything.
Cause 2 — Customer Events + theme.liquid both active
You set up a tracking pixel via Settings → Customer events. You also have the same pixel code in theme.liquid or via GTM. Both fire on storefront pages, and Customer Events also fires on checkout pages (which theme.liquid can’t reach).
Check: Settings → Customer events → look at which pixels are active. Compare against your theme.liquid and GTM container.
Fix: Use Customer Events only, remove the theme.liquid version. Or run storefront tags through GTM and keep Customer Events only for the checkout events GTM can’t reach.
Cause 3 — Tracking rebuilt from the old “Additional scripts” field
Additional scripts on the Thank you and Order status pages were turned off (Plus: August 28, 2025; other plans: August 26, 2026), so code there no longer fires. If you rebuilt it as a custom pixel, check you did it only once, and that an app isn’t sending the same purchase event.
Check: Settings → Customer events → compare your custom pixels with the app pixels listed for the same platform.
Fix: Keep either the app pixel or the custom pixel for each platform, not both.
Cause 4 — Multiple GTM containers
Some stores have more than one GTM container installed (from different team members setting things up independently). Both contain purchase tracking tags.
Check: Open your storefront, right-click → View Page Source → search for GTM-. If you see multiple GTM container IDs, you have multiple containers.
Fix: Consolidate tracking into one GTM container, remove the other.
For old app snippets left in your theme, see how to remove leftover app code from Shopify.
How to fix duplicate Meta Pixel events
- Decide on one installation method: the Facebook & Instagram app (recommended) OR a custom pixel in Customer Events OR manual GTM setup.
- Remove all other installations.
- Test using Meta Events Manager → Test Events.
- If events still fire twice, check that the same pixel isn’t installed both as an app pixel and as a custom pixel in Settings → Customer events.
How to fix duplicate GA4 events
- Decide on one method: Shopify’s Google & YouTube app OR a GTM GA4 tag.
- Do not use both simultaneously — this is the most common cause.
- Disable one. If using GTM, disconnect GA4 in the Google & YouTube app. If using the app, pause your GTM GA4 tag.
- Test via GA4 DebugView.
Using GTM as a single source of truth
The cleanest long-term approach: install GTM once (in theme.liquid), and manage ALL tracking through GTM. No other tracking code lives anywhere else.
Benefits:
- Every tracking tag is visible in one place
- Easy to audit, add, or remove tags
- Reduces the risk of duplicates from team members adding code independently
- GTM’s Preview mode makes testing simple
With this approach, your Customer Events setup should be removed or limited to events GTM can’t reach (checkout events, on every plan).
To install the container, see how to add Google Tag Manager to Shopify.
Deduplication at the platform level
Some platforms have server-side deduplication if you’re using both browser pixels and server-side APIs. For Meta’s Conversion API, you can include an event_id parameter in both the browser pixel event and the CAPI event — Meta matches these and counts them as one conversion.
This is advanced setup, but worth knowing: deduplication at the platform level is a backup, not a solution to having redundant pixel code.
FAQ
How do I detect duplicate pixel events without manually testing each platform?
Use a browser extension like Meta Pixel Helper or Omnibug — these flag duplicate events fired on the same page in real time. For deeper auditing, GA4's DebugView and Meta's Test Events tab show every event fired during a session, making duplicates obvious. Some agencies use server-side logs to count events vs. orders.
Will duplicate pixel events inflate my reported ROAS?
Yes — a 2x duplicate effectively doubles reported conversions, making campaigns appear to have twice the actual ROAS. This is especially harmful for ad scaling decisions: you'll over-invest in campaigns that aren't really performing. Fix duplicates before making any major budget reallocation based on pixel data.
Should I always use Customer Events instead of theme.liquid for tracking?
Yes for purchase tracking — Customer Events fires on the checkout pages where theme.liquid can't reach (the checkout is sandboxed on every plan). For storefront events (page views, add to cart), theme.liquid or GTM both work; just don't combine with Customer Events for the same event type.
Can server-side and browser pixels both fire safely?
Yes, with proper deduplication. Meta's Conversions API expects you to send the same event_id from both the browser pixel and the server-side event — Meta matches them and counts as one. Without this ID, you'd see double-counting. GA4 Measurement Protocol uses similar patterns.
How long does it take for pixel fixes to show in Meta or GA4?
Real-time tools (Meta Test Events, GA4 DebugView) show changes immediately. Production reports lag 24–72 hours due to processing windows. Audience and lookalike data based on historical events takes 7–14 days to fully reflect cleaner data — be patient before judging the impact.