Benchmark · last run reviewed September 2026 · re-run quarterly

WooCommerce performance benchmark: 236 ms cart, 321 ms checkout, 7,861 orders in under two minutes.

This is the test behind every performance number Urumi quotes. It is a full shopping journey, not a homepage ping; it runs with the edge cache disabled so the origin takes every request; and the script is public so anyone can run it against any host and compare like for like.

Results

MeasureResultCondition
Add-to-cart response, median236 msedge cache disabled, origin serves every request
Checkout response, median321 msedge cache disabled, origin serves every request
Orders completed7,861in under two minutes at peak arrival rate
Production: grüum, peak weeks1.2M requests/day · 16× baseline · 0 incidentslive store, not synthetic
Production: grüum page loads4.0 s → 0.3 s cached · 5.7 s → 0.4 s uncachedbefore/after migration to Urumi
Production: Do Amore5.9 s → 0.9 s pages · 8.1 s → 0.67 s order editscustom store: ring builder, diamond search, partial payments

Only medians are published from the synthetic run. Percentiles (p95, p99) will be published with the next scheduled run alongside the raw k6 summary; we would rather publish less than publish numbers we cannot hand you the file for.

Method

Environment

A standard Urumi store on production infrastructure, the same configuration a customer gets: horizontally auto-scaled PHP workers across multi-zone Google Cloud, MySQL 8.4, and the platform's WooCommerce-aware cache layer in front of the origin (bypassed for this run). No test-only tuning. The store carried a real catalogue and a standard payment gateway in test mode.

Limits, stated plainly

Run it yourself

The script is public: scripts/k6-woocommerce/shopping-journey.js. Point it at a staging copy of your store with the edge cache disabled and keep the thresholds:

k6 run -e BASE_URL=https://staging.example.com -e PRODUCT_ID=123 -e PRODUCT_URL=/product/test-item/ shopping-journey.js

How to read the output, and why the arrival-rate executor matters, is in How to load test WooCommerce with k6. If you re-run it and get different numbers, tell us: [email protected].

Frequently asked questions

What do the 236 ms and 321 ms figures measure?

Median server response for the add-to-cart and checkout requests of a full shopping journey, with the edge cache disabled so the origin serves every request. Medians are published; percentiles will follow with the next scheduled run.

Is this benchmark independent?

No. It is our own run on our own platform, which is why the method and script are published in full and why Urumi is entering the Review Signal WooCommerce and Enterprise tiers for 2027. Treat the numbers as a claim you can check, not a verdict.

Can I run the same test against my current host?

Yes. The k6 script is public. Run it against a staging copy of your store with the edge cache disabled, keep the thresholds, and compare medians like for like.

How does the benchmark relate to the production numbers?

The load test is synthetic and controlled. The production figures — 1.2M requests a day and 16× baseline load with zero incidents through peak weeks for grüum — come from a live store and are the stronger evidence; the benchmark explains why the platform behaves that way.

Built by the people who built WooCommerce core.

We built WooCommerce core at Automattic — the parts that matter in production: performance, payments, reliability. Naman led Payments and WooCommerce releases to 4.5M merchants; Vedanshu led HPOS, Taxes, and Shipping.

See the WooCommerce platform  ·  grüum case study  ·  Talk to sales