Half Your WooCommerce Orders Show Unknown Attribution

February 25, 2026
by Cherry Rose

Apple Pay and Google Pay orders consistently show “Unknown” attribution in WooCommerce—and it’s a confirmed open bug since March 2024 (GitHub #3022). Meanwhile, express checkout adoption grew 40% year-over-year (Worldpay, 2025). That means the percentage of your orders with missing source data is growing every month, and WooCommerce has no fix on the roadmap.

WooCommerce Order Attribution relies on client-side JavaScript that must run before checkout completes. Express checkout, custom themes, consent tools, and payment redirects all break this process in different ways. If your store uses any combination of these—and most do—you’re making marketing decisions with incomplete data.

Express Checkout and Custom Themes Break Attribution at the Architecture Level

WooCommerce introduced Order Attribution as a core feature in version 8.5, promising built-in source tracking for every order. The implementation uses a JavaScript file (order-attribution.js) that captures the last-click source, stores it in cookies, and stamps it onto the order during checkout.

The problem isn’t a bug in the JavaScript. The problem is that modern checkout flows bypass the JavaScript entirely.

Here’s what breaks it:

Express Checkout (Apple Pay, Google Pay)

When a customer taps Apple Pay or Google Pay, the Payment Request API processes the payment directly—before WooCommerce’s checkout form renders. The attribution JavaScript never gets a chance to stamp the order. This is confirmed in GitHub woocommerce-gateway-stripe Issue #3022, filed in March 2024 and still unresolved. Every Apple Pay and Google Pay order in your store shows “Unknown” or “Direct” regardless of how the customer actually found you.

With Apple Pay and Google Pay usage growing 40% year-over-year in e-commerce (Worldpay Global Payments Report, 2025), this isn’t a niche problem. It’s a growing blind spot.

Custom Themes (WoodMart, Flatsome, and Others)

WooCommerce Order Attribution stamps data using the woocommerce_checkout_after_customer_details hook. Custom themes that override checkout templates—WoodMart, Flatsome, and dozens of others—can break this hook entirely. The XTemos WoodMart support forums show persistent reports of Unknown attribution, with the theme developers pointing to WooCommerce core and WooCommerce pointing back to the theme.

WooCommerce powers 36% of all e-commerce sites globally (BuiltWith, 2025). A significant portion of those stores use custom themes that silently break attribution.

Consent Management Platforms

Consent tools like Complianz and CookieYes can delay or block the attribution JavaScript from running. Even when a visitor grants consent, timing matters—if the consent tool loads after the attribution script should have fired, the data window is missed. In the EU, where 60-70% of users reject cookies when given equal-prominence options (USENIX Security Symposium/CNIL, 2024), the combination of consent rejection and consent tool timing conflicts compounds the attribution loss.

Payment Gateway Redirects

PayPal, Klarna, and Afterpay redirect customers to external payment pages. When the customer returns to your site after payment, the session that held attribution cookies may be gone. The order completes without the source data that was captured on the original visit.

You may be interested in: Your Campaign Link Is Smarter Than Your Website

The Cumulative Damage: 40-60% Unknown Orders

Each of these failure modes is bad enough on its own. Most WooCommerce stores trigger multiple failures simultaneously.

A typical WooCommerce store in 2026 runs a custom theme (for design flexibility), enables Stripe Express Checkout (for conversion optimization), uses a consent management platform (for GDPR compliance), and offers PayPal as an alternative payment method. That store is hitting four attribution failure points on every order path.

Stores enabling express checkout + custom theme + consent tool can see 40-60% of orders with Unknown or Direct attribution, making WooCommerce’s built-in analytics functionally useless for marketing decisions.

The damage extends beyond WooCommerce reports. When 84% of iOS users have opted out of app tracking (Flurry Analytics, 2025) and 31.5% of global internet users run ad blockers (Statista/Backlinko, 2024), your server-side attribution data becomes your most reliable source of truth. If that data says “Unknown” for half your orders, you can’t optimize ad spend, you can’t attribute revenue to campaigns, and you can’t prove ROI to stakeholders.

Here’s the thing: this isn’t a configuration error you can fix. It’s an architectural limitation of client-side attribution in modern checkout environments.

Why Client-Side Attribution Cannot Be Fixed for Express Checkout

The core issue is timing. Client-side attribution requires JavaScript to execute in the browser, capture source data, and attach it to the order before payment completes. Express checkout reverses this sequence—payment completes first, then the order is created.

No amount of JavaScript optimization can fix a timing problem where the payment happens before the script runs. The Payment Request API is designed to be fast, which means it skips the standard checkout form where WooCommerce’s attribution hook lives.

The question isn’t how to fix client-side attribution for express checkout. The question is why you’re relying on client-side attribution at all.

You may be interested in: WordPress Lead Form Attribution Is Broken: Track Which Ads Generate Leads

Server-Side Attribution: Source Data Before JavaScript Even Loads

Server-side attribution captures the customer’s source data at the HTTP request level—when the visitor first arrives at your site. This happens before JavaScript loads, before the checkout flow begins, before the customer selects a payment method.

The source data is stored server-side and associated with the customer’s session. When the order completes—whether through standard checkout, Apple Pay, Google Pay, PayPal redirect, or any other method—the attribution data is already captured and waiting.

Express checkout doesn’t matter. Theme overrides don’t matter. Consent tool timing doesn’t matter. The attribution data was captured at first contact, not at checkout completion.

Transmute Engine™ captures attribution server-side from the first HTTP request, then routes enriched event data to GA4, Facebook CAPI, Google Ads, and BigQuery simultaneously—all from a first-party server running on your own subdomain. The browser checkout flow is irrelevant because the data never depended on it.

Key Takeaways

  • Apple Pay and Google Pay orders always show “Unknown” in WooCommerce Order Attribution—this is a confirmed open bug with no fix on WooCommerce’s roadmap
  • Express checkout adoption grew 40% in 2025 (Worldpay), meaning your Unknown rate is increasing every quarter
  • Custom themes, consent tools, and payment redirects each independently break client-side attribution, and most stores trigger multiple failure points
  • The combined effect can reach 40-60% Unknown orders, making WooCommerce’s built-in analytics unreliable for marketing decisions
  • Server-side attribution captures source data at first visit, before checkout method selection, making it immune to these client-side failures
Why does WooCommerce Order Attribution show Unknown for Apple Pay and Google Pay orders?

Apple Pay and Google Pay use the Payment Request API, which processes payment before WooCommerce’s attribution JavaScript can stamp the order. This is a confirmed open bug (GitHub woocommerce-gateway-stripe #3022) with no official fix as of February 2026. Every express checkout order shows “Unknown” or “Direct” regardless of the customer’s actual source.

How do I fix WooCommerce order attribution showing Direct or Unknown for most orders?

First, identify which failure mode affects your store: express checkout, custom theme override, consent tool timing, or payment redirect. For express checkout, there is no client-side fix—the Payment Request API bypasses WooCommerce’s attribution hook by design. Server-side attribution that captures source data at the HTTP request level is the only complete solution.

Does WooCommerce Order Attribution work with custom themes like WoodMart or Flatsome?

Not reliably. Custom themes that override checkout templates can break the woocommerce_checkout_after_customer_details hook where attribution data is stamped. WoodMart and Flatsome users report persistent Unknown attribution in theme support forums, with theme developers and WooCommerce core team each pointing to the other.

Why do my WooCommerce orders show Unknown source even with UTM-tagged campaign links?

UTM parameters are captured by WooCommerce’s client-side JavaScript and stored in cookies. If anything disrupts this—express checkout bypassing the form, consent tools delaying script execution, or payment gateways redirecting to external pages—the UTM data never gets stamped on the order, even though the customer arrived through a properly tagged link.

Stop guessing which campaigns drive revenue. See how Seresa’s server-side attribution works regardless of checkout method →

Share this post
Related posts