Duplicate transactions in ecommerce data
Duplicate transactions occur when one purchase is counted more than once — usually because the order-confirmation page is reloaded, bookmarked, or shared, or because a retry resends the same event. GA4 deduplicates ecommerce purchases on `transaction_id`, so an absent or unstable ID is the root cause. This page covers detection and the deduplication key.
What this means
GA4 recommends sending a unique `transaction_id` with every `purchase` event. When the same `transaction_id` arrives again within the deduplication window, GA4 treats it as the same transaction. If the confirmation page fires `purchase` on every load and the user refreshes, the event repeats.
Without a `transaction_id`, GA4 cannot deduplicate at all, so every reload is a new sale in the data.
Common causes
Reloaded or bookmarked thank-you pages, browser back-then-forward to the confirmation screen, server retries that resend the event, and tags that fire `purchase` on a page that is not strictly post-payment. Each repeats the same order.
- Confirmation page reloads re-fire the purchase event
- Missing or unstable transaction_id defeats deduplication
- Server retries resend the same purchase
How it appears in analytics and logs
Revenue or purchase counts higher than the backend order system usually mean the same transaction_id (or none) is being sent multiple times from a reloadable confirmation page.
Diagnostic use case
Find inflated revenue caused by repeated purchase events and confirm a stable transaction_id is set so GA4 can deduplicate.
What WebmasterID can help detect
WebmasterID's event validation can flag repeated conversion events that share an identifier, surfacing duplicate-purchase patterns before they distort revenue.
Common mistakes
- Firing purchase without a stable transaction_id.
- Placing the purchase tag on a reloadable page.
- Embedding PII inside the transaction_id.
Privacy and accuracy notes
transaction_id is an order reference, not personal data, and should not embed customer email or names. Keep purchase events free of PII.
Related pages
- Double-counting pageviews
Double-counting happens when a single page load fires the analytics tag more than once. Two snippets on the page, a tag added in both the site and a tag manager, or an SPA that fires a virtual pageview on top of the full-load one all do it. The result inflates pageviews and drags engagement and bounce metrics. This page covers detection and the fixes.
- Missing currency or value on events
GA4 monetary events such as `purchase` need both a `value` and a `currency` field, and currency must be a valid ISO 4217 code. If currency is missing or invalid, GA4 may not credit the revenue; if value is missing, the event records but contributes nothing to monetary metrics. This page explains the requirement and the silent failure modes.
- Validating event tracking
Custom events power conversions, funnels, and product analytics — and they break quietly. A renamed CSS selector, a refactor, or a tag-manager edit can stop an event firing or change its parameters without any error. This page covers validating events: confirming they fire on the right action, exactly once, with the expected name and parameter values.
- Event Explorer
Spot repeated purchase events sharing an ID.
Sources and verification notes
Last reviewed 2026-06-24. Facts are checked against primary/official sources where available; uncertain specifics are marked “Data not yet verified” rather than guessed.