March 28, 2026· 5 min

Your GA4 shows the wrong revenue (and nobody told you)

WooCommerce and PrestaShop inflate GA4 revenue by 10 to 30%. Duplicates, tax-inclusive instead of net amounts, missing currency: the errors are silent. Analysis and figures.

The problem nobody looks for

When a CMO opens GA4 on Monday morning, they look at the weekend's revenue. If the number roughly matches what they expect, they move on to ROAS by channel. If ROAS is good, they raise the budget. If ROAS is bad, they cut.

The problem: the revenue shown in GA4 is wrong on most e-commerce sites, and the gap is 10 to 30%, far beyond a 1 or 2% rounding difference. The budget decisions made on that basis are wrong too.

The 5 most common errors

These are the errors we find again and again on WooCommerce and PrestaShop implementations. They are silent: GA4 doesn't flag them, the dataLayer doesn't crash, no JavaScript error shows up.

ErrorFrequencyImpact on GA4 revenueNative GA4 detection
Tax-inclusive amount sent instead of netVery common+20% (French VAT)None
currency parameter missingCommonRevenue shown = €0None
purchase fired twiceCommon+100% on duplicated transactionsNone
Shipping fees included in valueFrequent+5 to 15%None
transaction_id missing or fixedFrequentNo way to deduplicateNone

Error 1: tax-inclusive instead of net

This is the most widespread error. WooCommerce plugins send the tax-inclusive amount in the value field of the purchase event by default. The CMO compares that amount with the net revenue in the back office and sees a 20% gap (20% VAT). Often they put the gap down to "differences between tools" and don't dig further.

Concrete impact: on €100,000 of monthly net revenue, GA4 shows €120,000. The calculated ROAS is 20% too optimistic. Budgets get raised on campaigns that don't perform as well as everyone thinks.

Error 2: the missing currency parameter

Google Analytics 4 requires a currency parameter on every purchase event. Without it, GA4 accepts the event but assigns no revenue. The event shows up as a conversion, but with a value of zero.

The trap: the "Conversions" report shows the right number of transactions. The "Revenue" report shows zero. If nobody compares the two, the problem goes unnoticed for weeks.

On PrestaShop, the official GA4 module sometimes omits currency when the default currency isn't set in the module settings. On WooCommerce, some custom themes overwrite the dataLayer before the GA4 plugin runs.

Error 3: double firing

The classic scenario: the user lands on the confirmation page. The purchase event fires. The user refreshes the page (or clicks "back" and then returns). The event fires a second time.

Without a unique transaction_id and without deduplication logic in GTM, every reload creates a new transaction in GA4. On a site with 5,000 transactions/month, if 8% of users reload the confirmation page, that's 400 ghost transactions and revenue inflated by 8%.

Error 4: shipping fees in the value

Many e-commerce plugins include shipping fees in the value field. That's technically correct according to Google's documentation, but it creates a systematic gap with the product revenue in the back office.

With average shipping fees of €6.90 and an average order value of €85, GA4 revenue is inflated by 8.1%. On €500,000 of annual revenue, that's a €40,500 gap.

The knock-on effect on Smart Bidding

Wrong revenue in GA4 doesn't stay in GA4. It feeds straight into bidding strategies:

  1. The target ROAS is calculated on inflated revenue
  2. Google Ads thinks the campaigns are performing better than they really are
  3. Bids go up, CPC rises
  4. Real ROAS drops, but reported ROAS stays stable
  5. Budget is maintained or increased on campaigns that are losing money

For a paid budget of €50,000/month with revenue inflated by 20%, the estimated overspend is €8,000 to €12,000/month: budget allocated to campaigns whose real ROAS doesn't justify the investment.

How to detect these errors

GA4 won't warn you. Here are the signals to watch:

Signal 1: a persistent gap with the back office. If GA4 consistently shows 15-25% more than your ERP, it's probably tax-inclusive vs net amounts or shipping fees included.

Signal 2: conversions without revenue. In the GA4 exploration report, compare the number of purchase events with total revenue. If revenue is zero or abnormally low, the currency or value parameter is probably missing.

Signal 3: duplicated transaction_ids. Export your purchase events through BigQuery and count duplicate transaction_id values. Above 2%, you have a deduplication problem.

Korvus automates this detection. The checkout_zero alert fires when purchase events come in with a value of 0 or null. Korvus also compares amounts against historical baselines to catch anomalies in both directions: a sudden spike (likely duplicate) or a collapse (missing parameter).

The fix plan

Immediate (day 1): Check the currency parameter in your dataLayer. Open the console, place a test order, inspect the purchase event. If currency is missing, fix that first.

Short term (week 1): Compare GA4 revenue with your ERP over the last 30 days. A gap above 5% justifies a dataLayer audit. Check tax-inclusive vs net amounts and whether shipping fees are included.

Medium term (month 1): Implement deduplication logic on the confirmation page (cookie or sessionStorage holding the transaction_id). Turn on the BigQuery export to audit duplicates regularly.

Key takeaways

  • GA4 revenue is inflated by 10 to 30% on most WooCommerce and PrestaShop sites
  • The 3 main errors: tax-inclusive instead of net, missing currency, double firing
  • GA4 flags none of these errors, so you have to go looking for them
  • The knock-on effect on Smart Bidding can cost €8,000 to €12,000/month in misallocated budget
  • Real-time monitoring of conversion amounts is the only way to catch regressions from the very first abnormal event

Your site is losing money silently.

Korvus detects, quantifies and protects.

Korvus translates every leak into euros, so every fix shows up as protected revenue. Get the checklist of invisible revenue leaks and take stock of where you stand.

Hosted in France. No spam, and you can unsubscribe at any time.

Related articles