Your conversions stopped tracking after you installed a caching plugin. You’re not alone. LiteSpeed Cache, WP Rocket, W3 Total Cache—all of them can break WooCommerce conversion tracking if configured incorrectly. The Pixel Manager plugin documentation puts it bluntly: “Generally never enable HTML caching on a WooCommerce shop as it can cause troubles with plugins that generate dynamic output.”
The problem isn’t the caching plugin itself—it’s that tracking pixels need fresh, dynamic content while caching serves pre-rendered static pages. Here’s exactly what’s breaking and how to fix it without killing site speed.
Why Caching Breaks Conversion Tracking
Conversion tracking pixels work by injecting dynamic JavaScript into pages. When someone completes a purchase, the thank-you page fires a Facebook pixel, a GA4 event, a Google Ads conversion tag. That code needs to include the actual order details—order ID, revenue, products purchased.
Caching breaks this by serving yesterday’s page to today’s customer.
HTML caching stores pre-rendered page HTML to serve faster. But tracking codes aren’t static content—they’re dynamic output that changes per user and per session. When your cache plugin serves a cached thank-you page, the tracking code might contain the wrong order ID, the wrong revenue, or be missing entirely.
One WordPress.org user reported receiving zero conversions for three days after installing LiteSpeed Cache—despite processing orders normally. The sales were happening. The tracking was completely silent.
You may be interested in: WooCommerce Conversion Tracking Without Third-Party Cookies
The Pages That Must Never Be Cached
WooCommerce’s official documentation is explicit: cart, checkout, and account pages must be excluded from all caching (WooCommerce Developer Docs, 2025). These pages contain dynamic content that changes per user—cached versions break functionality entirely.
Here’s the exclusion list:
- /cart/ — Contains user-specific cart contents
- /checkout/ — Session-specific payment and user data
- /my-account/ — User dashboard with personal information
- /order-received/ — The thank-you page where conversions fire
- Any page with [woocommerce_cart] or [woocommerce_checkout] shortcodes
Beyond pages, you need to exclude WooCommerce cookies from your cache rules:
- woocommerce_cart_hash
- woocommerce_items_in_cart
- wp_woocommerce_session_*
If any of these cookies are present, the page should not be served from cache. Most caching plugins have options for cookie-based cache exclusion—but they’re not always configured by default.
JavaScript Minification: The Hidden Killer
Here’s the part nobody warns you about: JavaScript minification can corrupt tracking scripts entirely.
Minification combines and compresses JavaScript files to reduce page load time. But tracking pixels often use specific variable names and formatting that minification algorithms can break. WP Statistics documentation specifically notes that JavaScript errors may interfere with tracking—and minification is a common cause.
If your conversions stopped working after enabling minification:
- Disable JavaScript minification entirely as a first test
- Check browser console for errors — look for JavaScript exceptions
- Exclude tracking scripts from minification — most plugins let you exclude specific files
Files to exclude from minification typically include anything from Google Tag Manager, Facebook, Google Analytics, and your tracking plugin’s JavaScript files.
You may be interested in: When Someone Quits Your GTM Breaks: The Maintenance Nightmare
Plugin-Specific Configuration Guides
Different caching plugins require different exclusion settings. Here’s what to configure:
WP Rocket
Settings → Cache → Enable caching for logged-in users: Disable for WooCommerce stores. Under “Never Cache URLs,” add /cart/, /checkout/, /my-account/, and /order-received/. Under “Never Cache Cookies,” add woocommerce_cart_hash and woocommerce_items_in_cart.
LiteSpeed Cache
Navigate to Cache → Excludes. Add URIs: /cart/, /checkout/, /my-account/. Under “Do Not Cache Cookies,” add the WooCommerce session cookies. LiteSpeed Cache can completely break conversion tracking if these exclusions aren’t set—users report days of lost data.
W3 Total Cache
Under Page Cache, add rejected URIs and rejected cookies. W3 Total Cache is notoriously complex—if you’re unsure, disable page caching for WooCommerce pages entirely and use only browser caching and CDN.
NGINX Server-Level Caching
If you’re running server-level caching through NGINX or Varnish, the same rules apply but at the server configuration level. WooCommerce provides specific VCL rules for Varnish configuration in their developer documentation.
How to Test If Your Tracking Is Working
After making cache exclusion changes:
- Clear all caches — plugin cache, CDN cache, browser cache
- Use incognito mode to simulate a fresh visitor
- Complete a test purchase with a small-value product
- Check real-time reports in GA4 and Facebook Events Manager
- Verify the order ID matches between WooCommerce and your analytics platforms
If the order ID in WooCommerce doesn’t match the order ID reported in GA4, caching is still serving stale tracking data.
The Server-Side Solution
Here’s the thing about client-side tracking: it depends on JavaScript executing correctly in the browser. Cache configuration, minification, ad blockers, browser restrictions—any of these can break it.
Server-side tracking fires from order data on the server, not from JavaScript on the page.
When a WooCommerce order is processed, server-side tracking sends the conversion event directly from your server to GA4, Facebook CAPI, Google Ads. It doesn’t matter what the visitor’s browser sees. It doesn’t matter if the page is cached. The event fires when the order happens, period.
Transmute Engine™ is a first-party Node.js server that runs on your subdomain. The inPIPE WordPress plugin captures WooCommerce order events and sends them via API to your Transmute Engine server, which routes them to all your platforms simultaneously. Caching plugins can’t interfere because the tracking never depends on what’s rendered in the browser.
Speed vs. Accuracy: You Don’t Have to Choose
The advice isn’t “disable caching entirely.” It’s “configure caching correctly.”
You can keep aggressive caching on product pages, category pages, and your homepage. Those pages don’t contain dynamic tracking data. The exclusions are specific: cart, checkout, account, and order confirmation pages only.
But if you’re tired of chasing cache configuration conflicts, server-side tracking eliminates the problem entirely. Your site can be as aggressively cached as you want—the tracking operates independently.
Key Takeaways
- WooCommerce officially recommends against HTML caching on shop pages due to conflicts with dynamic tracking plugins
- Cart, checkout, and account pages must be excluded from all caching for conversion tracking to work correctly
- JavaScript minification can corrupt tracking scripts — test by disabling it or excluding tracking files
- WooCommerce cookies must be excluded from cache rules — woocommerce_cart_hash, woocommerce_items_in_cart, session cookies
- Server-side tracking is immune to cache configuration because it fires from order data, not browser JavaScript
Caching plugins serve pre-rendered HTML that may contain stale or missing tracking pixels. Dynamic content like conversion pixels changes per user session—when you serve cached pages, the tracking code doesn’t execute correctly for the actual visitor.
At minimum: cart, checkout, and my-account pages. Also exclude any page with dynamic content that changes per user. WooCommerce cookies (woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session) must be excluded from cache rules.
Exclude cart, checkout, and account pages from caching. Exclude WooCommerce cookies from cache. Disable JavaScript minification for tracking scripts or exclude them from minification entirely. Clear cache after making changes.
Yes. Server-side tracking fires events from order data on the server—not from JavaScript in the browser. This means cache configuration has no impact on tracking accuracy. Events fire when orders are processed, regardless of what the visitor’s browser sees.
Stop losing conversions to cache misconfiguration. Seresa’s Transmute Engine captures WooCommerce events server-side—where caching plugins can’t break them.



