Skip to content
WooRescueHQ

WooCommerce / Performance

WooCommerce performance problems

WooCommerce stores slow down in ways a brochure site never does: carts, checkouts and account pages cannot be page-cached, orders grow the database every day, and background jobs compete with customers for the same PHP workers.

Short answer

Measure server response time for the slow requests first, not page-speed scores. Then find where that time goes: database queries, PHP execution, external HTTP calls or waiting for a free PHP worker. Cart, checkout and account pages cannot be page-cached, so their speed depends on PHP, the database, the object cache and background jobs.

Specific problems

Where WooCommerce time goes

Checkout

Slow checkout

Shipping, tax or ERP calls inside the checkout request; heavy hooks on order creation.

/woocommerce/performance/slow-checkout/
Database

Slow queries

Large meta tables, unindexed lookups, oversized autoloaded options.

Jobs

Action Scheduler backlogs

Thousands of pending or failed actions: webhooks, emails, syncs.

/woocommerce/performance/action-scheduler/
Cron

WP-Cron problems

Tasks that only run when someone visits, or all at once under traffic.

PHP-FPM

Saturated PHP workers

502/504 errors when slow requests occupy every worker.

Cache

Object cache missing or ineffective

No Redis or Memcached, or a cache flushed too often to help.

Measure before you optimise

Page-speed tools measure the front end of an anonymous visit to a cached page. WooCommerce slowness usually lives elsewhere: in uncached requests (cart, checkout, account, admin), in queries that grow with the order count, and in background work. Start with the server response time (TTFB) of the specific slow requests, then break it down.

Signal Likely bottleneck
Slow only on cart, checkout and account PHP and database work per request, external calls
Slow admin orders screen Order queries, counts, extensions adding columns
502/504 under load PHP-FPM workers exhausted by slow requests
Emails, webhooks or syncs running late Action Scheduler backlog, WP-Cron not running
Everything slow after growth Database size, autoloaded options, missing object cache

What usually helps — and what doesn't

Moving external calls out of the checkout request, running heavy work through Action Scheduler, adding a persistent object cache, cleaning expired sessions and oversized options, and sizing PHP-FPM for real traffic usually make a measurable difference. Adding a second page-cache plugin, "optimising" the database with tools that delete data you don't understand, or upgrading hosting without measuring usually doesn't.

Frequently asked questions

Why is WooCommerce checkout slow?

Checkout cannot be page-cached, so every request runs PHP and database queries. The usual culprits are synchronous calls to shipping, tax or ERP services, heavy custom hooks on order creation, and a missing object cache.

What is Action Scheduler?

The background job queue WooCommerce uses for webhooks, emails, subscription renewals and many extensions. Its queue is visible under Tools → Scheduled Actions. A growing number of pending or failed actions is an early warning sign.

Should I disable WP-Cron?

On busy stores, replacing traffic-triggered WP-Cron with a real server cron job that calls it every minute is usually more reliable. Disabling it without a replacement stops scheduled work entirely.

$ describe the problem

Have a WooCommerce problem?Request a diagnosis.

Tell us what is failing, what changed recently and the business impact. We review every request and recommend the appropriate next step.

Request a diagnosis See services and prices

Never send passwords, API keys or card data through the form.

Diagnosis from€299

Request a diagnosis