80% off for waitlist membersJoin now and lock in Launch from $39.80 or Lifetime from $49.80 

← Back to Guides

WooCommerce Slow Checkout: Why It Happens and How to Fix It

WPBundle Team··10 min read
woocommerce slow checkoutwoocommerce checkout speedwoocommerce checkout performanceslow woocommerce site

WooCommerce slow checkout is one of the most damaging performance problems a store can have. Unlike product pages — which caching can make fast — the checkout page is inherently dynamic and cannot be cached. Every visitor who reaches checkout gets a freshly generated page, and every second of delay directly increases cart abandonment. This guide explains why WooCommerce checkout is slow, what you can fix, and where the hard limits are.

TL;DR

WooCommerce checkout is slow because PHP must calculate taxes, validate coupons, compute shipping rates, and run all active plugin hooks on every request — with no caching possible. Quick wins: move payment gateway scripts to checkout-only, enable object caching, and simplify shipping zones. The complete solution is a headless checkout that isolates all of this behind a clean API.

Why WooCommerce checkout is always slower than other pages

On a product page, PHP generates the HTML once and a caching plugin serves it to subsequent visitors as a static file. That's what makes cached product pages fast. Checkout cannot work this way — every checkout session is unique to the visitor, their cart contents, their location, and the current state of your promotions.

Every checkout page load triggers:

  • WooCommerce PHP bootstrap (loading all active plugins)
  • Session validation and cart retrieval
  • Tax rate calculation for the visitor's location
  • Shipping zone lookup and rate calculation
  • Coupon validation if a code has been applied
  • Payment gateway initialisation (loading gateway PHP code)
  • Any extension hooks from loyalty, subscriptions, booking, or other active plugins

1–3s

Typical WooCommerce checkout page TTFB on shared hosting

68%

Average e-commerce cart abandonment rate (Baymard Institute)

1%

Conversion loss per 100ms of added checkout latency

Checkout cannot be cached

Any plugin claiming to “cache your checkout page” should be treated with caution. Serving a cached checkout to the wrong user can expose another customer's details, cart, or payment information. WooCommerce explicitly prevents full-page caching of the checkout page — this is correct behaviour, not a bug.

Common causes of slow WooCommerce checkout

Payment gateway scripts loading everywhere

Stripe, PayPal, Square, and other payment gateways load JavaScript on every page of your site by default — not just at checkout. This JavaScript is large, loads from external servers, and must execute before your page becomes interactive. It increases INP scores and checkout page weight significantly.

Fix: Use Perfmatters or Asset CleanUp Pro to restrict payment gateway scripts to the checkout page only. This is the single most impactful WooCommerce checkout optimisation available without changing infrastructure.

Perfmatters Script Manager showing payment gateway scripts restricted to checkout page
Restricting Stripe and PayPal scripts to the checkout page only removes a major INP liability from every other page

Complex shipping rate calculations

WooCommerce calculates shipping rates on every page load during checkout, and every change to the destination address triggers a new AJAX calculation. The more shipping zones, rates, and condition rules you have configured, the slower these calculations become. Complex shipping configurations (e.g. destination-based rules with 50+ zones, weight table rates, conditional free shipping) can add 200–500ms to checkout response times.

Coupon validation queries

When a coupon code is applied, WooCommerce runs multiple database queries to validate it: checking expiry, usage limits, minimum order values, excluded categories, and more. On stores with many historical coupon codes or complex usage rules, these queries can be slow.

Plugin conflicts and hook overhead

Every WooCommerce plugin can add PHP hooks that run on the checkout page. Loyalty plugins, review request plugins, subscription management, product bundles, advanced product options — all of these may add processing time to checkout, even if they don't visually appear there.

Disabling cart fragments and restricting payment scripts to checkout halved our load time.

WordPress.orgWP.org support user· 2024· WooCommerce support forumView source →

Quick fixes to improve WooCommerce checkout speed

  • Restrict payment gateway scripts to checkout page only (Perfmatters or Asset CleanUp)
  • Enable Redis or Memcached object caching to reduce DB query time
  • Simplify shipping zones — consolidate rules and remove unused zones
  • Deactivate unused payment gateways (even inactive gateways can add PHP overhead)
  • Enable Google Address Autocomplete to reduce address entry friction
  • Use a performance-focused checkout plugin (e.g. WooCommerce Blocks checkout)
  • Test checkout on mobile — most issues are worse on mobile connections
  • Remove plugins that load JavaScript on checkout unnecessarily

What server-side optimisation can and cannot fix

Pros

  • Object caching reduces DB query time for shipping and tax calculations
  • Restricting gateway scripts to checkout-only meaningfully improves INP
  • Removing unused plugins reduces PHP bootstrap time on checkout
  • A faster hosting environment (LiteSpeed, NVMe SSD, PHP 8.2+) reduces raw processing time

Cons

  • Checkout TTFB will always be limited by PHP processing — no caching is possible
  • Every plugin that runs hooks on checkout adds unavoidable overhead
  • Complex shipping and tax logic cannot be simplified without changing business rules
  • External payment gateway scripts are outside your control — they load from Stripe/PayPal servers
Query Monitor showing database queries running on the WooCommerce checkout page
Query Monitor on a typical WooCommerce checkout — 40–80 DB queries is common before any optimisation

Added object caching with Redis. Checkout went from 2.1s to 0.9s TTFB.

WordPress.orgWP.org reviewer· 2025· WooCommerce support forumView source →

The architectural solution: headless checkout

Every fix in the previous section improves WooCommerce checkout speed at the margins. The fundamental problem — that PHP must process every checkout request synchronously without caching — is not something configuration can solve.

A headless WooCommerce architecture changes this by separating the storefront from the checkout logic entirely. The browsing experience (product pages, category pages, search) is statically generated and served from edge CDN — instantaneous for every visitor. The checkout is a clean React component that communicates with WooCommerce's REST API directly.

In this model, checkout performance is still dependent on the WooCommerce REST API response time. But the difference is significant:

  • No WordPress PHP bootstrap on checkout — the React app handles the UI
  • No theme, page builder, or plugin scripts loaded on checkout
  • The cart is managed in React state — no AJAX cart fragment requests
  • WooCommerce processes just the order creation, shipping, and payment logic — not the rendering
  • Payment scripts can be loaded lazily only when the checkout form is displayed

The checkout experience matters more than the score

A Lighthouse score for checkout is less meaningful than the perceived experience. A fast, responsive checkout form that processes quickly and shows clear progress is what reduces abandonment — even if the raw page load time is 1.5s instead of 0.5s.

For the full picture on the architectural case, read our guide to WooCommerce speed optimisation and what headless WooCommerce means in practice.

Ready to go headless?

Join the WPBundle waitlist and get beta access completely free.

Join the Waitlist