WooCommerce checkout not working: how to find the cause
Updated
A broken checkout costs sales quietly: most shoppers don’t write to tell you, they just leave. Work through these steps in order. Each one either finds the cause or rules a whole group out.
1. See it for yourself
Open your shop in a private browser window, so you’re not logged in and nothing is cached in your browser. Add a product to the cart, go to checkout and fill in the form. Note exactly where it stops: the cart, the checkout page loading, the payment options, or after you press Place order.
Then ask whether it fails for everyone or only some shoppers: one country, one shipping method, one payment method, or only on phones. That narrows the cause more than anything else.
2. Look for an error in the browser
On the checkout page, open the browser’s developer tools (F12 on Windows, Option + Command + I on a Mac) and choose the Console tab, then reload. A red error that mentions /wp-content/plugins/some-plugin/ points straight at that plugin.
If the page looks fine but pressing Place order does nothing, open the Network tab and press it again. Click the request that appears (?wc-ajax=checkout on the classic checkout, /wp-json/wc/store/v1/checkout on the block checkout). Its response usually contains the real error message.
3. Read WooCommerce’s logs
In WordPress, go to WooCommerce → Status → Logs. Look for a log called fatal-errors and for your payment plugin’s log around the time it failed. Many payment plugins have a debug log setting: switch it on while you investigate, then off again. Tools → Site Health also flags basic problems such as an outdated PHP version or failing background tasks.
4. Rule out caching
The cart, checkout and account pages must never be cached, because they’re different for every shopper. Caching plugins normally leave them out automatically, but hosting caches and CDN rules (for example a Cloudflare “Cache Everything” rule) can still catch them. Clear every cache (plugin, host and CDN), then test again. If that fixes it, add the cart, checkout and account pages to the exclusions so it doesn’t come back.
Script optimisation settings (“delay JavaScript”, “combine” or “minify”) are another common cause: they can stop payment forms loading. Exclude the checkout page from them.
5. Find a plugin or theme conflict without breaking your live store
Install the free Health Check & Troubleshooting plugin from WordPress.org. Its troubleshooting mode switches off plugins and changes to a default theme only for you; shoppers still see the normal site. Turn on WooCommerce and your payment plugin, test checkout, then turn the other plugins back on one at a time until it breaks. The last one you turned on is the conflict. A staging copy of your site works too, if your host offers one.
6. Check the usual suspects
- Shipping. “No shipping options were found” stops checkout. Check your shipping zones cover the address you tested.
- Payment settings. Live keys in live mode, test keys in test mode; an expired or revoked key hides or breaks the payment method.
- HTTPS. The checkout must load over https with a valid certificate; card forms refuse to load otherwise.
- Security plugins and firewalls. An over-strict rule can block the checkout request itself (a 403 error in the Network tab).
- Required fields. A field added by another plugin can be required but hidden, so the form can never be completed.
Know next time, before your customers do
Most checkout failures start after something on the store changes: an update, a setting, a plugin switched on or off. The sooner you know, the fewer sales you lose and the easier it is to find the change.
Cart Lookout places a real test order on your store every 2 hours and after every update, then deletes it. Your customers don’t see it and no emails go out. If checkout fails twice in a row, you get an email with the step that broke, a screenshot and the change made just before it. From $15/month. See how it works.
Still stuck? Email hello@cartlookout.com. More guides