You have orders in WooCommerce. You have zero — or wildly inconsistent — purchase events in GA4. Something is broken in your tracking stack, and it’s been silently corrupting your conversion data.
Thank you for reading this post, don't forget to subscribe!This isn’t just an analytics inconvenience. If your purchase events aren’t firing reliably, your conversion rate data is wrong, your ROAS calculations are wrong, and any decisions you’re making based on GA4 reports are built on a broken foundation. Here’s how to find the problem and fix it.
Why WooCommerce GA4 Tracking Breaks More Often Than Shopify
Shopify is a hosted platform with a standardized checkout. WooCommerce runs on your server, your hosting, your plugins, and your theme. That flexibility is the reason most people choose it — and it’s also the reason tracking breaks.
Every WooCommerce site has its own combination of plugins, theme modifications, and server configuration. GA4 doesn’t integrate natively with WooCommerce the way it does with Shopify. You need a plugin — or a custom Google Tag Manager implementation — to get purchase data into GA4 at all. That dependency creates multiple failure points.
There are three main integration paths for WooCommerce GA4 tracking. First, via Google Site Kit, which is accessible but limited in what ecommerce data it sends. Second, via a dedicated plugin like WooCommerce Google Analytics Integration or Enhanced Ecommerce for WooCommerce by Tatvic. Third, via Google Tag Manager with a custom dataLayer implementation, which is the most powerful option and the most complex to get right.
Every plugin update — to WooCommerce itself, to your GA4 plugin, to your theme, to a caching plugin — is a potential breaking point. Unlike Shopify’s hosted checkout, WooCommerce checkout happens on your own domain, which means there’s no platform team catching these breaks for you.
The 5 Most Common Causes of Missing Purchase Events in WooCommerce
1. The Thank You / Order Confirmation Page Isn’t Triggering the Tag
The purchase event in GA4 should fire once, on the WooCommerce order confirmation page. That page lives at a URL like /checkout/order-received/12345/?key=wc_order_abc123. If your GTM tag is configured to fire on “All Pages” and your purchase event tag has no specific trigger for that URL pattern, it won’t fire correctly.
The right trigger for a purchase event tag in GTM is a Page Path trigger matching /checkout/order-received/ — not all pages, not the checkout page, specifically the order-received URL. If the trigger doesn’t match that URL exactly, the tag fires on the wrong page or doesn’t fire at all.
How to check: open GTM Preview mode, walk through a complete test checkout, and on the order-received page verify that your GA4 purchase tag appears in the “Tags Fired” list. If it’s not there, the trigger configuration is the problem.
2. Plugin Conflict After an Update
WooCommerce plugins that hook into woocommerce_thankyou — the WordPress action that fires on the order confirmation page — can interfere with each other. If two plugins both modify that page, they can prevent the GA4 dataLayer push from executing in the right sequence.
Caching plugins are the most frequent culprit. WP Rocket, W3 Total Cache, and similar plugins sometimes cache the order-received page, serving a cached version to returning visitors or bots. This means the purchase event fires for the cached page visit instead of the actual order. Some caching plugins have a specific exclusion rule for the order-received URL — if that exclusion isn’t configured, you’ll see inconsistent tracking.
Checkout customization plugins — anything that adds fields, modifies the order flow, or replaces the default WooCommerce checkout template — can also break the hook sequence.
How to check: on a staging copy of your site, deactivate all non-essential plugins and test tracking from scratch. If it works with plugins off, reactivate them one at a time until the problem returns.
WooCommerce tracking issues are faster to fix with direct store access.
The Tracking & Analytics Sprint audits your full GTM and GA4 setup and rebuilds it correctly — so your data actually matches your orders.
See the Tracking Sprint →3. The dataLayer Push Fires Before GA4 Is Loaded
GTM tag firing order matters. Your GA4 Configuration tag needs to initialize before any event tags can send data to the right GA4 property. If the purchase event dataLayer push executes before the GA4 Configuration tag has loaded, the event goes nowhere.
This happens more often than it should because of how some WooCommerce GA4 plugins push to the dataLayer. They push the purchase event data immediately on page load, before GTM has finished processing the tag queue. If your GA4 Configuration tag has any conditions on it — even something that seems harmless like a consent trigger — it may load later than the event data arrives.
The fix: ensure your GA4 Configuration tag fires on “All Pages” with no additional conditions or consent gate delays. Your purchase event tag should fire on the specific order-received trigger. That way the configuration always loads first, and the event fires after.
4. Transaction ID Deduplication Issues
GA4 deduplicates purchase events by transaction_id. If it receives two purchase events with the same transaction ID, it only counts one. This behavior is intentional and usually correct — it prevents double-counting when someone refreshes the confirmation page.
But the reverse problem also exists: if the transaction ID being sent to GA4 is inconsistently formatted — sometimes a plain integer, sometimes prefixed with a # or a string, sometimes formatted differently by different plugins — you get events that GA4 treats as separate transactions when they’re actually the same order. This inflates purchase counts and revenue.
The more common issue is undercounting: if your tag fires twice on the same order-received page load (a bug in some plugin implementations), you end up with apparent duplicates that GA4 collapses into one, making it look like fewer purchases happened than actually did.
How to check: open GA4 DebugView, place two test orders back to back, and inspect the transaction_id value in each purchase event. They should be unique WooCommerce order IDs with consistent formatting.
5. The GA4 Integration Plugin Has a Known Bug or Is Outdated
WooCommerce moves fast, and GA4 plugins don’t always keep up. If your GA4 integration plugin hasn’t been updated to be compatible with your current WooCommerce version, specific events — including the purchase event — can fail silently.
The WooCommerce Blocks checkout (the newer block-based checkout experience) is a particularly common source of this problem. Many GA4 plugins were built for the classic shortcode-based WooCommerce checkout. If you’ve switched to the block checkout, your plugin may not support it.
How to check: look at the plugin’s WordPress.org changelog. Find the last update date and the WooCommerce compatibility range it lists. Open the plugin’s support forum and search for “purchase event” or “order confirmation” — active bugs usually surface there within a few weeks of appearing.
How to Verify the Fix Is Working
Don’t rely on checking GA4 reports after the fact. Reports have a processing delay, and you won’t know if you’ve fixed the problem until the next day. Test in real time.
Enable GTM Preview mode by clicking “Preview” in your GTM workspace. In a separate browser window, navigate to your store and complete a real test order. Use a WooCommerce coupon for 100% discount so you don’t charge a real card — create a coupon in WooCommerce Admin → Marketing → Coupons with a fixed cart discount equal to your highest product price and set “Free Shipping” to yes.
On the order-received page, check the GTM debug panel and confirm your GA4 purchase tag appears under “Tags Fired.” Then open GA4 → Admin → DebugView and verify the purchase event appears in the event stream with the correct transaction_id, value, and items array. If all three are correct and matching your WooCommerce order data, the fix is working.
When to Get Help
If you’ve worked through all five causes and purchase events are still missing or inconsistent, the problem is likely deeper: a custom checkout flow, a non-standard payment gateway that redirects to a third-party page before returning to order-received, a block-based checkout implementation, or a theme modification that’s interfering with the hook sequence. These require someone who can look directly at your specific implementation.
The same applies if you’ve fixed the immediate issue but aren’t confident your GA4 data can be trusted going forward — because broken tracking in the past means your historical data is already compromised, and you need to know how far back the problem goes before you make decisions based on it.
Get your WooCommerce tracking rebuilt correctly.
The Tracking & Analytics Sprint audits and fixes your full GA4 and GTM setup in 14 days — purchase events, funnel data, and a reporting structure you can trust.
Want a full store diagnostic first? E-Commerce Audit →
Book the Tracking Sprint → Ask a QuestionThe Bottom Line
WooCommerce GA4 tracking fails more often than Shopify because it has more moving parts — plugins, themes, hosting, caching — and no platform team watching for breaks. The most common causes are the order confirmation page not triggering the tag, a plugin conflict after an update, or a dataLayer timing issue.
Test with GTM Preview mode and GA4 DebugView before and after any fix. Don’t rely on reports with a 24-hour delay to confirm something is working.
Ready to fix what's broken?
Stop guessing and get a real diagnosis. Book a Growth Audit or jump straight into a Sprint.