Online store SEO

Duplicate GA4 and Meta Pixel tags: why your store counts sales twice

18 Oct 2026 ·6 min read · اقرأ بالعربية

When the same tracking tag loads twice, every page view, add-to-cart and purchase can be counted twice. Reports show more sales than you made, ad platforms optimize toward inflated conversions, and budget decisions rest on wrong numbers. It usually happens quietly: the platform's built-in integration sends events, and someone also adds the same pixel through Google Tag Manager (GTM, Google's tool for adding tracking codes without editing the store) or pastes it into the theme. Meta is explicit about browser duplicates: if it receives "two consecutive browser events with the same information", it discards neither. Its deduplication works only between a browser event and a server event (Conversions API) that share an event ID.

How to check

  1. Open your store with the browser's developer tools on the Network tab. Filter for collect to see GA4 hits and for facebook.com/tr to see Meta Pixel hits, then load one page and count the page-view hits per ID.
  2. Look in the page for more than one GTM container ID (GTM-…), GA4 measurement ID (G-…) or Meta pixel ID.
  3. Use GTM's Preview mode and GA4's DebugView to see whether one action fires the same event twice.
  4. Compare where each pixel is installed: the platform's integrations screen, your GTM container and the theme code. The same ID in two places means double counting.
  5. Run the free audit. Store Audit by Ahmed Fayed lists every GTM, GA4, Google Ads, Meta, TikTok, Snap, X, Clarity and Hotjar tag it finds in the page and its network requests. It flags a Meta pixel or GA4 property that sends its page view twice in one page load, more than one container, GA4 property or Meta pixel on the store, and gtag running next to GTM. When Google tags are present, it notes whether a consent tool and Consent Mode signals were detected. It doesn't say which integration loaded each tag, and it can't verify Conversions API, the thank-you page or server-side events from the public pages.

The usual GA4 causes, according to Analytics Mania: a hard-coded gtag plus the same GA4 tag in GTM; the same GTM container installed twice; "Create event" rules that duplicate events already being sent; single-page apps where a manual page_view overlaps with Enhanced Measurement; thank-you pages that fire again on reload; and the same event sent from the browser and through the Measurement Protocol. GA4 also has a setting, "Ignore duplicate instances of on-page configuration", which is on by default for data streams created since August 2022. Check it on older properties.

How to fix

Salla

Salla has built-in Conversions API links for Meta, TikTok and Snap, and a field for your GTM container. Salla also loads Google tags of its own: GTM appears on 99.4% of Salla stores, and a 2022 audit, on an older Salla theme, found Google tags loaded twice, once by Salla and once by the merchant. I haven't confirmed which container IDs belong to the platform today. When the audit finds more than one container, GA4 property or Meta pixel on a Salla store, it reports it as likely and low severity, because one of them may be Salla's own. Different IDs split your data rather than count it twice; the same ID loading twice is what double-counts. Connect each pixel once, through the built-in integration or through GTM, not both. Before adding GA4 in GTM, check in DebugView whether events already arrive. Tags the platform injects aren't something you can remove.

Zid

Zid's help center warns that any code added in GTM "actually loads on the storefront", and that too many or heavy tags slow pages down. Zid's storefront also includes its own functions for GA ecommerce events, such as a remove-from-cart event. Keep one GTM container, delete tags you no longer use, and check in DebugView that ecommerce events aren't arriving both from Zid and from your GTM tags.

Shopify

Pixels belong in Settings › Customer events (custom pixels) or in a sales-channel or pixel app (app pixels, which run in a sandbox). A pixel hard-coded in theme.liquid (fbq or gtag calls) plus the same pixel through an app or Customer events counts twice. Remove the theme copy. Since 26 August 2026, Additional Scripts on the thank-you and order-status pages no longer run for non-Plus stores, so purchase tracking left there has stopped; move it to Customer events.

Custom-coded

Pick gtag or GTM for GA4, not both. In a single-page app, send page_view once per route change and make sure Enhanced Measurement's history-based page views don't fire a second one. If you send Meta events from both the browser and the Conversions API, give them the same event name and ID:

fbq('track', 'Purchase', { value: 200, currency: 'SAR' }, { eventID: 'order-10045' });

The server event then carries event_name: "Purchase" and event_id: "order-10045", and Meta deduplicates the pair if it arrives within 48 hours.

Common mistakes

  • Connecting the Meta Pixel in the platform's integrations and again in GTM.
  • Adding a second GTM container for an agency instead of giving the agency access to the existing one.
  • Hard-coding gtag after GTM already has a GA4 tag.
  • Sending Conversions API events without the matching event ID.
  • Leaving purchase tracking in places that no longer run, such as Shopify's Additional Scripts.

Run the free Store Audit by Ahmed Fayed to list the tags on your store and find duplicates. If you'd like help fixing this, contact me on WhatsApp +20 102 702 0701 or at ahmed-fayed.com.

Sources

Tracking

More in this series

Back to guides