Slow WooCommerce Checkout: Find the Real Cause with Query Monitor

Generic speed tips won’t fix a slow checkout. Profile checkout with Query Monitor, find whether it’s a query, a plugin, a payment gateway call, or cart fragments, then fix that…

Query Monitor checkout diagnosis workflow infographic showing profile checkout, sort queries by time, check hooks and plugins, and test one plugin at a time

Is your store paying for requests it doesn’t need?

A free audit checks this exact request, plus LCP, INP, and CLS, on your live store.

Slow WooCommerce checkout is fixed by finding the cause first. Ten generic speed tips will not fix a slow checkout. You need the cause first.

In most stores, that cause is one of four things: a slow database query, a plugin hook running on checkout, a slow payment gateway call, or cart fragments.

Query Monitor is a free WordPress plugin. It shows you, right on the page, which queries ran, which hooks ran, and which plugins were involved. On staging, it turns a vague complaint — “checkout is slow” — into a specific problem you can fix.

Do this work on staging or a test copy first. Query Monitor is a debugging tool. Do not leave it active on a live store longer than you need it, and do not share its output publicly. It can expose queries and paths.

For a front-end timing check alongside this profiling, see the best WordPress speed test tools. They measure what shoppers see, while Query Monitor shows why it happens.

Why Is My WooCommerce Checkout Slow?

Separate two problems first. They need different fixes:

  • Checkout page loads slowly: the page itself takes a long time to appear. Look for slow queries, heavy plugins on checkout, and uncached dynamic content.
  • Checkout is slow after clicking Place Order: the page loads, but placing the order hangs. Look for payment gateway calls, order creation, email sending, and stock / webhook processing.

Fix the wrong one, and checkout will still feel slow. Query Monitor helps directly with the first problem. For the second, it helps by ruling out page-load causes.

How to Profile Checkout with Query Monitor

1. Install Query Monitor on staging

Install Query Monitor from the WordPress plugin directory on your staging site. Activate it, then log in as an administrator. You will see a new item in the admin bar with timings for the current page.

2. Go through checkout as a shopper would

Add a product to cart. Go to checkout, fill in test details, and load the checkout page. Do not use a payment method that charges a real card on staging. Use test mode, or a cash-on-delivery / test payment option if your gateway supports it.

Query Monitor checkout diagnosis workflow infographic showing profile checkout, sort queries by time, check hooks and plugins, and test one plugin at a time
Figure 1: Profile checkout in this order — queries first, then hooks, then one-plugin-at-a-time testing on staging.

3. Open Queries and sort by time

In Query Monitor, open Queries. Sort by time, slowest first. Look for:

  • One query, or a small number of queries, taking a large share of total time
  • The same query repeated many times, which often points to a plugin or theme loop
  • Queries on WooCommerce tables, postmeta, options, or sessions, and which component called them

Query Monitor shows the caller for each query. That matters. A slow query is not just “the database is slow.” It is a specific plugin, theme function, or WooCommerce process asking for something expensive.

Four causes of slow WooCommerce checkout infographic: slow database query, plugin hook, payment gateway call, and cart fragments
Figure 2: The four usual causes of slow checkout — find which one applies to your store before fixing anything else.

4. Check Hooks and the plugin involved

Open Hooks in Query Monitor and look for hooks running on checkout, especially hooks added by plugins that do not need to run there. Common examples to investigate, not to blame automatically, include:

  • Plugins that load their scripts, styles, or data on every page, including checkout
  • Plugins that check cart, pricing, or discounts on every checkout load
  • Custom code or snippets that run a heavy query on checkout

Test by disabling one suspect plugin at a time — on staging only — then re-profiling checkout.

5. Check cart fragments and AJAX calls

Open your browser developer tools. Go to the Network tab. Watch checkout and cart page requests. Look for wc-ajax=get_refreshed_fragments and other AJAX calls. Cart fragments keep the mini-cart updated, but they can add an uncached request to pages where the mini-cart is not shown.

If fragments are a large part of checkout or cart load, do not just disable them everywhere. That can break the mini-cart. The safe rule, covered in detail in the cart fragments post in this series, is to disable fragments only on pages where the mini-cart is not needed, and to test add to cart and mini-cart updates after any change. For the caching side of that decision, compare options in the best WordPress cache plugins review.

Which Plugins Hit Checkout Hardest?

There is no honest universal list of “slow plugins” for every store. The cost depends on your theme, your other plugins, your product types, and your settings. That is exactly why profiling matters.

Instead of a list, use this method on staging:

  1. Profile checkout with all plugins active and note the total time and slowest queries.
  2. Disable one suspect plugin, re-profile, and compare.
  3. Repeat for the next suspect, one at a time. Disabling five plugins at once tells you nothing about which one mattered.
  4. For the plugin that matters, check its settings first: does it need to load on checkout, does it need to query on every load, is there a newer version that fixes the cost?

Pay special attention to plugins that add checkout fields, payment methods, discounts, upsells, or shipping calculations. Those legitimately do work at checkout. They should not do that work on every other page, and they should not repeat expensive queries.

When the Cause Is the Payment Gateway

If the checkout page itself is fast in Query Monitor, but placing an order hangs, the problem may be after the click: the payment gateway API call, fraud checks, webhook handling, or order email sending.

Query Monitor will not show an external gateway API call as a database query. For that, check your gateway logs, your host’s slow request logs, and the time between clicking Place Order and the order confirmation. Test the same checkout with a different payment method on staging. If one method is slow and another is fast, the gateway or its plugin configuration is the lead to investigate, not your theme.

Do not disable a payment method on a live store to test this. Test on staging, with test credentials, and keep the live checkout unchanged until you have a fix.

Fixes, in the Order to Try Them

  1. Fix the single slowest query or hook you found, not ten things at once.
  2. Remove or replace a plugin that is expensive on checkout and not essential there.
  3. Stop unnecessary plugins from loading scripts and queries on checkout.
  4. Fix cart fragment usage only where the mini-cart is not needed, and test mini-cart after.
  5. Investigate gateway slowness separately if the page is fast but order placement is slow.
  6. Re-profile checkout after each fix. If the total time did not improve, that fix was not the cause.

Next in this series: WooCommerce Cart Fragments – what wc-ajax=get_refreshed_fragments does and when to disable it safely.

Related in this series: WooCommerce Speed Optimization guide.

Common Questions

Frequently Asked Questions

Straight answers about profiling checkout, finding the slow query or plugin, and separating page-load slowness from gateway slowness.

Use it on staging first. It is a debugging plugin and its output can expose internal details. If you must use it briefly on live, restrict it to administrators, remove it when finished, and never publish its output.

That is often different from a slow checkout page. It can be a payment gateway call, order creation, email sending, or webhook processing. Profile the page first to rule out page-load causes, then test payment methods on staging.

Only where the mini-cart is not needed, and only after testing. Disabling fragments everywhere can break mini-cart updates. Test add to cart, cart updates, and checkout after any change.

Open Queries sorted by time, and look for one slow query, the same query repeated many times, and queries on WooCommerce tables, postmeta, options, or sessions, with the component that called them. Then check Hooks for plugins running on checkout.

Disable one suspect plugin at a time on staging, re-profile checkout, and compare. Disabling five plugins at once tells you nothing about which one mattered.

If the checkout page itself is fast in Query Monitor but placing an order hangs, check gateway logs, slow request logs, and the time between clicking Place Order and the order confirmation, and test a different payment method on staging with test credentials. Do not disable a payment method on a live store to test this.

Keep reading

  • Best hosting for WooCommerce, what to check before you choose, explained by ProSpeedGuy

    Best Hosting for WooCommerce: What to Check Before You Choose

    What does WooCommerce hosting need to handle? A store is not a…
    October 27, 2026
  • Which WooCommerce plugins slow down your store, and how to test them, explained by ProSpeedGuy

    Which WooCommerce Plugins Slow Down Your Store? How to Test, Not Guess

    Why do plugins slow a WooCommerce store? To answer which WooCommerce plugins…
    October 27, 2026
  • Speed up WooCommerce product pages without losing sales, explained by ProSpeedGuy

    WooCommerce Product and Category Page Speed: Fast Pages That Still Sell

    Why are product and category pages slow? A slow WooCommerce product page…
    October 27, 2026

Leave a Reply

Your email address will not be published. Required fields are marked *