WooCommerce Down? How to Diagnose and Fix a Broken WooCommerce Store

Your WooCommerce store is not working and every minute it is down is revenue you are losing. This guide walks through the most common causes — from plugin conflicts to payment gateway failures — and gives you a clear path to diagnosing and fixing each one.

Why WooCommerce breaks in so many different ways

WooCommerce is a powerful plugin, but it is also one of the most complex pieces of software running on any WordPress site. It manages a product catalogue, a shopping cart, a checkout process, payment gateway integrations, order management, inventory, emails, and customer accounts — all running on top of WordPress, PHP, MySQL, and your hosting infrastructure.

Any one of those layers can fail independently. Your hosting server can be functioning perfectly while WooCommerce shows a white screen because of a PHP memory limit. Your payment gateway can be down while the rest of your store works fine. A plugin update can break checkout without touching your product pages. A database table can become corrupted in a way that only affects orders, leaving the rest of your site untouched.

This complexity is why diagnosing WooCommerce failures requires a systematic approach. You need to isolate which layer is failing before you can fix it.

Step 1 — Confirm the problem and gather basic information

Before touching anything, understand exactly what is broken:

  • Which pages are affected? Is it the whole site, just the shop, just checkout, or just the cart?
  • What does the visitor see? A white screen, a 500 error, a 404, a broken layout, or a payment failure message?
  • When did it start? Did anything change around that time — a plugin update, a WordPress update, a hosting migration?
  • Is it consistent? Does it happen every time on all browsers, or intermittently?
  • Are you logged in as admin? Some issues only affect logged-out visitors. Test in an incognito window.

Check your WordPress admin panel. Can you log in? If yes, go to WooCommerce > Status. This screen shows PHP version, memory limits, database table status, and any known configuration problems. It is one of the fastest ways to spot obvious issues.

Step 2 — Check for plugin conflicts

Plugin conflicts are the single most common cause of WooCommerce failures. When you have 20, 30, or 40 plugins active, the chance of two of them clashing over the same WordPress hook, the same database query, or the same JavaScript function is significant.

The standard diagnostic process is:

  1. Go to Plugins > Installed Plugins in wp-admin
  2. Deactivate all plugins except WooCommerce
  3. Test your store — shop page, cart, checkout
  4. If the store works, the problem is one of the plugins you deactivated
  5. Reactivate plugins one at a time, testing after each one
  6. When the problem returns, the last plugin you activated is the conflict

Yes, this process takes time. But it is the only reliable way to identify plugin conflicts. Guessing at which plugin is causing the problem rarely works.

Common conflict culprits include: security plugins with aggressive firewall rules blocking legitimate checkout requests, caching plugins serving cached versions of the cart or checkout pages, page builder plugins adding JavaScript that conflicts with WooCommerce, and payment gateway plugins that conflict with each other when more than one is active.

Step 3 — Check PHP memory limit and fatal errors

WooCommerce is memory-hungry. The minimum PHP memory limit for a WooCommerce store is 128MB, but the recommended minimum is 256MB. On a busy store with many plugins and a large product catalogue, you may need 512MB or more.

When WooCommerce runs out of PHP memory, the page dies mid-generation. The result is typically a white screen, a truncated page, or a 500 Internal Server Error — depending on your server configuration.

How to check and increase PHP memory

Go to WooCommerce > Status > System Status. Look for "PHP Memory Limit" and "WP Memory Limit." If either is below 256MB, increase them by adding the following to your wp-config.phpfile, above the line that says "That's all, stop editing":

define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

If your hosting provider has set a hard PHP memory limit that overrides this, you will need to increase it in your hosting control panel or contact your host.

Enable debug logging to find fatal errors

Add the following to wp-config.php to capture PHP errors without displaying them to visitors:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Errors will be written to /wp-content/debug.log. Check this file for the exact error and which file triggered it. This tells you which plugin or theme function is causing the fatal error.

Step 4 — Check the database

WooCommerce stores orders, products, cart sessions, and customer data in your WordPress database. Database problems — corruption, failed upgrades, or connection errors — can break the store in ways that are difficult to diagnose from the frontend.

Run the WooCommerce database repair tool

Go to WooCommerce > Status > Toolsand run "Verify base database tables." This checks that all required WooCommerce database tables exist and have the correct structure. Missing or malformed tables are a common consequence of interrupted updates.

You can also repair WordPress database tables from your hosting control panel. In cPanel, go to phpMyAdmin, select your WordPress database, select all tables, and use the "Repair table" option from the dropdown menu. This fixes minor corruption that can cause intermittent errors.

Check for the database connection error

If you see "Error establishing a database connection," the problem is more fundamental — WordPress cannot connect to MySQL at all. Check your wp-config.php database credentials (DB_HOST, DB_NAME, DB_USER, DB_PASSWORD), verify your database server is running, and confirm the user has the correct permissions. See our WordPress database connection error guide for a full walkthrough.

Step 5 — Check your hosting infrastructure

Some WooCommerce failures are not caused by WordPress or WooCommerce at all — they are caused by the hosting environment underneath it.

CPU and memory throttling on shared hosting

Shared hosting providers impose CPU and memory limits on each account. During traffic spikes, your WooCommerce store can exhaust these limits, causing pages to load extremely slowly, return 500 errors, or stop loading entirely. The server is "up" — other sites on the same server are fine — but your specific account is being throttled.

Signs of throttling: the site is slow or broken during certain times of day, the problem resolves itself after a few minutes, your hosting control panel shows high CPU or memory usage. If this is recurring, you need to upgrade your hosting plan or move to a host with better resource allocation. See our guide on WordPress shared hosting CPU limits for more detail.

PHP version compatibility

WooCommerce has minimum PHP version requirements. If your host upgraded PHP without warning, or if you changed the PHP version in your hosting control panel, incompatible plugins can throw fatal errors. Check WooCommerce > Status for the required versus installed PHP version. WooCommerce 8.x requires PHP 7.4 minimum, with PHP 8.1 or 8.2 recommended.

File permission errors

WordPress needs to write to certain directories — uploads, cache, sessions. If file permissions are too restrictive, WooCommerce cannot store session data, write log files, or save uploaded product images. Standard WordPress permissions are 755 for directories and 644 for files. Check your /wp-content/ directory permissions if you see errors related to file writing.

Step 6 — Check your payment gateway

One of the most common WooCommerce "down" reports is actually a working store with a broken checkout — specifically, a payment gateway that is failing. The store looks fine until customers try to pay.

Test in sandbox/test mode first

Most payment gateways (Stripe, PayPal, Square) have a test mode. Switch to test mode in WooCommerce > Settings > Payments, then attempt a test transaction. If test mode works but live mode does not, the problem is with your live payment gateway credentials or your gateway account.

Common payment gateway failures

  • Expired API keys — Stripe and PayPal API keys can be revoked or expire. Regenerate them in your payment gateway account and update WooCommerce settings.
  • SSL certificate issues — Payment gateways require HTTPS. An expired or misconfigured SSL certificate will cause payment API calls to fail. Check your SSL status with our SSL certificate monitoring guide.
  • Webhook misconfiguration — If your payment gateway uses webhooks for order confirmation (Stripe does), the webhook URL must be accessible. A firewall blocking the gateway's IP range will cause orders to appear as "pending" indefinitely.
  • Currency mismatch — Your WooCommerce currency setting must match the currency enabled in your payment gateway account.
  • Payment gateway platform outage — Sometimes the gateway itself is down. Check Stripe's or PayPal's status page to confirm. If their platform is down, there is nothing you can do except wait and display a message to customers.

Step 7 — Check for SSL and HTTPS issues

An SSL certificate problem can break WooCommerce in ways that are not immediately obvious. Mixed content errors — where some page elements load over HTTP while the page is served over HTTPS — can break the WooCommerce JavaScript that powers the cart and checkout. The page loads, but the checkout form does not work.

If your store recently switched to HTTPS and checkout is not working, check your browser console for mixed content warnings. URLs hardcoded as HTTP in your database are a common cause — you may need a search-and-replace tool like Better Search Replace to update all HTTP references to HTTPS.

Also check that your SSL certificate has not expired. An expired certificate does not just show a browser warning — it breaks all HTTPS connections, including payment gateway API calls, causing checkout to silently fail. See our post on fixing an expired SSL certificate for the full process.

Step 8 — Check WooCommerce session handling and caching

WooCommerce relies on PHP sessions or database sessions to maintain cart state as customers browse your store. If your caching plugin is aggressively caching pages, it can serve cached versions of the cart and checkout to customers, causing the cart to appear empty or showing stale content.

All reputable caching plugins have WooCommerce-specific exclusion rules that prevent caching of cart, checkout, and my-account pages. Verify these exclusions are configured correctly. If you recently installed a caching plugin, check whether WooCommerce pages are excluded from caching.

WP Rocket, LiteSpeed Cache, and W3 Total Cache all have automatic WooCommerce detection, but they sometimes miss edge cases. If cart contents disappear, checkout breaks, or sessions reset unexpectedly, disable your caching plugin and test again to confirm whether it is the cause.

How to monitor WooCommerce uptime automatically

WooCommerce failures cost real money. Every minute your checkout is broken is a lost sale. You should not be finding out about problems from customer complaints or Google reviews — you should be the first to know, within 60 seconds.

Set up the following monitors in Uptrue:

Monitor 1 — Homepage (HTTP, 1 minute interval)

Check that your homepage returns a 200 status code. This is your baseline. If your homepage is down, your entire site is unreachable.

Monitor 2 — Shop page (HTTP + keyword, 1 minute interval)

Check that your shop URL returns 200 and that a keyword like "Add to cart" or your most popular product name appears. This catches cases where the page loads but WooCommerce functionality is broken.

Monitor 3 — Checkout page (HTTP, 1 minute interval)

Check that /checkout/ returns 200. A checkout failure that is not caught immediately is direct revenue loss. With a 1-minute check interval, you know within 60 seconds.

Monitor 4 — SSL certificate (daily check, 30-day alert)

Monitor your SSL certificate expiry. An expired certificate breaks payment gateways even when the rest of the site appears to be working.

Monitor your WooCommerce store automatically

Get alerted within 60 seconds if your shop, cart, or checkout goes down. Free plan available — no credit card required.

Start Monitoring Free

The most important thing to do after fixing WooCommerce

Once you have identified and fixed the cause, document what went wrong, when it started, and what fixed it. If the cause was a plugin conflict, note which plugins conflict — and consider whether you need both. If the cause was a PHP memory limit, make sure the increased limit is saved permanently, not just in a session.

More importantly: set up monitoring so the next time something breaks, you find out before your customers do. A WooCommerce store with 100 visitors per day and a 2% conversion rate loses roughly 2 potential customers for every hour of downtime. At an average order value of £50, that is £100 per hour in lost revenue — not counting the customers who tried once, could not complete their purchase, and never came back.

Frequently asked questions

How do I know if WooCommerce is down or if it is just my theme?

Switch to a default WordPress theme (Storefront or Twenty Twenty-Four) via wp-admin under Appearance > Themes. If the store works correctly with the default theme, your active theme is the cause. If it still fails, the problem is more likely a plugin, database, or hosting issue. Also try deactivating all plugins except WooCommerce to isolate the cause — if the store works with just WooCommerce active, add plugins back one at a time until the problem returns.

WooCommerce checkout is not working but the rest of the store seems fine. What should I check?

Checkout failures are usually caused by: a payment gateway plugin conflict or misconfiguration, an expired or missing SSL certificate (most payment gateways require HTTPS), a JavaScript error from a plugin or theme breaking the checkout form, session handling issues from a caching plugin serving cached checkout pages, or a PHP error during order processing. Check your browser console for JavaScript errors, disable your caching plugin temporarily, and verify your payment gateway credentials are current.

My WooCommerce store shows a white screen or 500 error. How do I fix it?

A white screen or 500 error usually means a PHP fatal error. First, increase your PHP memory limit by adding define("WP_MEMORY_LIMIT", "256M") to wp-config.php. Then enable WordPress debug mode (define("WP_DEBUG", true) and define("WP_DEBUG_LOG", true) in wp-config.php) — this writes errors to /wp-content/debug.log without showing them to visitors. Check that file for the exact error. Common causes include a plugin conflict, exhausted PHP memory, or a corrupt database table. Deactivate all plugins except WooCommerce and reactivate them one at a time to identify the conflict.

Can I monitor WooCommerce uptime automatically?

Yes. Set up HTTP monitors for your critical WooCommerce pages: homepage, shop page, a product page, and the checkout page. Each should return a 200 status code. Add keyword monitors to check that key phrases like "Add to cart" or your product names appear — this catches cases where a page loads but content is broken. Monitor your checkout URL separately with a 1-minute check interval. This way you are alerted within 60 seconds of any page going down, rather than finding out from a customer who could not complete a purchase.

WooCommerce is down but my hosting says the server is fine. How is that possible?

Your hosting provider monitors their server infrastructure — CPU, memory, disk, and network. They do not check whether your WooCommerce store is actually functioning correctly. A WooCommerce store can be broken by a plugin conflict, database table corruption, PHP fatal error, or misconfigured payment gateway while the underlying server returns a 200 status code. The server is up but the application is broken. External uptime monitoring that checks the actual page content, response codes, and checkout functionality catches this where server-level monitoring cannot.