Your GA4 Purchase Events Are Firing. The Revenue Values Are Wrong.

March 20, 2026
by Cherry Rose

67% of data professionals don’t trust their analytics data — and according to the Precisely Data Integrity Trends Report 2025, the leading cause isn’t missing events. It’s events that fire with wrong values. Your GA4 dashboard shows purchase events. Revenue totals look plausible. But if you’ve never cross-referenced those GA4 numbers against your actual WooCommerce orders, there’s a real chance they’re wrong.

There are two separate validation problems in GA4 tracking, and almost everyone conflates them: (1) Did the event fire? (2) Are the values inside it correct? Most guides answer the first question. Almost none address the second.

The Two Problems That Everyone Mixes Up

When a WooCommerce store owner asks “is my GA4 tracking working?”, they almost always mean: are purchase events showing up in reports? GA4 DebugView shows green. The dashboard shows revenue. Tracking is working.

Except events firing and events being correct are not the same thing.

A purchase event can fire perfectly — hit GA4’s servers, process without error, appear in reports — and still carry a revenue value that’s 20% too high, a transaction_id that duplicates a previous order, or a currency code that doesn’t match your store’s actual currency. None of those errors generate a warning anywhere. The data just enters GA4 wrong and compounds silently.

This is what’s called a silent misconfiguration: a tracking setup where events appear to work but carry incorrect parameter values, detectable only through deliberate revenue reconciliation.

The Four Parameter Errors Most WooCommerce Stores Have Right Now

The GA4 purchase event carries specific parameters that affect every downstream report, ad optimization model, and attribution calculation. Here are the four most commonly wrong ones:

1. Revenue Includes Tax or Shipping

GA4’s e-commerce schema expects the value parameter to represent revenue excluding tax. WooCommerce stores that pass the order total directly — which includes tax and often shipping — inflate GA4 revenue by 10–30% depending on tax rates. The event fires. The number is wrong. Revenue is overstated from day one.

2. Duplicate Transaction IDs

GA4 uses transaction_id to deduplicate purchase events. If the same ID fires twice — from a page reload, a confirmation page refresh, or browser back-navigation — GA4 is supposed to count it once. Stores without server-side deduplication routinely count the same purchase 1.2–1.5 times.

3. Currency Mismatches

If the GA4 currency configuration doesn’t match the currency used in the data layer at checkout, GA4 accepts the values without conversion. A store selling in AUD but configured for USD in GA4 will show revenue that looks right in volume but is structurally wrong in value — every single day.

4. Incomplete Items Arrays

The items array in a GA4 purchase event should include item_id, item_name, price, and quantity for each product. Stores passing incomplete arrays lose all product-level reporting — making category analysis, product performance, and ROAS by SKU impossible.

Seresa’s internal implementation analysis found that 73% of GA4 setups reviewed contained at least one of these parameter-level errors — even when all events were confirmed firing.

You may be interested in: Why Every Dashboard in Your Marketing Stack Shows a Different Revenue Number

How to Run a GA4 Parameter Audit

You don’t need specialist tools to catch parameter-level errors. You need two things: GA4 DebugView and a revenue reconciliation.

Step 1: Inspect Parameters in DebugView

Place a test order on your WooCommerce store with a known amount — say, $100.00 excluding tax. Open GA4 Admin > DebugView and watch the purchase event arrive. Click into the event and verify:

  • value: Should equal $100.00 — not $108.50 (with tax), not $115.00 (with shipping)
  • currency: Should match your store’s base currency exactly
  • transaction_id: Should be the WooCommerce order ID, unique per order
  • items array: Should list each product with item_id, item_name, price, and quantity

If any of these are wrong on a test order, they’re wrong on every order.

Step 2: Revenue Reconciliation

Pull 30 days of purchase data from GA4 under Monetization > E-commerce purchases. Export the total revenue. Then pull the same 30-day period from WooCommerce Reports > Revenue, filtering to completed orders only.

A gap of 2–5% is expected — event loss from ad blockers and browser restrictions accounts for that. A gap above 10% almost always means parameter-level errors. You’re not just losing events; you’re reporting wrong values on the events you do capture.

Over 25% of organizations lose more than $5 million annually due to poor data quality (IBM, 2025). For most WooCommerce stores, the exposure is smaller — but the mechanism is identical: decisions based on numbers that sound right but aren’t.

You may be interested in: Facebook Ads vs GA4: Why Revenue Numbers Never Match and What to Trust

Why Browser-Side Tracking Can’t Fix This

Browser-side JavaScript tracking collects event data from the user’s browser — where the script has no way to verify whether the revenue value it’s reading actually matches the order total in WooCommerce’s database. The script reads whatever value it’s given. If the data layer was set up to pass the total including tax, that’s what fires. If a plugin update changed a variable reference, the script reads the new (wrong) value and reports it faithfully.

There’s no mechanism in browser-side tracking to compare an event value against the source of truth before delivery. The event goes to GA4. The error goes with it.

64% of organizations cited poor data quality as their biggest challenge for 2025 (Precisely, 2025). The problem isn’t that the data doesn’t arrive — it’s that the data that arrives is wrong.

IBM’s data quality research recommends validating data at the point of entry, before analytics or AI systems consume it. Browser-side tracking does the opposite — it delivers first and lets you discover errors later, usually during a revenue audit that something already went wrong with.

How Server-Side Validation Catches Wrong Values Before Delivery

When events pass through a server-side pipeline before reaching GA4, that pipeline can compare the event’s revenue value against the actual WooCommerce order record in real-time. If the values don’t match, the pipeline can correct or flag the discrepancy before any platform receives bad data — not after.

Transmute Engine™ is a first-party Node.js server that runs on your subdomain (e.g., data.yourstore.com). The inPIPE WordPress plugin captures WooCommerce events and sends them to the Transmute Engine server via API, where each purchase event is validated against the source order — checking revenue minimums, currency consistency, and transaction_id uniqueness — before routing simultaneously to GA4, Facebook CAPI, Google Ads, and BigQuery. Parameter-level errors that browser-side tracking passes through silently get caught before they corrupt any downstream system.

Key Takeaways

  • Events firing ≠ events being correct. A purchase event can reach GA4 successfully while carrying revenue that’s 20% wrong.
  • The four most common parameter errors: tax-inclusive revenue, duplicate transaction IDs, currency mismatches, and incomplete items arrays.
  • Run a revenue reconciliation: Compare 30-day GA4 revenue against WooCommerce completed orders. A gap above 10% signals parameter errors, not just event loss.
  • DebugView is your first tool: Place a test order and inspect every parameter manually before trusting any report.
  • Server-side validation solves what browser-side cannot: Comparing event values against WooCommerce order records requires server access — which only a server-side pipeline has.
Why does my GA4 revenue not match WooCommerce even when purchase events are firing?

GA4 and WooCommerce revenue mismatches are usually caused by incorrect event parameter values rather than missing events. Common causes include revenue passed with tax or shipping included, duplicate transaction_ids counted multiple times, and currency mismatches between WooCommerce and GA4 configuration. Events appear to fire successfully while carrying wrong values — a silent misconfiguration detectable only by cross-referencing GA4 totals against WooCommerce order data.

How do I check if my GA4 purchase event parameters are passing correctly?

Use GA4 DebugView (Admin > DebugView) to inspect individual purchase events in real-time. For each event verify: revenue equals the WooCommerce order total excluding tax, currency matches your store base currency, transaction_id is unique per order, and the items array includes item_id, item_name, price, and quantity. Then run a 30-day revenue reconciliation against WooCommerce completed orders. A gap above 10% confirms parameter-level errors beyond normal event loss.

What is a silent misconfiguration in GA4 tracking?

A silent misconfiguration is when tracking events appear to fire successfully — showing in DebugView and counting in reports — but carry wrong values. For example, a purchase event fires with a revenue value of $150 when the actual order total was $125 because tax was included. No error is reported. The event passes all validation checks. The data enters GA4 wrong and compounds over time, corrupting reports and ad optimization decisions.

Can browser-side tracking validate GA4 event parameter values?

Not reliably. Browser-side JavaScript fires events from the user’s browser, where it cannot verify whether the revenue value matches the actual order total in WooCommerce. The data layer can be misconfigured, pick up the wrong price variable, or carry rounding errors before the event reaches GA4. Server-side validation intercepts events before delivery and compares revenue values against actual WooCommerce order records — catching discrepancies before they reach any platform.

If your GA4 events are firing but your revenue reconciliation shows a gap above 10%, the problem is in the values — not just the volume. Seresa’s Transmute Engine validates purchase parameters server-side before delivery, so the data that reaches your reports matches your actual WooCommerce orders.

Share this post
Related posts