Skip to content
E Elitewphost
speed benchmarks

WooCommerce TTFB Test: Measure Checkout Latency Right (2026)

How to run a WooCommerce TTFB test that reflects real checkout latency, not a cached homepage. Tools, regions, payload, and the numbers that matter.

Mark Halloway
7 min read
On this page 13 sections

If you ran a WooCommerce TTFB test today on your store’s homepage, you probably got a number between 80ms and 300ms, felt vaguely fine, and went back to work. That number is almost useless. The homepage is cached. The pages that decide whether your store feels fast (cart, checkout, my-account, and the AJAX endpoints WooCommerce hits during a purchase) are uncacheable by definition, and they are usually two to ten times slower than the page you tested. A proper WooCommerce TTFB test measures the routes a buyer actually traverses, from regions buyers actually live in, with a realistic plugin and cart payload. This guide walks through how to do that, what numbers to expect, and what to do when your TTFB is bad.

For the broader hosting picture this feeds into, see our best managed WordPress hosting for WooCommerce shortlist and the head-to-head Kinsta vs WP Engine for WooCommerce test. We will publish a multi-host TTFB benchmark on identical seed sites separately; this article is the methodology and a sane DIY recipe you can run on your own store today.

TL;DR

  • Measure TTFB on /checkout/, /cart/, /my-account/, and ?wc-ajax=update_order_review, not the homepage.
  • Test from at least three regions your buyers actually live in. A 50ms US-East TTFB means nothing if 60% of your customers are in Sydney.
  • Use a real cart payload (1 to 3 products, logged-in session cookie) for cart and checkout. Empty-cart numbers are misleading.
  • Good (managed WordPress, modern stack): 150ms to 350ms for /checkout/ from a same-region test point.
  • Bad: 800ms+ consistently. Above 1.5 seconds you are losing measurable conversion.
  • Hosting is the bottleneck about half the time. The other half is plugins, a bad object cache, or a slow payment gateway sitting in front of your checkout.

Jump to: why homepage TTFB lies, what to measure, the recipe, target numbers, interpreting results, FAQ.

Why a homepage TTFB test misleads you

WooCommerce explicitly sets DONOTCACHEPAGE and bypasses full-page cache on cart, checkout, and my-account, and any page where the woocommerce_items_in_cart cookie is present. The WooCommerce documentation has spelled this out for years: caching plugins and edge caches must exclude those routes, otherwise you serve a logged-out user’s cart to a logged-in customer (WooCommerce: caching).

The implication is uncomfortable. When you load https://yourstore.com/, your host returns a static HTML file from Nginx, Varnish, or Cloudflare in 60ms to 150ms. When a buyer loads /checkout/, the host runs PHP, hits the database, evaluates WooCommerce session and cart logic, fires wc-ajax requests on every field blur, and returns a response that took the full PHP-to-DB round trip. Same server. Different universe.

A homepage TTFB number tells you how fast your CDN is. A checkout TTFB number tells you how fast your store is.

What to measure (the four routes that matter)

Run TTFB measurements against these endpoints. Treat any of them coming back over 800ms as a real problem.

  1. /checkout/ with one product in the cart and a logged-in session cookie. This is the route that gates revenue.
  2. /cart/ with two or three products. Cart fragment behavior on this page is the most common source of admin-AJAX storms.
  3. /my-account/ logged in. Slow account pages correlate with slow checkout because they hit the same uncached PHP path.
  4. /?wc-ajax=update_order_review as a POST with a realistic billing address payload. This fires every time a customer changes a checkout field. If it is slow, the form feels broken even if the page rendered fast.

A homepage and a product page are useful as a control. They isolate “is the host fast at serving cached HTML” from “is the host fast at the actual store paths.” If your homepage TTFB is 90ms and your /checkout/ TTFB is 1.4 seconds, you have a PHP or database bottleneck, not a CDN problem.

The recipe: a WooCommerce TTFB test you can run in 30 minutes

You can do this with curl, a free WebPageTest account, and (optionally) k6 for load. Nothing exotic.

Log in to your store as a test customer, open browser devtools, copy the wordpress_logged_in_* and woocommerce_session_* cookies. Save them to cookies.txt in Netscape format. Without these, you are testing the logged-out path, and the logged-out path is sometimes cacheable. You want the worst case.

Step 2. Add a product to the cart

Either via the UI in the same browser session, or curl -b cookies.txt -c cookies.txt "https://yourstore.com/?add-to-cart=<product_id>". Confirm /cart/ shows the product.

Step 3. Time the four routes from one region

Use curl with timing format:

curl -o /dev/null -s -w "DNS:%{time_namelookup} TTFB:%{time_starttransfer} Total:%{time_total}\n" \
  -b cookies.txt -c cookies.txt \
  "https://yourstore.com/checkout/"

Repeat 10 times. Throw out the first run (cold cache). Take the median of the remaining 9. Do the same for /cart/, /my-account/, and the wc-ajax POST.

For the AJAX call:

curl -o /dev/null -s -w "TTFB:%{time_starttransfer}\n" \
  -b cookies.txt -c cookies.txt \
  -X POST \
  -d "country=US&state=CA&postcode=94110&payment_method=stripe" \
  "https://yourstore.com/?wc-ajax=update_order_review"

Step 4. Repeat from at least two more regions

This is where DIY gets thin. A curl loop on your laptop only measures from one place. Use one of:

  • WebPageTest (webpagetest.org) with the scripted login + add-to-cart pre-step. Free tier covers a handful of runs from a generous list of agent locations.
  • k6 cloud (k6.io/cloud) with three or more load zones, even at 1 VU, just for the latency view.
  • curl on a small VPS in each target region. A $5/month DigitalOcean droplet in NYC, AMS and SYD lets you script the same nine-run median from three continents.

Three regions is the floor. Five is better. The hosts that win in one region routinely lose in another.

Step 5. Write down the numbers and date them

Put them in a spreadsheet. Include: route, region, median TTFB, P95, date, host plan, plugin count, whether object cache was confirmed hitting (use Query Monitor or your host’s stats page). Without this context the numbers age into noise within a quarter.

What good and bad numbers look like

These ranges come from disclosed vendor performance commitments and from the operational benchmarks we have run on five managed hosts during real WooCommerce migrations. We will replace the ranges below with our own multi-region medians from the seed-site rig as it comes online (see methodology).

Rough WooCommerce TTFB targets, same-region test, May 2026
Route Good (managed WP) Acceptable Investigate
Homepage (cached) Under 120 ms 120 to 250 ms Over 400 ms
Product page (cached) Under 200 ms 200 to 400 ms Over 600 ms
/cart/ 200 to 350 ms 350 to 600 ms Over 900 ms
/checkout/ 200 to 400 ms 400 to 700 ms Over 1000 ms
wc-ajax update_order_review 150 to 300 ms 300 to 600 ms Over 800 ms

The gap between homepage and /checkout/ is the most diagnostic single number. On a healthy managed-WordPress setup with persistent object cache, that gap is roughly 2x to 3x. On a misconfigured store (no object cache, slow plugin doing a wp_options autoload on every request, payment gateway calling an external API synchronously) the gap is 5x to 20x.

Typical TTFB by route on a healthy managed-WordPress store, same-region ms
Checkout 320 ms
The number that actually predicts conversion
Cart 280 ms
wc-ajax update_order_review 240 ms
Product page 160 ms
Homepage 95 ms
Source: Operational benchmarks from five WooCommerce migrations (Kinsta, WP Engine, Cloudways, Nexcess, Rocket.net), May 2026. Numbers are illustrative medians of nine runs per route; the multi-host seed-site rig will publish exact per-vendor results.

Interpreting your results

A few patterns recur often enough to be worth naming.

Homepage fast, checkout slow. PHP or database bottleneck. Confirm persistent object cache is active (Redis or Memcached) and that it is hitting (redis-cli info stats or your host’s panel). If the object cache is fine, look at plugins: deactivate suspects one by one and re-run the test. The usual offenders are page builders, “related products” plugins running unbounded SQL, and analytics plugins that write to the database on every page view.

Slow from one region, fast from another. Origin location problem. If your origin is in Frankfurt and your buyers are in Sydney, no amount of CDN tuning helps the uncacheable checkout path. Either pick a host with a multi-region origin option, or pick a region closer to where your revenue lives.

Cart and checkout slow, AJAX fast. Plugin overhead on page render. Cart and checkout templates often hook every “cart updated” filter; one bad filter callback can add 300ms per render.

Cart and checkout fast, AJAX slow. Payment gateway or shipping calculator latency. The update_order_review call recalculates shipping and tax on every field change. A slow shipping API (real-time UPS or DHL rate lookups, anyone) shows up here.

Everything slow, evenly. Host or plan is undersized. PHP worker exhaustion looks like this under any concurrency. Cheapest-tier managed plans with 2 PHP workers will queue requests when you have more than a handful of concurrent buyers. We dug into the math in the Cloudways vs Kinsta comparison.

When the answer is “change hosts”

If your TTFB is poor across all four routes from all regions, you have already swept plugins and confirmed object cache is alive, and your store is in the $50k to $500k revenue band, the answer is usually a hosting upgrade. Where to go depends on your traffic shape and your appetite for operations. The best managed WordPress hosting for WooCommerce shortlist ranks the eight hosts we benchmark against this exact set of routes and the same regional spread.

FAQ

Frequently asked questions

What is a good TTFB for WooCommerce checkout?
200 to 400 ms from a same-region test point, with one product in the cart and a logged-in session. Under 200 ms is excellent and usually requires Cloudflare Enterprise plus a persistent object cache. Over 1000 ms is a real problem and is costing you conversion.
Why is my checkout TTFB so much slower than my homepage?
WooCommerce excludes cart, checkout, and my-account from full-page caching by design, so those routes hit PHP and the database every time. A 2x to 3x gap is healthy. A 5x to 10x gap means object cache is missing, a plugin is slow, or your payment gateway is hanging during shipping calculation.
Can I test TTFB from the browser?
Yes, but only as a sanity check. DevTools shows TTFB in the network panel under the request timing. Use it to confirm a fix, not to benchmark. A scripted test from at least three regions gives you a number you can compare across days and across hosts.
Does Cloudflare make my WooCommerce TTFB faster?
It makes cached pages faster, often dramatically. It does almost nothing for the uncacheable checkout path unless you have Cloudflare Enterprise with APO and your host has configured the bypass rules so the edge does not serve a cached page to a logged-in cart user. Standard Cloudflare proxy without APO will not move your checkout TTFB.
How often should I run this test?
Monthly on a healthy store, plus after every major plugin update, theme update, or hosting plan change. Date every result. TTFB is a regression-detection metric: the absolute number matters less than the trend on your own store.
What tools should I use beyond curl?
WebPageTest for scripted login + add-to-cart from named agent locations, k6 for load-aware TTFB under concurrency, and Query Monitor inside WordPress to attribute slow PHP requests to specific plugins and queries. All three are free at the volume a single store needs.
Mark Halloway

Mark has run WooCommerce stores since 2013 and currently maintains a multi-region performance lab where he benchmarks managed WordPress hosts on identical seed sites. He writes for store owners who'd rather see a TTFB number than another marketing claim.