Description
Checkout Profiler measures how long placing an order takes in your shop and writes every measurement to the WooCommerce log. No dashboards, no external service — just numbers you can act on, next to the logs you already have.
View the results under WooCommerce > Status > Logs, source checkout-profiler. Each entry names the order, the duration in seconds and the payment gateway (the gateway usually dominates checkout time):
Classic checkout for order 1234 took 1.311 seconds (payment via stripe).
Both checkouts are supported:
- Block checkout (the default since WooCommerce 8.3): detected automatically, measured in the shopper’s browser from the moment they hit “Place Order” until the checkout succeeds — the time your customer actually experiences.
- Classic (shortcode) checkout: measured in PHP between two hooks. The defaults measure the server-side order processing, including the payment gateway round trip. Works out of the box, no configuration needed.
Configurable for the classic checkout:
- Choose start and end hooks from sensible presets — for example end at
woocommerce_thankyouto include the redirect to the order confirmation page in the measurement. - Or enter any custom hook name for start and end.
What this plugin is not: a full APM suite like New Relic. It answers one question — “how slow is my checkout, really?” — with near-zero overhead: one session value, one log line per order, and a small script that only loads on the block checkout page.
Screenshots



Installation
- Upload the plugin files to the
/wp-content/plugins/checkout-profiler-for-woocommercedirectory, or install the plugin through the WordPress plugins screen directly. - Activate the plugin through the ‘Plugins’ menu in WordPress.
- Optional: adjust the classic-checkout hooks under WooCommerce > Settings > Profiler.
- Do a test purchase and go to WooCommerce > Status > Logs (source:
checkout-profiler) to see the results.
FAQ
-
Does this slow down my website?
-
No measurable impact. The classic checkout timer stores one timestamp in the WooCommerce session and writes one log line per order. The block checkout script (about 1 KB) loads only on the checkout page, and only when the checkout block is actually in use.
-
Is the block checkout supported?
-
Yes, since 1.1.0 (requires WooCommerce 9.8 or newer, where the official checkout events are available). It is detected automatically and measured in the browser — the settings page only applies to the classic checkout.
-
What exactly is measured?
-
Classic checkout: the time between the configured start and end hooks, by default from checkout form submission until the order is processed (server-side, including the payment gateway). Block checkout: the time from clicking “Place Order” until the checkout succeeds, as experienced in the shopper’s browser.
-
Where do I see the results?
-
WooCommerce > Status > Logs, pick the file/source
checkout-profiler. Note: your WooCommerce log threshold must includeinfomessages (it does by default). -
Will this work with my theme/pagebuilder/custom checkout?
-
The block and shortcode checkouts are covered out of the box. For custom checkout flows, point the start and end hooks at any two hooks your flow fires — as long as both fire, the measurement works.
-
Is this like New Relic?
-
Of course not. But it pursues a similar goal for a very specific spot: APM tools instrument your whole stack; this plugin tells you plainly how long your checkout takes, with results stored in the WooCommerce logs you already use.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Checkout Profiler for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Checkout Profiler for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.1.0
- New: block checkout support — measured in the shopper’s browser via the WooCommerce checkout events API and logged with order number and payment gateway. (The 1.0.0 block timer never loaded; this is a rebuild.)
- New: the log line now includes the payment gateway, since the gateway usually dominates checkout time.
- New: durations are rounded to milliseconds for readable logs.
- Fix: the plugin now measures out of the box — previously nothing was logged until the settings were saved once.
- Fix: the advertised default end hook (
woocommerce_checkout_order_processed) is now actually the default. - Fix: the Settings link on the Plugins screen points to the Profiler settings tab instead of the admin dashboard.
- Fix: empty placeholder scripts and styles are no longer loaded on every front-end page; admin assets load only on the Profiler settings tab.
- Fix: block/classic explanation on the settings screen was never displayed due to an invalid field type.
- Fix: a custom hook selection with an empty hook name falls back to the default instead of silently breaking the timer.
- Compatibility declared with High-Performance Order Storage (HPOS) and the cart/checkout blocks.
- Uninstalling the plugin now removes its settings.
- Text domain changed to
checkout-profiler-for-woocommerceso translations can be delivered via wordpress.org language packs. - Requires WordPress 6.5+, PHP 7.4+ and WooCommerce 9.8+ (declared via Requires Plugins / WC headers).
1.0.0
- Initial release.
