Loading tutorials…
Loading tutorials…
Most WooCommerce stores load at PageSpeed 25-45 on mobile. Each second of load time costs roughly 7% of conversions. This is the systematic checklist a Woo speed specialist runs — plugin audit, caching, HPOS migration, asset optimization, and database cleanup.
Who this is forWooCommerce owners with PageSpeed under 60 on mobile, page load over 4 seconds, or bounce rate above 60%. Speed work is highest-ROI on stores doing $5K+/mo because the same percentage CR lift compounds across more revenue.
What you'll need
Step 1
Test PageSpeed Insights (mobile + desktop) on home, top category, top product, cart, and checkout. Record all 10 scores BEFORE making any changes.
Go to pagespeed.web.dev. Test 5 URLs × 2 devices = 10 baseline scores: home, top category, top product, /cart/, /checkout/.
Note: PageSpeed mobile score, LCP (Largest Contentful Paint), CLS (Cumulative Layout Shift), TTFB (Time to First Byte), and Total Blocking Time.
Industry benchmarks (Woo, 2026): home page mobile PageSpeed 50+ is acceptable, 70+ is good, 85+ is exceptional. Product pages are usually 5-10 points lower than home due to dynamic content.
Cart and checkout often score 30-50 on Woo — they are JS-heavy by nature. Aim for 50+ on checkout.
Save baseline scores to a spreadsheet. Without it, you cannot measure the lift after each optimization.
Step 2
WordPress Admin → Plugins. The average Woo store has 30+ plugins; the speed-optimized target is 20-25. Each plugin adds 50-300ms to TTFB.
Open Plugins. Count active plugins. Most Woo stores have 30-50 active; speed-optimized stores run 18-25.
For each plugin, ask: (a) is this used in the last 30 days? (b) does it have an alternative built into another active plugin? (c) is there a more efficient equivalent?
Common removable plugins: (1) Multiple SEO plugins (keep one — Yoast OR RankMath, not both). (2) Multiple security plugins (keep Wordfence OR Sucuri, not both). (3) Old form plugins (Contact Form 7 + WPForms + Gravity Forms — pick one). (4) Image optimization plugins running alongside server-level optimization. (5) Plugins disabled in admin but still active.
For each removal candidate: backup → deactivate → wait 7 days → if nothing broke, delete. Do NOT delete same-day — some plugins have admin-only impact that takes days to surface.
Use Query Monitor plugin to identify SLOW plugins (the ones contributing >100ms to each page load). Replace or remove the top 3 offenders.
Step 3
Install WP Rocket (paid, $59/yr) OR Cloudways/Kinsta built-in caching OR LiteSpeed Cache (free if on LiteSpeed server). Configure page cache, browser cache, GZIP/Brotli.
If you are on Cloudways, Kinsta, WP Engine, or another managed Woo host — they have server-level caching built in. Verify it is enabled in the hosting control panel.
If on shared hosting (SiteGround, Bluehost, generic VPS), install WP Rocket. Configure: page cache ON, browser cache ON, GZIP compression ON, lazy-load images ON.
Critical: exclude /cart/, /checkout/, /my-account/, and ?add-to-cart=* from page cache. Caching these breaks WooCommerce session state — customers see other customers' carts.
WP Rocket auto-excludes WooCommerce URLs by default. Other caching plugins may not — verify the exclusions list before going live.
Test: open /shop/ → measure load. Then open in incognito → measure again. The second load should be 2-3x faster (cache hit). If not, caching is not actually working.
Step 4
WooCommerce → Settings → Advanced → Features → enable "High-Performance Order Storage." This moves orders out of wp_posts into dedicated tables. Required for stores doing 1K+ orders/month.
Before enabling: backup your database. HPOS migration is reversible but the safe path is "have a backup."
In WooCommerce → Settings → Advanced → Features tab, toggle "High-Performance Order Storage" ON. Save.
A migration banner appears. Click "Migrate." WooCommerce copies all orders from wp_posts (the legacy storage) to wp_wc_orders + wp_wc_order_addresses + wp_wc_order_meta (the new HPOS tables).
For stores with 100K+ orders, this takes 10-60 minutes. Run during low-traffic hours.
After migration, admin order list, search, and reports become 5-20x faster. Database queries on /wp-admin/edit.php?post_type=shop_order drop from 5-15 seconds to under 1 second.
Critical: verify all your plugins are HPOS-compatible. WooCommerce → Plugins shows a "HPOS compatible" indicator. Any incompatible plugin must be updated or removed before HPOS works reliably.
Step 5
Install ShortPixel or Imagify. Convert images to WebP or AVIF. Lazy-load below-the-fold. Serve from a CDN.
Install ShortPixel ($5/mo entry) or Imagify (free up to 25MB/mo, then $9/mo). Connect API key, enable WebP delivery.
On the plugin first run, bulk-optimize the entire media library. This takes 1-6 hours depending on image count.
Set "Compression level" to Glossy (10-30% smaller, no visible quality loss). Avoid "Lossy" — it can make product photos look soft.
Enable lazy loading via WP Rocket or the image plugin. Below-the-fold images load only on scroll, reducing initial page weight 40-70%.
For LCP optimization: identify the hero image on home + product pages. Add "fetchpriority=high" attribute. Make it the only image that loads eagerly above-the-fold.
Connect Cloudflare (free) or BunnyCDN ($1/mo+) as a CDN. Configure the CDN URL in your image plugin. Images now serve from edge locations instead of your origin server — 200-500ms faster globally.
Step 6
Run WP-Optimize or a similar database cleanup. Remove post revisions, transients, orphaned metadata, and trash. Database queries on bloated tables are 3-10x slower.
Install WP-Optimize (free) → Database tab.
Backup database first (UpdraftPlus, or your host's backup tool).
Run: Clean all post revisions (keep last 5), Remove auto-drafts, Remove trashed posts, Remove spam comments, Remove expired transients, Remove orphan postmeta.
For Woo specifically: remove abandoned wc_session_* transients older than 7 days. These accumulate and bloat wp_options.
Run: Optimize database tables (the InnoDB OPTIMIZE TABLE equivalent). Tables get fragmented over time; this defragments.
Set up a weekly schedule for these cleanups. Without recurring cleanup, the database bloats again within 2-3 months.
Step 7
WooCommerce stores accumulate unused product variations, unpublished products, and abandoned product images. Each adds DB rows and disk usage.
WooCommerce → Products → All Products → filter by "Draft" or "Trash." Delete anything not published.
For variable products: open each variable product → Variations tab. Delete unused variants (a t-shirt with 50 size×color combos where only 12 are real). Each variant = ~5 DB rows.
Media → Library → filter by "Unattached." Anything not linked to a product or post can usually go. Verify with "View" before deleting in bulk.
Run "Remove orphan product images" via a plugin like "Media Cleaner" (use the safe-list mode — it can remove footer logos if you let it).
Goal: shrink the database below 500 MB. Above 2 GB, Woo admin gets noticeably sluggish.
Step 8
Re-run PageSpeed on the same 5 URLs × 2 devices. Compare to baseline. Document what worked. Schedule a monthly speed check.
Run PageSpeed Insights on the same 10 URLs as Step 1.
Typical lift after these steps: PageSpeed mobile 30 → 65-80, LCP 4.5s → 2.0-2.8s, TTFB 800ms → 250-400ms.
If lift is below expectations, the culprit is usually one of: (a) hosting is undersized — move from shared to managed Woo host. (b) a single heavy plugin still installed — re-audit. (c) theme is the bottleneck — switch to a lean theme.
Document the final plugin list, caching config, and image optimization settings in a team wiki. Without docs, the next developer reintroduces bloat within 6 months.
Schedule a monthly speed check: 1st of each month, run PageSpeed, note any regression, fix.
Common mistakes
Caching the cart and checkout pages
What goes wrong: Customers see other customers' carts at checkout. Personalization breaks. Some customers checkout with no items at all. This is catastrophic — it can leak PII across customers.
How to avoid: Verify caching plugin excludes /cart/, /checkout/, /my-account/, and any URL with ?add-to-cart=. WP Rocket does this by default; other plugins may need manual config.
Running 3+ image optimization plugins
What goes wrong: ShortPixel + Smush + EWWW all enabled. They re-process the same images multiple times, sometimes degrading quality cumulatively. Database fills with duplicate metadata. Speed lift is no better than running one.
How to avoid: Pick one image optimization plugin. Disable + delete the others. Re-run a fresh bulk optimization with only one active.
Skipping HPOS migration on stores over 1K orders/month
What goes wrong: Admin order list takes 5-15 seconds to load per page. Order search times out. Reports cannot generate. Staff productivity collapses; you lose 1-2 hours/day to slow admin.
How to avoid: WooCommerce → Settings → Advanced → Features → enable HPOS → run migration. Verify plugin compatibility first.
Heavy page builder for a simple store
What goes wrong: Divi + WPBakery + Elementor all active 'in case we need them.' Each adds 300-600ms to load. Page weight is 5-8MB on mobile.
How to avoid: Audit which builder is actually used. Deactivate the others. Consider switching to a lean theme (GeneratePress, Kadence) + native Gutenberg blocks if the design is simple.
No database cleanup ever
What goes wrong: After 2 years, wp_options has 100K+ rows of expired transients. Every page query reads from this bloated table. TTFB climbs from 300ms to 1500ms. Admin pages take 10+ seconds.
How to avoid: Install WP-Optimize. Run cleanup. Schedule weekly recurrence. Below 100 MB for wp_options is healthy; above 500 MB is a problem.
Cheap hosting on a high-revenue store
What goes wrong: Store does $50K/mo on $9/mo shared hosting. PHP runs out of memory during peak traffic. Checkout fails for 10-20% of customers on Black Friday. You lose more in 1 hour than 1 year of hosting upgrade cost.
How to avoid: For Woo stores doing $10K+/mo, use managed hosting: Cloudways ($30-100/mo), Kinsta ($35-100/mo), WP Engine ($30-100/mo), or Pressable. The ROI is immediate.
Recap
Done — what's next
WooCommerce SEO essentials checklist (product + category SEO)
Read the next tutorial
Hand it off
Woo speed work is one of the highest-ROI investments in DTC ecommerce — typically 10-20% CR lift from a one-time fix. A vetted WooCommerce specialist can do this in 2-3 sessions for $400-800 at $14-16/hr. Ongoing speed monitoring runs $100-200/mo.
See specialist rates
Mobile: 70+ home, 60+ product, 50+ checkout. Desktop: 85+ home, 75+ product, 60+ checkout. Anything below these on mobile costs measurable conversions. Above 80 on home is excellent for Woo (Shopify can reach 95+ because it controls more of the stack).
Yes — Woo has been stable since WooCommerce 8.2 (late 2023). Backup first, verify plugin compatibility (WooCommerce → Plugins → HPOS column), then enable. Migration is reversible. For most stores, the speed lift on admin is dramatic and the customer-facing experience does not change.
If you are on Cloudways or shared hosting with Apache, switching to LiteSpeed-based hosting (Hostinger Business, Cloudways Vultr High Frequency, NameHero) typically lifts PageSpeed 10-15 points for free via LiteSpeed Cache. Worth it if you are mid-stack performance.
On unoptimized Woo: PageSpeed 30 → 55-65 with WP Rocket alone. On already-decent stores: 70 → 78-82. On managed Woo hosts that already cache server-side (Kinsta, WP Engine), WP Rocket adds marginal lift — skip it there.
Positively. Core Web Vitals (LCP, INP, CLS) are Google ranking signals. Stores that move from 'Poor' to 'Good' on Core Web Vitals typically see organic traffic lift 5-15% over 60-90 days. Also indirect: lower bounce rate signals quality to Google.
Plugin bloat and database fragmentation creep back over time. Without recurring maintenance: PageSpeed drifts down 5-10 points/year. With monthly cleanup + quarterly plugin audit + yearly hosting review: maintains long-term. Build it into ops, not as a one-time project.
WooCommerce
Woo gives you full control over URL structure, schema, and metadata — which means you can do this right or wrong. Most stores ship with terrible product URLs, missing schema, and zero category SEO. This is the checklist Woo SEO specialists run on day one.
WooCommerce
Customer says 'checkout did not work.' You test and it seems fine. The order is stuck in 'Pending payment' or never created at all. This is the diagnostic sequence Woo specialists run — payment, webhook, plugin conflict, theme override, Blocks vs Classic.
WooCommerce
Most Woo owners install the Stripe plugin, see 'Connected,' and assume Apple Pay just works. Then mobile CR sits at 28% because the Payment Request Button never registered the domain. Here is the full gateway setup including Blocks Checkout compatibility.
WooCommerce
DIY WooCommerce is a great idea — until your plugin count crosses 30, your checkout breaks intermittently, and PageSpeed sits at 35. This is the honest framework: when the cost of self-managing exceeds the cost of hiring, and how to tell which side you're on.
WordPress
A slow WordPress site costs you ad ROAS, organic rankings, and conversion rate at the same time. This checklist walks through the speed wins that actually move marketing metrics — not just PageSpeed scores.