Why WooCommerce order attribution says Unknown
By Devendra Variya, co-founder of Virling. Published 2026-11-01.
TL;DR: Unknown means WooCommerce saved no attribution data with the order. Its order attribution reads the visitor's source from cookies set in the browser, so anything that stops those cookies or that script, or any order placed without a browser visit, ends up as Unknown. Data that was never saved cannot be recovered later, so the fixes only help future orders.
How WooCommerce order attribution works
Order attribution is built into WooCommerce. You can turn it on or off under WooCommerce, Settings, Advanced, Features. A script in the store records where each visitor came from, such as a referrer or UTM tags, in short-lived cookies. At checkout WooCommerce copies those values onto the order and shows them as the order's origin.
The usual causes of Unknown
| Cause | How to spot it | Fix |
|---|---|---|
| Orders with no store visit | Orders created in the admin, through the REST API, by import, or as subscription renewals | Expected. Filter them out before you compare channels |
| Blocked cookies or scripts | Unknown share is higher for buyers on privacy browsers or with ad blockers, and where your consent banner is declined | Some loss is normal. Make sure the attribution script is not blocked by your own consent setup once a visitor accepts |
| Optimisation plugins | Unknown started after you added caching, script delay or minify settings | Exclude the order attribution script from delay and combine settings, then test an order |
| Checkouts that skip the store's pages | Express buttons, payment links or a checkout on another domain | Test each checkout path with a tagged link and check the order's origin |
| Long gaps before buying | The buyer visited from an ad or a post, then came back much later | The cookies are short-lived. Use analytics that keeps the first source on a visitor ID |
| Bots and fake orders | Failed or spam orders with no device type | Block spam at checkout; these were never real visits |
How to test it
- Open your store in a private window from a link with
?utm_source=test&utm_medium=test. - Place a test order the way a customer would.
- Open the order in the admin and check the origin. If it says Unknown, turn off script delay and caching rules one at a time and repeat.
Keep the source on every order
A sturdier approach is to store a visitor ID on the order and match it to that visitor's visits, so the source does not depend on a cookie lasting until checkout. Virling does this with a short snippet that saves the visitor ID in the order's meta data, for the classic and block checkout. It reads orders with a read-only REST key, counts refunds and WooCommerce Subscriptions renewals, and shows revenue per visitor for each channel; see WooCommerce revenue attribution.
The same problem shows up on other platforms under another name; see why Shopify orders show up as Direct.
Frequently asked questions
What does Unknown mean in WooCommerce order attribution?
It means WooCommerce saved no attribution data with the order, so it cannot say which source brought the buyer. It is not a display error, and the data cannot be filled in later.
Why are WooCommerce orders Unknown even with UTM links?
The UTM tags are read by a script into cookies. If the script is delayed or blocked, the cookies are refused, or the checkout runs outside the store's pages, the values never reach the order.
Do subscription renewals show as Unknown?
Renewal orders are created without a store visit, so they carry no fresh attribution. A tool that links renewals to the first payment keeps their original channel.
How do I turn on WooCommerce order attribution?
Go to WooCommerce, Settings, Advanced, Features and enable Order Attribution.
See which channel brings your WooCommerce buyers: start a 14-day free trial at app.virling.com.