Measurement

WooCommerce Tracking & Measurement

Make the numbers usable before bigger CRO decisions depend on them: events, totals, funnels and practical reporting notes.

Read our five-star reviews on Trustpilot

If GA4 revenue doesn't match your WooCommerce orders, you're making decisions on data you can't trust, and a small, explainable gap is normal, but a large or patterned one means the tracking is broken. We repair GA4, GTM and the WooCommerce data layer so that one order becomes exactly one GA4 purchase, refunds are recorded, consent is handled correctly, and the numbers are provable before any decision or test relies on them.

Signs Your WooCommerce Tracking Is Broken Or Untrustworthy

  • WooCommerce shows an order but GA4 shows no matching purchase, and the misses cluster around one gateway, device, browser or template. That's an implementation failure, not normal GA4 drift.
  • GA4 revenue is higher than WooCommerce revenue. That's usually duplicate purchase events from page reloads, multiple tags or two tools both firing, not a miraculous improvement.
  • PayPal or other redirect-gateway orders are always low, because the buyer never lands back on the order-received page where the purchase event fires.
  • GA4 monetisation never falls after a refund, because no refund event is being sent.
  • Sudden spikes of direct, unassigned or obviously fake traffic, or orange data-quality icons and totals that change between reports, explorations and exports.
  • Nobody can explain, from evidence, how a WooCommerce order becomes a GA4 purchase. If there's no visible data layer, trigger map, refund path, consent verification or reconciliation, you don't have a measurement system, you have a set of tags.

What We Change

The Minimum Viable Accurate Setup

The recommended GA4 ecommerce events, a valid items array, and a unique order-based transaction_id on every purchase, implemented through the most auditable route, which for a serious store is GTM plus a WooCommerce data layer, inspectable in Tag Assistant, DebugView and BigQuery.

Duplicate Purchase Events

GA4 deduplicates on transaction_id, keeping the first and ignoring the second, but only when the ID is present, unique and never blank. We make sure only one path can emit purchase and that the trigger depends on the real order-received state.

Missing Purchases On Redirect Gateways

We tie the purchase event to WooCommerce's actual thank-you lifecycle rather than a generic page view, restore it on customised or builder-heavy templates, and set unwanted-referral handling for payment domains.

Consent

We implement Consent Mode v2 correctly (the ad_storage, analytics_storage, ad_user_data and ad_personalization signals) and align it with UK PECR, without hard-blocking tags in a way that destroys modelling.

Refunds

We send a refund event against the original transaction_id, with item data, so GA4 reflects net commercial reality.

Amount And Timezone Mismatches

GA4 value excludes shipping and tax, which BigQuery stores separately, so we standardise the comparison instead of treating an accounting definition as a tracking bug.

Bot, Internal And Hostname Pollution

Internal-traffic filters, web-hostname filters and separated QA streams, because GA4's automatic bot exclusion isn't exhaustive.

Leave A Readable Tracking Map

We document the order-to-purchase path, data-layer events, GTM triggers, consent states and refund handling so the setup can be QA'd again after plugin, gateway or template changes.

What We Measure (And How We Prove It)

Our standard is simple: before any CRO decision or A/B test uses GA4 data, we can prove that one WooCommerce order becomes one and only one GA4 purchase, and one refund becomes one GA4 refund, under your real consent and gateway conditions. We validate the browser path in Tag Assistant, confirm it lands in DebugView and Realtime, run controlled test orders across every gateway, device and consent state, then reconcile real order IDs against GA4, using BigQuery for dependable order-level checks. On a controlled QA run the target is effectively 100% on the tested journeys; on live traffic, once technical faults are removed, a residual gap of roughly 5–10% can be normal because of consent and browser loss, while a persistent gap larger than that usually means something is still broken.

Frequently Asked Questions

Because GA4 is an event-based measurement system constrained by consent, browser blocking and modelling, while WooCommerce is the order system of record. A small residual gap can be normal; a bigger or patterned gap usually means the tracking needs fixing.

We check whether the same WooCommerce order ID appears more than once in GA4 or BigQuery, then inspect the purchase trigger in Tag Assistant. GA4 deduplicates on transaction_id, so blank or repeated IDs are the first thing we audit.

Because many WooCommerce setups only fire the purchase event on the thank-you page, and some redirect flows or custom templates never return the buyer there with the right WooCommerce hooks intact. We tie the event to the real order-received lifecycle instead.

Only under the ICO's narrow 2026 statistical-purposes exception, sole service-improvement statistics, aggregate outputs and a simple objection mechanism. Tracking individuals or using analytics for advertising still requires consent, so a compliant consent setup remains the conservative default.

Start Here

Start With The Audit

Book the phase-one audit so we can review one revenue-critical WooCommerce journey first.