Emergency diagnostic

WooCommerce checkout not working?

Run this diagnostic in order. WooCommerce checkout failures almost always trace to one of these 8 causes, ordered by how often they actually turn out to be the culprit.

First: check WooCommerce → Orders for the timestamp of your last successful order. If orders stopped entirely, the break is store-wide (steps 1-4). If some orders still land, the break only hits a segment: one device, one payment method, or one shipping zone (steps 4-6).
1

Suspect the most recently updated plugin

Why it happens

The average WooCommerce store runs 20+ plugins that auto-update on their own schedules. A payments, discount, or checkout-field plugin shipping a bad update is the single most common cause of a dead checkout.

Check

WordPress admin → Plugins → sort by recently updated. Anything touched in the last 7 days? Deactivate the most recent one and retest checkout. The Health Check & Troubleshooting plugin lets you disable plugins for your session only, without affecting live visitors.

Fix

If checkout recovers, pin that plugin to the previous version and report the bug to its developer. Turn off auto-updates for anything that touches checkout, payments, or shipping, and batch updates weekly with a test afterwards.

2

Open the browser console on the checkout page

Why it happens

WooCommerce checkout is driven by checkout.js. If a script optimizer (Autoptimize, WP Rocket file optimization, SiteGround Optimizer) defers or minifies it wrong, the Place Order button does nothing and no error is shown to the customer.

Check

Open /checkout/ → press F12 → Console tab → reload. Any red errors? Typical tells: 'wc_checkout_params is not defined', jQuery errors, or a 404 on a .js file.

Fix

Exclude checkout scripts (checkout.js, jquery, your gateway's JS) from minify/defer/delay in the optimizer plugin, then purge the cache. If the error comes from the theme, switch briefly to Storefront to confirm, then ticket the theme developer.

3

Exclude cart and checkout from caching

Why it happens

Page caches (WP Rocket, W3 Total Cache, LiteSpeed, Varnish at the host, Cloudflare page rules) sometimes cache /checkout/. Cached checkout pages serve stale security nonces, so submissions fail.

Check

Symptoms: 'Your session has expired', the order form silently refusing to submit, or one customer seeing another customer's cart. Fetch /checkout/ and look for an HIT in the x-cache / cf-cache-status response header.

Fix

Add /cart/, /checkout/, and /my-account/ to the cache exclusion list in every caching layer, including the CDN. Most cache plugins exclude them by default; custom Cloudflare 'cache everything' rules are the usual offender.

4

Test the payment gateway in sandbox mode

Why it happens

Expired API keys, a gateway account flag, or a webhook misconfiguration can decline every card while the checkout page itself looks perfectly healthy.

Check

Enable your gateway's test mode (Stripe: test keys + card 4242 4242 4242 4242, any future expiry, any CVC. PayPal: sandbox account). Does a test order complete? Then check WooCommerce → Status → Logs and open your gateway's most recent log file.

Fix

The gateway log states the real reason: invalid key, currency mismatch, 3D Secure failure, or a declined webhook. Fix the credential or setting it names, or quote that exact log line to the gateway's support.

5

Verify a shipping method exists for the address

Why it happens

If no shipping method matches the customer's address, WooCommerce blocks checkout with 'There are no shipping options available.' This appears after zone edits, plugin updates, or a carrier API (table rates, live rates) starting to error.

Check

WooCommerce → Settings → Shipping → check each zone has at least one enabled method. Then test checkout with one address per region you ship to, domestic plus your top international market.

Fix

Re-add the missing method, or if a live-rates plugin is erroring, check its log and temporarily enable a flat-rate fallback for the affected zone so orders keep flowing while you debug.

6

Check WooCommerce session and cart cookies

Why it happens

WooCommerce tracks the cart with cookies plus a session table. Mixed HTTP/HTTPS content, an overeager CDN stripping cookies, or SameSite misconfiguration makes carts empty out right at checkout.

Check

Settings → General: both WordPress Address and Site Address must be https and the same host (www vs non-www mismatches break cookies). Add a product, go to checkout: does the cart survive? Try incognito too.

Fix

Fix the URL mismatch or add a redirect so only one host serves the store. On Cloudflare, confirm the cart/checkout paths aren't behind 'cache everything' (which strips Set-Cookie). If sessions are corrupted, WooCommerce → Status → Tools → clear all sessions.

7

Update outdated template overrides

Why it happens

Themes commonly override WooCommerce templates (form-checkout.php and friends). After a WooCommerce core update changes those templates, the stale override renders a broken or half-missing checkout form.

Check

WooCommerce → Status → scroll to Templates. Does it list overrides marked 'out of date'?

Fix

Update the theme, or copy the updated template from woocommerce/templates into the theme override and re-apply the customization. To confirm the theme is the problem first, switch to Storefront and retest.

8

Enable logging and escalate with specifics

Why it happens

If 1-7 didn't find it, you're likely looking at a host-level issue (PHP version bump, memory limit, mod_security rules blocking the checkout POST) that only shows up in logs.

Check

Enable WP_DEBUG_LOG in wp-config.php, reproduce the failure, then collect wp-content/debug.log plus the fatal-errors log under WooCommerce → Status → Logs.

Fix

Send the exact log lines, the timestamp, and the URL to your host or gateway support. Specific reports with logs get fixed in hours; 'checkout is broken' tickets take days.

Fixed it? Check what else is broken.

Run the free website grader, it scores your store's security, SEO, privacy, and performance in one pass and flags issues before they cost you orders.

Free website grader

Why this keeps happening

You ran the diagnostic. You fixed today's problem. Next month a different plugin update will break a different part of checkout, and you'll be back here.

WooCommerce makes this worse than any other platform because you own the whole stack: WordPress core, PHP, the theme, 20+ plugins, the host's cache, and the CDN all update independently. Any pair of them can conflict, and none of them will email you when checkout stops taking money.

The only sustainable fix is scheduled checkout testing, automated runs of your real checkout flow on a schedule, with an alert the moment a step fails.

Catch the next checkout break before customers do

Tracefox replays your WooCommerce checkout on a schedule, across desktop, mobile, and tablet. The moment a step breaks, you get an email + Slack alert with a screenshot, before customers find out.

Test your WooCommerce checkout free

7-day free trial · First test running in 5 minutes · No credit card