How to Use This Checklist

This checklist is structured in order of impact — start with hosting and infrastructure, which affects every other layer, before moving into application-level concerns. Each section includes what to check and what good looks like.

For agencies, this makes a useful structure for a client site onboarding audit. For store owners, it’s a diagnostic framework when something feels wrong but you’re not sure where to start.

Section 1: Hosting & Infrastructure

PHP Version

  • Check: Site Health > Info > Server in WordPress admin, or run phpinfo()
  • Good: PHP 8.3 or higher
  • Problem: PHP 7.4 or below — significant performance and security implications. Some hosts still default new accounts to older PHP versions.

PHP Memory Limit

  • Check: Site Health > Info > Server > PHP memory limit
  • Good: 256MB minimum; 512MB recommended for stores with complex pricing rules or many plugins
  • Problem: 128MB or lower — expect WooCommerce memory exhaustion errors under load

PHP Workers / Max Execution Time

  • Check: Ask your host or check phpinfo()
  • Good: Sufficient workers for your expected concurrent user count; execution time of at least 60 seconds for WooCommerce background processing
  • Problem: Default shared hosting values (typically 2-4 workers, 30s timeout) will fail under any meaningful concurrent load

Web Server

  • Check: Response headers (Server: header) or ask your host
  • Good: LiteSpeed Enterprise or Nginx with FastCGI caching
  • Problem: Apache without caching configured — significantly slower PHP processing

Object Caching

  • Check: Site Health > Info > Drop-ins — look for object-cache.php; or install Query Monitor and check database query counts
  • Good: Redis or Memcached configured with a drop-in, query count per page below 50
  • Problem: No object caching — database query counts of 100-300+ per page are common and severely limit scalability

Storage Type

  • Check: Ask your host
  • Good: NVMe SSD
  • Problem: SATA SSD or HDD — measurably slower database read/write times

CDN Configuration

  • Check: Inspect response headers for CF-Cache-Status (Cloudflare) or CDN-specific headers
  • Good: CDN active, correctly excluding cart/checkout/account pages, serving product images from edge
  • Problem: No CDN, or CDN caching checkout pages (causes session/cart errors)---

Section 2: WordPress Configuration

WordPress Version

  • Check: Dashboard footer or Site Health
  • Good: Latest stable release
  • Problem: Any version more than one minor release behind — security risk

Active Theme

  • Check: Appearance > Themes
  • Good: Lightweight theme (Astra, GeneratePress, Kadence, Blocksy, or block theme). Actively maintained, tested with current WordPress
  • Problem: Bloated theme with large JavaScript/CSS footprint; abandoned theme with no recent updates

Site Health Score

  • Check: Tools > Site Health
  • Good: No critical issues; limited improvements flagged
  • Problem: Any critical issues flagged — these represent real risk, not suggestions

Debug Mode

  • Check: wp-config.phpWP_DEBUG and WP_DEBUG_LOG values
  • Good: Both set to false in production
  • Problem: Debug mode enabled in production — leaks file paths and configuration details to visitors; adds overhead to every request

Post Revisions

  • Check: wp-config.php for WP_POST_REVISIONS
  • Good: Set to 3-5: define('WP_POST_REVISIONS', 5);
  • Problem: Unset (defaults to unlimited) — the wp_posts table grows very large on active stores, slowing queries---

Section 3: WooCommerce Configuration

WooCommerce Version

  • Check: WooCommerce > Status
  • Good: Latest stable release
  • Problem: More than one major version behind — likely missing performance improvements and security patches

WooCommerce Status Report

  • Check: WooCommerce > Status — review all warnings
  • Good: No warnings displayed
  • Problem: Any warnings flagged — these are WooCommerce’s own diagnostics and should be resolved

Cart Fragments

  • Check: Network tab in browser DevTools — look for wc-ajax=get_refreshed_fragments calls
  • Good: Only firing on shop/cart pages where needed
  • Problem: Firing on every page load including the homepage — unnecessary AJAX request adding 200-500ms per page. Disable via LiteSpeed Cache, WP Rocket, or a dedicated plugin on non-shop pages

Stock Management

  • Check: WooCommerce > Settings > Products > Inventory
  • Good: Hold stock time configured (30-60 minutes) to release unpurchased cart reservations; low stock and out of stock notifications enabled
  • Problem: No hold stock timeout — abandoned carts permanently reserve stock

WooCommerce Session Handler

  • Check: WooCommerce > Status > WooCommerce session handler
  • Good: Custom Redis-backed session handler if available on your stack
  • Problem: Default database session handler — generates a database write on every page load for every visitor

Order Database Table

  • Check: Run a query via phpMyAdmin or WP-CLI: SELECT COUNT(*) FROM wp_posts WHERE post_type = 'shop_order'
  • Good: WooCommerce HPOS (High-Performance Order Storage) enabled for stores with 1,000+ orders
  • Problem: Stores with 10,000+ orders still using legacy post-based order storage — significant query performance impact---

Section 4: Plugin Audit

Plugin Count

  • Check: Plugins > Installed Plugins — count active plugins
  • Good: Below 20 active plugins; each serving a clear purpose
  • Problem: 30+ plugins, especially if many are “just in case” rather than actively used

Performance Impact by Plugin

  • Check: Install Query Monitor; review database queries and load time per plugin
  • Good: Each plugin adds fewer than 5 database queries; no plugin adds more than 50ms to page load
  • Problem: Single plugins generating 20+ queries or 100ms+ of overhead should be investigated

Redundant or Conflicting Plugins

Common redundancies to look for:

  • Multiple SEO plugins active simultaneously
  • Multiple caching plugins (causes conflicts)
  • Both Contact Form 7 and Gravity Forms active when only one is used
  • Old migration or import plugins still active post-migration

Abandoned Plugins

  • Check: Plugin listing — last updated date
  • Good: All plugins updated within the last 12 months
  • Problem: Plugins with no updates in 2+ years are security risks and may have known unpatched vulnerabilities---

Section 5: Database

HPOS Status (WooCommerce 8.2+)

  • Check: WooCommerce → Settings → Advanced → Features
  • Good: High-Performance Order Storage enabled
  • Problem: Legacy order storage on stores with 50,000+ orders. See our HPOS migration guide.

Database Engine

  • Check: phpMyAdmin > wp_posts table > Structure — check Storage Engine column
  • Good: InnoDB on all tables
  • Problem: MyISAM tables — InnoDB has much better concurrency handling, critical for WooCommerce

Orphaned Data

Check for and clean up:

  • Post revisions (post_type = 'revision' in wp_posts)
  • Expired transients (option_name LIKE '_transient_timeout_%' where value < current time)
  • Orphaned postmeta (meta entries with no corresponding post)
  • Orphaned order items (from incomplete orders) Tools: WP-Optimize or WP-CLI wp transient delete --all

Table Size

  • Check: phpMyAdmin > Database > check table sizes
  • Good: wp_options below 5MB; wp_posts below 50MB for most stores
  • Problem: wp_options over 20MB — usually caused by plugin autoloaded data or accumulated transients---

Section 6: Checkout & Payments

SSL Configuration

  • Check: https:// in browser; padlock present; no mixed content warnings in console
  • Good: Valid SSL, no mixed content errors, HSTS header present
  • Problem: Any mixed content warnings — some browsers block these and break checkout

Payment Gateway Status

  • Check: WooCommerce > Settings > Payments; confirm each active gateway is in test mode off, credentials valid
  • Good: One or two well-supported gateways (Stripe recommended for UK stores)
  • Problem: Multiple untested gateways active; legacy or unsupported gateway integrations

Checkout Page Speed

  • Check: Run WebPageTest against your checkout page URL (not just homepage)
  • Good: LCP below 2.5s on a simulated 4G mobile connection
  • Problem: LCP above 4s — most customers on mobile will not wait this long

Checkout Completion Rate

  • Check: WooCommerce Analytics > Orders funnel, or GA4 funnel exploration
  • Good: Above 60% completion from cart to order confirmation
  • Problem: Below 40% — indicates friction or errors in the checkout process worth diagnosing specifically---

After the Audit

Prioritise findings by impact: infrastructure issues affect every page and every visitor, so resolve those first. Application-level issues (plugins, configuration) typically have targeted impacts. Database issues tend to become more impactful as the store grows.

Document what you find and fix, including the before/after metrics. For stores with meaningful revenue, even a 10% improvement in checkout completion rate or a 1-second reduction in page load time has a measurable impact on revenue.

Frequently Asked Questions

What should a WooCommerce performance audit cover?

A comprehensive WooCommerce performance audit covers five areas in order of impact: hosting and infrastructure (PHP workers, TTFB, Redis caching, NVMe storage — the foundation), WordPress configuration (PHP version, OPcache, memory limits, cron configuration), WooCommerce configuration (cart fragments, product image regeneration, order cleanup, stock management settings), plugin audit (query count per plugin, redundant functionality, synchronous external API calls), and database health (table fragmentation, wp_options autoload payload, missing indexes, slow query patterns).

How do I check if my WooCommerce hosting is sufficient?

Key hosting checks: measure TTFB using WebPageTest from a UK test location — under 200ms for cached pages and under 500ms for dynamic pages (cart, checkout) indicates adequate server response. Check PHP worker utilisation in your hosting control panel — if workers are regularly at 80%+ under normal traffic, you risk saturation during spikes. Confirm Redis is active by checking LSCWP or your hosting panel. Verify PHP 8.3 or higher is running. Confirm NVMe storage (ask your host if unclear). A slow TTFB (above 500ms) is the clearest signal that hosting infrastructure is the bottleneck.

What is the WooCommerce cart fragments issue and how do I fix it?

WooCommerce cart fragments is a feature that updates cart count and total on every page load via an AJAX request, even when the cart is empty. This means every page load (including fully cached pages) triggers an additional server request, preventing full page caching benefits. The fix is to disable cart fragments for empty carts, which is a configuration option in LSCWP and similar caching plugins. Alternatively, use the Disable Cart Fragments plugin or configure your caching plugin to serve the cart count from a CDN edge variable rather than an origin AJAX call.

How do I audit WooCommerce plugins for performance?

Use Query Monitor to measure database query count and execution time per plugin. Deactivate plugins one at a time on staging (not production) while monitoring query count and page generation time. Look specifically for: plugins making synchronous HTTP requests to external APIs on every page load (these add 200-800ms per call), plugins generating more than 10-15 additional database queries per page, duplicate functionality (two SEO plugins, two caching layers, two security scanners), and plugins that have not been updated in over 12 months. The goal is minimum necessary plugin footprint with maximum functionality.

How do I test WooCommerce checkout under load?

Use k6, Loader.io, or Apache JMeter to simulate concurrent checkout sessions against a staging environment. Script the full checkout flow: browse to a product page, add to cart, proceed to checkout, enter details, submit. Run at 150-200% of expected peak concurrent users. Monitor PHP worker utilisation, database connection count, response times, and error rates. Checkout is inherently dynamic — it cannot be cached — so its performance under load directly reflects your server infrastructure capacity. Any worker saturation or response time degradation found in testing will be worse in production.

· Black Friday Preparation · WooCommerce Hosting