10 Most Common WooCommerce Problems (and How to Fix Them) in 2026

Common WooCommerce problems and fixes: I read 185 WooCommerce support threads, 2026 guide
74 / 100 SEO Score

Your store worked yesterday. Today the checkout spinner never stops, Stripe says it was paid but WooCommerce cancelled the order, and a customer has emailed to say they were charged twice.

If that sounds familiar, you’re not alone. I read the 185 most recent threads on the official WordPress.org support forums for WooCommerce, WooPayments and WooCommerce Stripe, posted between mid-September and early November 2026. Then I sorted every one by the problem behind it.

Quick answer: the most common WooCommerce problems right now are checkout failures, plugin conflicts and payments that don’t match orders. Most of them come down to four causes: caching the wrong pages, broken webhooks, a weak WP-Cron setup, and updating on a live site. Below are the top 10 problems, what’s really causing each one, and the fix I use on client stores.

I’m a WordPress and Divi developer and fix WooCommerce stores for clients. Everything here is free to do yourself. If you’d rather not, there’s an offer at the end.

The 10 most common WooCommerce problems (at a glance)

# Problem Threads Usual cause
1. Checkout broken or stuck Spinner, session expired, “checkout fails at payment” 21 Cached checkout, JavaScript conflict
2. Plugin conflicts and setup errors Missing API keys, theme conflicts 17 Blocked REST API, wrong site URL
3. Payment doesn’t match order No money received, duplicate charges, payouts held 16 Failed webhooks, slow server
4. Critical errors and crashes White screen, ChunkLoadError, database errors 15 Plugin code, optimisation plugins
5. Shipping and tax wrong Wrong rates, 5,50 becomes 550, tax on downloads 12 Zone order, decimal settings
6. An update broke the site “Version 11.1.0 crashed my site” 11 Updating live, no staging
7. Payment method settings Klarna/Afterpay showing where you don’t want it 11 Gateway settings, currency
8. Products not showing Missing from shop, old prices on Google 10 Visibility, lookup tables, feed
9. Orders and stock Paid orders auto-cancelled, backorders failing 9 Hold stock + slow WP-Cron
10. Theme and layout Template overrides ignored, filters missing 9 Block themes, outdated templates

Just missing the top 10: Apple Pay / Google Pay buttons not showing (8), variation images (8), emails and downloads not arriving (8), translations and currency (6), and the mini-cart (4).

Before you fix anything: the 5-minute health check

Half the threads I read would have been solved in minutes with these three tools. Do this first:

  1. Read the logs. Go to WooCommerce → Status → Logs and open any file starting with fatal-errors or your gateway’s name (woocommerce-gateway-stripe, woopayments).
  2. Turn on the WordPress debug log. Add this to wp-config.php, reproduce the problem, then open wp-content/debug.log:
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );
  3. Test for conflicts without breaking the live site. Install the free Health Check & Troubleshooting plugin and turn on Troubleshooting Mode. It turns off your plugins and theme only for you, so customers see nothing. Turn plugins back on one at a time until the problem returns.

1. Checkout is broken, stuck or “session expired”

This was the biggest problem in the forums by a clear margin. Typical titles: “Checkout fails at payment” and “purchase processes but endless spinner on checkout page”.

Why it happens: checkout is the most dynamic page on your site. It depends on sessions, cookies and live JavaScript. When a caching plugin, CDN or “speed” plugin serves an old copy of it, or a plugin’s script crashes, checkout fails.

The fix

  1. Exclude /cart/, /checkout/ and /my-account/ from page caching in your caching plugin and in Cloudflare (or any CDN).
  2. Exclude WooCommerce scripts from “delay JavaScript”, “combine JS” and “defer JS” settings.
  3. Open checkout, press F12 → Console, and place a test order. A red error names the plugin that’s causing it.
  4. Check which checkout you use. Many plugins and custom code snippets still only work with the classic checkout, not the newer block checkout. If an add-on stopped working, swap the Checkout page content for the [woocommerce_checkout] shortcode as a quick test.

2. Plugin conflicts and “can’t connect” setup errors

Examples: “missing live_publishable_key and live_payment_key”, and payment plugins clashing with popular themes like Woodmart.

Why it happens: gateways like Stripe and WooPayments talk to your site through the WordPress REST API. Security plugins, firewalls and Cloudflare rules often block it without telling you.

The fix

  • Visit yourdomain.com/wp-json/. You should see a page of JSON code. If you see an error or a block page, whitelist /wp-json/ in your security plugin or firewall.
  • Make sure Settings → General shows the same address (https, with or without www) as your Stripe or WooPayments account.
  • Disconnect and reconnect the gateway in WooCommerce → Settings → Payments. It refreshes the keys and webhooks.

3. The payment and the order don’t match

This is the scariest one, because it’s real money: “PayPal purchases generate receipts, but no money movement”, “Duplicate Stripe charges after HTTP 499 checkout errors”, and payouts held for months.

Why it happens: the gateway tells your store “this was paid” using a webhook. If the webhook fails, WooCommerce never hears about it. Duplicate charges usually mean checkout was so slow the connection timed out (that’s the HTTP 499), so the customer clicked again.

The fix

  • Check webhook delivery. In Stripe go to Developers → Webhooks and look for failed events. Every event should return 200. A 403 or 5xx means your firewall or server is rejecting them.
  • Speed up checkout. Use PHP 8.2 or newer, turn on an object cache (Redis) and remove heavy plugins from the checkout page. A checkout that loads in under 2 seconds rarely gets double-clicked.
  • Payouts held? Answer identity-check (KYC) emails from Stripe or WooPayments the same day, and keep a second payment method switched on so a hold doesn’t stop your sales.

4. “There has been a critical error on this website”

Typical titles: “ChunkLoadError Loading CSS Chunk 3799 Failed” and “Ambiguous column label”.

The fix

  • White screen or critical error: check the email WordPress sends to the admin address. It has a recovery-mode link that lets you log in and turn off the plugin causing the crash. No email? Rename that plugin’s folder in wp-content/plugins using your host’s File Manager.
  • ChunkLoadError in the admin: an optimisation plugin or CDN is serving old or combined files. Clear every cache, and exclude /wp-content/plugins/woocommerce/ from JavaScript and CSS minify/combine.
  • “Ambiguous column” database errors: usually an older plugin running its own database queries against the new order storage (HPOS). Update that plugin. As a short-term workaround, turn on compatibility mode in WooCommerce → Settings → Advanced → Features.

5. Shipping and tax are wrong

My favourite title of the lot: “Flat Rate Shipping Cost 5,50 Incorrectly Saved as 550”. One misplaced comma and every customer pays 100× the shipping cost.

The fix

  • Decimals: make the decimal separator in WooCommerce → Settings → General match what your import file, API or shipping plugin sends.
  • Zones: WooCommerce uses the first zone that matches, so order them from most specific (a city or postcode) to most general (rest of the world).
  • Weights: weight-based and carrier rates (USPS, FedEx) fail quietly if a product has no weight or size. Fill them in for every product.
  • Tax: put digital products in their own tax class. For US sales tax or EU VAT, use automated tax (WooCommerce Tax, TaxJar or Avalara) instead of typing rates in by hand.

6. An update broke my site

“Version 11.1.0 Crashed My Site”, “Order Complete Delay After 11.0.0 Update”, and an iPhone app that returned a 403 error straight after WooCommerce 11.2.2. Every big release produces a wave of these threads.

The fix: a simple update routine

  1. Turn off auto-updates for WooCommerce and your payment plugins.
  2. Wait 7–14 days after a major release. The x.x.1 fix usually follows within days.
  3. Take a backup, then update on a staging copy first. Most good hosts include one-click staging.
  4. Place a real test order on staging before you update the live site.
  5. Already broken? Use the free WP Rollback plugin to go back to the previous version in one click.

7. Payment methods showing up where you don’t want them

Example: “Hide Afterpay Klarna from Product Page”. Others asked why a local method like MB Way wasn’t showing at all.

The fix

  • “Pay later” messages (Klarna, Afterpay, Affirm) are controlled in your gateway’s settings, not your theme. Open the gateway under WooCommerce → Settings → Payments and turn off the product-page or cart messaging.
  • Local payment methods only appear when the store currency and the customer’s country match what that method supports. MB Way, for example, needs EUR and a Portuguese customer.

8. Products not showing in the shop (or on Google)

“Products not showing up in store catalog but show up with direct link” is a classic, along with Google showing last month’s prices.

The fix

  • On the product, check Catalog visibility (in the Publish box) is set to “Shop and search results”.
  • Check WooCommerce → Settings → Products → Inventory → “Hide out of stock items”. It’s often turned on by accident.
  • Run WooCommerce → Status → Tools → Regenerate the product lookup tables. This fixes many filter and sorting problems.
  • For Google: connect Google for WooCommerce to Merchant Center so prices sync automatically, then request indexing in Search Console.

9. Paid orders being cancelled automatically

“Stripe payments received but WooCommerce orders automatically cancelled”. The customer paid and the order was cancelled anyway. Ouch.

Why it happens: the Hold stock setting cancels unpaid orders after a set number of minutes. If the payment confirmation arrives late (slow webhook, or WP-Cron that only runs when someone visits), WooCommerce cancels the order first.

The fix

  • In WooCommerce → Settings → Products → Inventory, raise Hold stock (minutes) to 60 or more, or leave it empty to turn it off.
  • Replace WP-Cron with a real server cron job. Add define( 'DISABLE_WP_CRON', true ); to wp-config.php, then in your hosting panel run wp-cron.php every 5 minutes. This also clears the “pending actions” pile-up in Tools → Scheduled Actions.
  • Backorders not working? Track stock and Allow backorders both have to be on, for each variation as well as the main product.

10. Theme and layout changes don’t work

“Modified meta.php with Child Theme Not Working” and filter blocks that won’t appear in the shop sidebar.

The fix

  • Template overrides must use the same path: your-child-theme/woocommerce/single-product/meta.php.
  • Block themes (like Twenty Twenty-Five) ignore most PHP templates. Edit the shop and product templates in Appearance → Editor → Templates instead.
  • Check WooCommerce → Status → System status → Templates. If it says your theme has outdated copies of WooCommerce templates, update the theme or ask its developer.
  • Using Divi? Build shop and product pages with the Divi Theme Builder and the Woo modules rather than editing PHP files. They survive updates.

Quick fixes for the rest

  • Apple Pay button missing: your domain has to be registered with Stripe (Settings → Payment method domains in the Stripe dashboard), the site must use HTTPS, and you need to test in Safari with a card already in Apple Wallet.
  • Emails “sent” but never arrive: an SMTP plugin alone isn’t enough. Add SPF, DKIM and DMARC records for your domain, and send through a transactional service such as Postmark, Brevo or Amazon SES.
  • Customers can’t download files: in WooCommerce → Settings → Products → Downloads, try “Redirect only” or “X-Accel-Redirect/X-Sendfile” to match your server.
  • Variation image not changing: give every variation its own image, and clear any lazy-load or image-optimisation cache.

The WooCommerce store-owner checklist (save this)

If you do nothing else, these six habits prevent most of the problems in this post:

  1. Never cache cart, checkout or my-account.
  2. Check your payment webhooks once a month.
  3. Run a real server cron job instead of WP-Cron.
  4. Update on staging, wait a week after big releases, and always back up first.
  5. Keep plugins lean. Remove anything not updated in the last 12 months.
  6. Place a real test order after every change.

Store broken right now?

Every hour checkout is down costs you sales. Send me the error and your site address. I’ll find the cause, fix it, and tell you how to stop it happening again. Fixed price, no fix, no fee.

Get your WooCommerce store fixed →

Frequently asked questions

Why does my WooCommerce checkout keep failing?

The most common cause is a caching or optimisation plugin serving an old copy of the checkout page, or a plugin’s JavaScript crashing. Exclude cart and checkout from caching, then check the browser console (F12) for errors while placing a test order.

Why do Stripe payments go through but WooCommerce orders stay pending or get cancelled?

The payment confirmation (webhook) isn’t reaching your store, or arrives after the Hold stock timer cancels the order. Check webhook delivery in your Stripe dashboard and replace WP-Cron with a real server cron job.

How do I find which plugin is breaking WooCommerce?

Use the free Health Check & Troubleshooting plugin. It turns off plugins only for your login, so customers aren’t affected. Turn them back on one at a time until the problem comes back.

Is it safe to auto-update WooCommerce?

For small plugins it’s usually fine, but not for WooCommerce itself or your payment plugins. Update those manually, on a staging copy first, about a week after a major release.

How do I undo a WooCommerce update?

Install the free WP Rollback plugin and choose the previous version from the Plugins page. Take a backup first, because a few major releases change the database.

Why are my WooCommerce emails not being delivered?

WordPress sends email from your web server by default, which Gmail and Outlook often mark as spam. Use an SMTP plugin with a transactional email service, and add SPF, DKIM and DMARC records to your domain.

Final word

After reading 185 support threads, the pattern is clear: most WooCommerce problems aren’t WooCommerce bugs. They come from caching, webhooks, cron and updates done on a live site. Fix those four things and your store will be far more stable than most. Bookmark this page, and the next time something breaks, start with the 5-minute health check.

If this helped, share it with another store owner. They’ve probably been stuck on one of these too.

0 Comments