Skip to content
Start free
Menu
Duplicate purchase events in GA4: how to check

Duplicate purchase events in GA4: how to check

Last updated Oct 22, 2026

When GA4 counts more purchases than your store took, the same order is usually reaching it twice: two tags send the purchase, or the event leaves without a transaction ID, so GA4 has nothing to recognise the second one by. GA4 removes a repeated purchase only when both carry the same transaction ID.

The likely causes

  1. Two installs. A platform plugin and a Tag Manager tag, or a hard-coded tag and Tag Manager, each send the purchase. With the same transaction ID GA4 keeps one; with different or missing IDs it counts both (Google's help).
  2. No transaction ID. Without transaction_id, a reload of the confirmation page, or a buyer coming back to it from an email, sends the purchase again as a new one.
  3. An empty transaction ID. An empty string is not an ID: GA4 treats every purchase with an empty transaction_id as the same one, which removes real orders instead of duplicates.
  4. Browser and server both sending. A purchase sent from the page and again from the server, each with its own ID, arrives as two orders.

The same transaction ID reused for different orders does the opposite: GA4 keeps only one of them and undercounts.

How to check it by hand

  1. In GA4, build an exploration with Transaction ID as the dimension and Ecommerce purchases as the metric. A transaction ID with more than one purchase, or a row reading (not set), is where to look.
  2. Place a test order with debug mode on (Tag Assistant or Tag Manager's preview) and watch DebugView: two purchase events for one order usually means two tags send it (Google's help).
  3. In Tag Assistant, count which tags fire on the confirmation page, then reload it: if the purchase fires again, check in DebugView that it carries the same transaction ID.
  4. Compare a day's purchases in GA4 with that day's paid orders in your store's admin.

What TraceLog sees and what it does not

TraceLog reads nothing from GA4 and removes no duplicate from it. What it counts is its own record: each conversion is counted once by its identifier — the order's reference on WooCommerce, PrestaShop and Shopify — however it reached TraceLog, and the Path page says how many only the server saw (why the two counts differ).

In its own record, when one identifier arrives with conflicting data or across several visits, TraceLog blocks verification and says so, until each identifier names one conversion (one identifier, several conversions).

Questions

Does TraceLog remove the duplicates in GA4?

No. It changes nothing in GA4.

Will TraceLog count the same order twice?

No. A conversion is counted once by its identifier, whether the browser, the store's server or both reported it.

Do I have to remove GA4?

No. TraceLog runs beside GA4, Meta and Google Ads and reads none of them.

Try it on your store

Define your conversion path, and TraceLog checks it while you install.

Start free

Free up to 10,000 sessions a month. No card.