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: pick one installation method and remove the other. Customer Events is the recommended method.
- GTM as a single source of truth prevents most duplicate event problems.
Duplicate conversion events are one of the most damaging — and most common — analytics problems in Shopify stores. They make your reported ROAS look better than it is, causing you to over-invest in campaigns that aren’t actually performing. They corrupt your audience data for retargeting. And they make it impossible to trust your numbers.
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 → Actions → 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 use GTM only and remove the Customer Events version.
Cause 3 — The “Additional scripts” field in Checkout settings
An old tracking snippet may be sitting in Settings → Checkout → “Additional scripts” field at the bottom. This field was the standard way to track purchases before Customer Events existed. If you’ve since set up Customer Events, the old snippet is now a duplicate.
Check: Settings → Checkout → scroll to the bottom → look for code in “Additional scripts”.
Fix: If Customer Events handles your conversion tracking, remove the old code from this field.
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.
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 the “Additional scripts” field in Checkout settings.
How to fix duplicate GA4 events
- Decide on one method: Shopify’s native GA4 integration (Online Store → Preferences → Google Analytics) OR a GTM GA4 tag.
- Do not use both simultaneously — this is the most common cause.
- Disable one. If using GTM, go to Online Store → Preferences and remove the Measurement ID. If using the native integration, 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 page events on non-Plus plans).
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.