Full Answer
The thank-you page is the most fragile point in WooCommerce purchase tracking. Customers reload it to check their order confirmation, bookmark it, or navigate back to it from their email. Each visit re-executes the JavaScript that fires the GA4 purchase event. Without deduplication, a single order can generate two, three, or more purchase events — each one adding the same revenue to your GA4 reports. Over a month, the cumulative effect inflates reported revenue by enough to distort campaign ROAS calculations and budget decisions.
GA4's built-in deduplication matches on the transaction_id parameter within a 24-hour window. If two purchase events carry the same transaction_id, GA4 keeps the first and drops the second. The critical requirement is that the transaction_id maps deterministically to the WooCommerce order — typically the order number or order ID. Some tracking plugins generate a random hash per page load instead, which defeats deduplication because each reload produces a unique ID that GA4 treats as a new transaction.
Conversios' 2026 analysis of WooCommerce GA4 implementations found that misconfigured transaction_id mapping is one of the most common causes of revenue discrepancies between GA4 and WooCommerce order reports. The fix is verifying — in GA4 DebugView or the Realtime report — that the transaction_id value matches your WooCommerce order number exactly. For a broader look at where WooCommerce purchase tracking breaks down, deduplication is one piece of a larger structural problem.