PURCHASE TRACKING

The purchase event fires again when the customer reopens the order page

A customer opens the order confirmation or order status page again from an email, and your ad platform or GA4 records one more purchase. The sale happened once, but the count goes up.

Why it happens

Old code on the page runs on every load. A purchase tag written into theme code, an additional script or a tag manager trigger on the confirmation page runs each time the page loads. A reload, a bookmark, the link in the order email or the back button runs it again. Nothing in that code remembers that the purchase was already reported.

Shopify's own event is meant to fire once. Shopify's developer documentation says the checkout_completed event is triggered once for each checkout, typically on the Thank you page, and that it is not triggered again on that page. It does not say what happens on the order status page, so check each tag that you added yourself. Upsell and post-purchase flows fire it on the first upsell offer page instead. If that page fails to load, it does not fire.

Two senders without a shared ID. Platforms recognize a repeat by an ID. Meta needs the same event ID on the browser and the server purchase, and GA4 uses the transaction ID. If a reload sends the purchase again with a new event ID, or with none, the platform has nothing to match and counts it. The same happens when two tools each send the purchase.

Check it yourself

  1. 1Place a test order or open a recent one, then reload the confirmation page twice. Keep the browser's developer tools open on the Network tab and filter for the platform's requests.
  2. 2In Meta Events Manager, open Data sources > your pixel > Test events, add your store's address and repeat the reload. See whether Purchase appears again, and compare the event IDs.
  3. 3In Events Manager > Data sources > your pixel > Overview, open the Purchase event and check the deduplication details for browser and server.
  4. 4In GA4, open Explore, start a Free form exploration, add the dimension Transaction ID and the metric Purchases. A transaction ID with more than one purchase is a repeat.
  5. 5In Shopify admin, open Settings > Customer events and list your custom pixels. Open each one and check whether it sends a purchase on every page load.
  6. 6Check your theme code and your tag manager for a purchase tag with a trigger on the confirmation page. Make it fire only once per order, for example by recording the order ID in the browser when it first fired.
  7. 7Compare Shopify admin > Orders for the same days with the platform's purchase count, using whole days in the same time zone.
  8. 8Keep one purchase sender where you can, or give every sender the same event ID.

A sender that works from the paid order sends it once; see one sender per purchase on Shopify.

Run the free diagnosis

FAQ

Does a repeat page view mean a repeat sale?

No. It is the same sale reported again. Shopify still has one order.

Will Meta or GA4 remove the repeat on its own?

Only when the repeat carries the same ID as the first one. Without it the platform counts both.

Does this affect my ad spend?

A higher purchase count can make an ad set look better than it is, and optimization follows what is reported.

Should I block customers from reopening the page?

No. Fix the tag so that a reload does not send a new purchase.

Related

Problem

Meta's purchase value does not match your Shopify order total

Meta Ads Manager shows a different purchase value than your Shopify orders. How tax, shipping, discounts and refunds change the number, and how to check what Meta received.

Guide

Meta Pixel purchase event not firing on Shopify, and "fbq is not defined"

How to test whether your Meta Pixel sends Purchase on a Shopify store, what the result tells you, and what the "fbq is not defined" error means for your tracking.

Guide

GA4 purchase event not firing on Shopify: how to test it with one order

How to test whether the GA4 purchase event fires on a Shopify store, using Realtime, DebugView and Tag Assistant, what each result means, and the usual reasons the event never arrives.

Guide

The GA4 purchase key event on Shopify: how to mark it, import it into Google Ads, and why it does not match your orders

What changed when GA4 renamed conversions to key events, how to check that purchase is a key event for your Shopify store, how to import it into Google Ads, and why the count differs from your Shopify orders.

All tracking problems · All guides