How to Switch Shopify Tracking Apps Without Double-Counting a Single Order

|Dan Giura
How to Switch Shopify Tracking Apps Without Double-Counting a Single Order

TL;DR

The duplicates in an app switch do not come from having two apps installed. They come from where each platform's duplicate check looks. GA4 checks the transaction ID that both apps read off the same Shopify order, so it collapses them [6]. Google Ads checks a transaction ID too, but only within a single conversion action, and a second app brings a second action with it [7]. Meta, TikTok, Reddit, Snapchat, Pinterest, and OpenAI Ads check an event ID the sending vendor mints, which two vendors have no way to agree on. Plan the cutover around that split.

Key Takeaways

  • Screenshot Settings → Customer events before installing anything. It is your only record of what the store ran before the switch.
  • GA4 deduplicates purchase events that share a transaction ID, so two apps sending the same Shopify order produce one purchase [6].
  • Google Ads deduplicates on a transaction ID within a single conversion action [7]. A second app creates a second conversion action, and both feed campaign totals unless you set one of them to secondary.
  • Meta deduplicates only when both the event ID and the event name match, and only within 48 hours of the first event [5]. Two vendors produce two different IDs, so the match never happens.
  • Every order that lands while two vendors are both sending is booked twice on those platforms. There is no partial rate to estimate and no window that rescues you.
  • Uninstalling an app removes the script tags it created [1] and the app blocks it placed in your theme [14], but leaves code the app wrote directly into theme files [2] and never touches a custom pixel you pasted in yourself [3].
  • Script tag creation stops working on October 1, 2026 and script tags stop running on March 1, 2027, so an older app delivering tracking that way cannot repair itself after the first date [4].

What actually double-counts when you switch?

Two apps sending the same purchase is not automatically a duplicate. Every ad platform runs its own duplicate check, and each keys on one specific field. Whether your overlap is harmless or expensive comes down to which field that is, who generates the value in it, and how wide a net the check may cast.

There are two kinds of key. The first belongs to the order: the Shopify order number, passed as a transaction ID. Two senders looking at the same order arrive at the same value independently, so the platform can see one conversion. The second is an event ID generated by whoever sends the event, built from that vendor's own internal identity for it. Two vendors have no way to agree, so the platform receives two IDs and books both.

Google Ads sits between the two, and it is the trap in the middle of the migration. Its transaction ID check is real, but it operates within a conversion action [7]. A second app does not upload into your old action; it creates and uploads into its own. Two actions, each holding one copy of the sale, both counted into campaign totals, and no warning anywhere, because from Google's side nothing is duplicated. The fix is a setting: leave one action primary for the campaign goal and set the other to secondary for the overlap.

The cost is not cosmetic. A week of doubled Meta purchases teaches Advantage+ that your conversion rate is twice what it is, and the bidding follows that belief with real money before the reports look wrong. Our walkthrough of how event_id prevents double-counting covers the mechanism; this covers the week two senders are live.

Which platforms survive an overlap, and which do not

Platform Deduplication key Two apps sending the same order
GA4 transaction_id on the purchase event [6] One purchase
Google Ads Transaction ID, within a single conversion action [7] Two conversion actions, both counted unless one is demoted
Meta event_id plus event_name, 48-hour window [5] Two events
TikTok event_id, 48-hour window [8] Two events
Reddit, Snapchat, Pinterest, OpenAI Ads An event or conversion ID supplied by the sender, per each platform's own conversions API Two events

The last row carries no citation because no single document covers those four. Each publishes its own conversions API with its own sender-supplied event identifier, and the behavior follows from that design rather than a shared standard.

Read the table first: it sets how long an overlap you can afford. Outside the GA4 row, every order landing during the overlap is counted twice. The 48-hour figures are the window in which deduplication would apply if the IDs matched, not a grace period that expires into safety.

One exception explains a result you may already have seen. If both senders derive their event ID from an identity Shopify itself owns, the values match. WeltPixel Conversion Tracking builds its purchase dedup key from Shopify's own event identity when the pixel-side event id is available, and on that path its Meta purchases deduplicate against Shopify's native Facebook and Instagram channel instead of doubling it. Where that id is missing it falls back to a key of its own, which no other sender reproduces. Never assume the matching behavior of an arbitrary pair of apps.

What does uninstalling actually remove?

Surface Removed when you uninstall? Where to check
App pixel (web pixel extension) Yes, it belongs to the app Settings → Customer events
Script tags the app created Yes, automatically [1] Not merchant-visible
App blocks and app embeds from a theme app extension Yes, "automatically and entirely removed" [14] Online Store → Themes → Customize → App embeds
Code the app wrote into theme files No [2] Online Store → Themes → Edit code
A custom pixel you pasted from a setup guide No, it is yours, not the app's [3] Settings → Customer events

Shopify is explicit on three of those rows. Script tags an app created "are automatically removed along with it" [1], theme app extension blocks are "automatically and entirely removed from online store themes" [14], and the help center warns that "some apps add code to your online store theme that isn't automatically removed when you uninstall the app" [2]. The orphan to hunt is a snippet somebody pasted into theme.liquid during a setup call in 2023, or a custom pixel added under Settings → Customer events because a vendor's guide said to.

Custom pixels are the quiet one. They are merchant-created, so no uninstall touches them, and Shopify notes that disconnecting one "doesn't delete the pixel" [3]. One that somebody reconnects three months later during unrelated troubleshooting is a duplicate source with a delay fuse on it. Delete the ones you are done with.

Script tags deserve a date check rather than a hunt. scriptTagCreate and scriptTagUpdate start returning errors on October 1, 2026, and Shopify stops injecting script tags into storefronts on March 1, 2027 [4], the two dates our script tag deprecation guide works through. An app still delivering tracking that way keeps running between those dates but cannot rewrite itself, so a reinstall mid-migration can leave it with no tracking at all.

The cutover sequence, in order

  1. Inventory. Open Settings → Customer events and record every pixel, app and custom. Check Online Store → Themes → Customize → App embeds, then search theme code for any pixel or measurement ID you recognize. Our pixel audit walkthrough is the longer version of this step.
  2. Record a baseline. Last 7 days of purchases in GA4, conversions in Google Ads, purchases in Meta Events Manager. You need these to tell a duplicate from a recovery.
  3. Install the new app and connect GA4 first. GA4 is the safe rehearsal, because its transaction ID check absorbs the overlap [6].
  4. Verify on a real order before connecting anything else. The next section is the four-minute version.
  5. Move every other platform one at a time, closing each in the same sitting. Connect Meta in the new app, confirm events arriving, then turn Meta off in the old app. Minutes of overlap, not days. If the old app has no per-platform switch, disable it entirely and connect the new one immediately after.
  6. On Google Ads, handle the second conversion action. Set the old app's action to secondary before the new one starts uploading, and check which action each app writes into rather than assuming they share one.
  7. Watch a full day, comparing each platform's purchase count against Shopify orders for the same window in that platform's own time zone, then uninstall the old app and re-check. Return to Settings → Customer events to confirm its pixel is gone, then check the theme for the leftovers from the table above.

Step 5 is where merchants lose money, almost always because the overlap felt safer than the gap. A day with one missing purchase event costs you attribution on that day. A week with every purchase doubled costs you a week of bidding against a fiction.

How do you verify the new app is really sending?

Place a real order and follow it through each platform's live surface rather than its reports.

  • GA4: Reports → Realtime shows the last 30 minutes [9]. For parameters, turn on debug mode and open Admin → Data display → DebugView, whose middle column shows events logged in the last 60 seconds [10]. Our DebugView guide for Shopify covers the setup.
  • Meta: Events Manager → Data sources → your pixel → Test events, with the app's test event code pasted in.
  • TikTok: the Test Events tab in Events Manager. Do not judge by the dashboard, where TikTok asks for "up to 2 hours processing time" before statuses update [11].
  • Google Ads: the conversion action's status, remembering Google refreshes conversions on a 3-hour clock for last-click attribution and 15 hours for other models [12]. Check the action name, not just the count.

You are checking for exactly one purchase per platform. Two is the failure you came to catch.

What carries over and what resets

Almost everything you care about sits on the platform side, untouched by an app switch. Your GA4 property keeps its history, measurement ID, custom dimensions, and audiences. Your Meta pixel keeps its ID and its learning. Google Ads keeps the conversion actions and their windows. You are changing who delivers events, not where they land.

The old app's configuration does not carry over. These apps do not ship config export or import, so every platform ID, event toggle, and exclusion rule gets retyped. Budget an hour for four connected platforms, and keep the old app installed but silent until you finish, because its settings screen is the only copy of that configuration you have.

FAQ

Can I run two Shopify tracking apps at the same time?

On GA4, yes: Google documents that purchases sharing a transaction ID are deduplicated [6], and two apps reading the same order produce the same value, so the collapse is the expected result rather than a documented two-sender guarantee. Everywhere else, no. Google Ads counts a second app's conversion action alongside your existing one [7], and Meta, TikTok, Reddit, Snapchat, Pinterest, and OpenAI Ads book every overlapping order twice.

Does uninstalling a tracking app remove its pixel from my store?

The app's own web pixel goes with it, along with any script tags it created [1] and any app blocks it placed through a theme app extension [14]. What stays behind is code the app wrote into theme files, which Shopify says "isn't automatically removed" [2], and any custom pixel you added yourself under Settings → Customer events, which was never the app's to delete [3].

How long should the overlap between the old and new app be?

On GA4, as long as you like. Everywhere else, aim for the time it takes to paste credentials, confirm events in the test tool, and switch the old sender off. If you cannot get that under an hour, take the gap instead.

What if the old app used a script tag?

It keeps running until March 1, 2027, but cannot create or update a script tag after October 1, 2026 [4]. That matters during a migration: reinstalling such an app after the first date can leave it unable to reinstate its own tracking.

If you would rather verify against a delivery path that reports what it sent, WeltPixel Conversion Tracking records one server-side purchase per platform per order and shows delivered and skipped counts per platform, which turns "did the overlap double anything" into a thirty-second check. It is $39 a month flat for the nine integrations, with a free GA4-only plan for up to 100 storefront orders a month [13].

The last thing to do is the one everybody skips: go back into Settings → Customer events a week later and look again. Reconnected custom pixels show up on that list, and nowhere else.

Sources

  1. Shopify Developers, "ScriptTag" Admin REST resource, shopify.dev/docs/api/admin-rest/2025-01/resources/scripttag, accessed September 4, 2026
  2. Shopify Help Center, "Uninstalling apps", help.shopify.com/en/manual/apps/uninstalling-apps, accessed September 4, 2026
  3. Shopify Help Center, "Manage your custom pixels", help.shopify.com/en/manual/promoting-marketing/pixels/custom-pixels/manage, accessed September 4, 2026
  4. Shopify Developer Changelog, "Script tags are deprecated and will stop running on March 1, 2027", shopify.dev/changelog/online-store-script-tags-deprecation, published August 24, 2026
  5. Meta for Developers, "Deduplicate Pixel and Server Events", developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events, accessed September 4, 2026
  6. Google Analytics Help, "Minimize duplicate key events with transaction IDs", support.google.com/analytics/answer/12313109, accessed September 4, 2026
  7. Google Ads Help, "Use a transaction ID to minimize duplicate conversions", support.google.com/google-ads/answer/6386790, accessed September 4, 2026
  8. TikTok for Business, "Events API 2.0" deduplication guidance, business-api.tiktok.com/portal/docs?id=1771101204435970, accessed September 4, 2026
  9. Google Analytics Help, "Realtime report", support.google.com/analytics/answer/9271392, accessed September 4, 2026
  10. Google Analytics Help, "DebugView", support.google.com/analytics/answer/7201382, accessed September 4, 2026
  11. TikTok Ads Manager Help, "About data connection for website optimization", ads.tiktok.com/help/article/about-data-connection-for-website-optimization, accessed September 4, 2026
  12. Google Ads Help, "About data freshness", support.google.com/google-ads/answer/2544985, accessed September 4, 2026
  13. WeltPixel Conversion Tracking, Shopify App Store listing, apps.shopify.com/weltpixel-conversion-tracking, accessed September 4, 2026
  14. Shopify Developers, "UX for theme app extensions", shopify.dev/docs/apps/build/online-store/theme-app-extensions/ux, accessed September 4, 2026

Questions or notes on this guide? Discuss it on r/WeltPixel.

Ready to upgrade your tracking?

Server-side tracking for Magento and Shopify — accurate data, better attribution, full privacy compliance.