Why Does WooCommerce Say My Session Has Expired at Checkout?
Why This Usually Isn't a Genuine Timeout
WooCommerce's default session lifetime is generous enough that a customer completing checkout in a normal timeframe shouldn't encounter a genuine expiry. When this message shows up sooner than that, it's almost always a symptom of the session cookie itself not being read or maintained correctly, rather than the customer actually exceeding the configured expiry window.
Common Causes of a WooCommerce Session Expiring
- Browser cookie restrictions (third-party cookie blocking, aggressive privacy settings, private browsing mode in some configurations) preventing the session cookie from persisting correctly across the checkout flow.
- A caching plugin caching a page that includes session-dependent content incorrectly, effectively serving a mismatched session state.
- Multiple domains or subdomains (a www vs. non-www inconsistency, or a checkout hosted on a different subdomain) splitting cookie scope in a way that loses session continuity between pages.
- A security plugin or CDN stripping or modifying cookies in a way that breaks WooCommerce's session handling.
- WooCommerce's session database table (
wp_woocommerce_sessions) having an issue, in rarer cases, though this is less common than a cookie-related cause.
How to Diagnose and Fix It
- Check for domain consistency — confirm the site is served consistently (always www or always non-www, no unexpected subdomain switches) across the shopping and checkout flow.
- Test with a different browser and with cookie restrictions relaxed to rule out a client-side cookie-blocking issue.
- Check caching and security plugin settings for anything that might interfere with cookie handling specifically on cart/checkout pages.
- If the issue is widespread and not client-specific, check the WooCommerce sessions database table for any obvious corruption or unusual size.
Customers repeatedly hitting this and abandoning checkout? See WooCommerce fixes.
Testing the cookie theory
- Look at the cookies. In the browser's developer tools, open the site's cookies, add a product to the cart and reload. WooCommerce sets cookies such as
woocommerce_items_in_cart,woocommerce_cart_hashand awp_woocommerce_session_cookie. If the session cookie never appears, or disappears on the next page, something is blocking or stripping it. - Check the host consistency. If browsing happens on www and checkout on the bare domain or a subdomain, cookies set for one host aren't sent to the other.
- Test in a private window, in another browser and with extensions off. Browser privacy features and extensions can interfere with session cookies, especially when a hosted payment page is involved.
- Check whether a CDN or host cache strips cookies from pages it treats as cacheable. WooCommerce depends on those cookies reaching the server.
If it happens after returning from a payment page
When the message appears as a customer comes back from an off-site payment page, compare the domain they return to with the one where the cart began. A www and non-www difference between the two is enough to lose the session.