WordPress speed specialists · PSI 90+ guaranteed · Free audit in 24 hours →

Case study

WooCommerce Store — 14s Mobile Load to 1.1s LCP

A shared-hosting WooCommerce store with Elementor was losing mobile sales to a 14-second load time. PageSpeed99 fixed it in 48 hours — PSI mobile 96, revenue up 22% the following month.

Client: Mark T. Industry: E-commerce Verified in: PageSpeed Insights

28 → 96

PSI Mobile

14.2s → 1.1s

LCP

420ms → 68ms

INP

0.18 → 0.02

CLS

14s → 1.1s

Load time

+22%

Revenue

48 hours

Staging to live

340+ products

Catalog size

~18k/mo

Mobile sessions

How we verify: Every metric in this case study was captured in Google's PageSpeed Insights and included in the delivered PDF audit report. You can re-run PSI on the live URL yourself — we link the exact test URL and timestamp in every client report.

The Challenge

Mark T.'s WooCommerce store was taking 14 seconds to load on mobile — well above Google's 2.5s LCP threshold. Mobile PSI scored 28. Cart abandonment was high, and the store was losing revenue every day the site stayed slow.

Mark had already installed WP Rocket and tried basic caching tweaks, but the score barely moved. The real bottlenecks — render-blocking Elementor CSS, an oversized hero image, and WooCommerce script bloat — were untouched.

Finding 01

Hero image was the LCP element

A 2.4 MB JPEG loaded above the fold with no dimensions set — causing layout shift and a 14.2s LCP on throttled mobile.

Finding 02

Elementor CSS blocked first paint

14 render-blocking stylesheets from Elementor and WooCommerce loaded before any content appeared — 680 KB of CSS on the homepage alone.

Finding 03

Cart fragments ran on every page

WooCommerce cart-fragment AJAX fired on non-shop pages, adding 400–800 ms TTFB and blocking INP on mobile taps.

Finding 04

Payment scripts loaded globally

Stripe.js and WooCommerce payment gateway scripts loaded site-wide — even on blog posts and the About page.

The Stack

The store ran on SiteGround GrowBig shared hosting with WooCommerce 8.x, Elementor Pro page builder, and WP Rocket for caching. A custom child theme handled product layouts. Traffic was ~70% mobile — making LCP the single biggest conversion lever.

ComponentDetails
HostingSiteGround GrowBig (shared)
Page builderElementor Pro + Hello theme
E-commerceWooCommerce + Stripe payments
CachingWP Rocket + SiteGround Dynamic Cache
Catalog340+ products, 28 categories
Plugins (active)38 plugins at audit time

What We Did

All work was done on a staging clone — the live store was untouched until Mark approved the verified PSI 96 result.

Images & LCP

  • Converted hero and category images to WebP with fallbacks
  • Set explicit width/height on all above-fold images
  • Added fetchpriority="high" to LCP hero image
  • Lazy-loaded below-fold product grid images
  • Removed unused Elementor background images from CSS

CSS & JavaScript

  • Deferred non-critical Elementor CSS via WP Rocket
  • Removed 6 unused Elementor widget stylesheets
  • Deferred Stripe.js and payment gateway scripts to checkout only
  • Minified and combined remaining critical CSS inline
  • Preconnected to Stripe CDN on checkout pages only

WooCommerce

  • Disabled cart fragments on non-shop pages
  • Reduced WooCommerce session queries on homepage
  • Optimized product archive query (removed meta_query bloat)
  • Deferred WooCommerce add-to-cart JS until user interaction
  • Cached shop page HTML via SiteGround dynamic rules

Hosting & Cache

  • Configured SiteGround dynamic cache for product URLs
  • Excluded cart, checkout, and my-account from full-page cache
  • Enabled OPcache and verified PHP 8.1 on server
  • Tuned WP Rocket preload and heartbeat control
  • Verified TTFB under 400 ms on cached pages

Results

All scores verified in Google's PageSpeed Insights tool — linked in the delivered audit report.

PageSpeed99 Audit ReportPDF
Mobile PSI2896
Desktop PSI5298
LCP14.2s1.1s
INP420ms68ms
CLS0.180.02
Load time14s1.1s
Core Web VitalsFailAll Pass
MetricBeforeAfterChange
Mobile PSI2896+68 pts
Desktop PSI5298+46 pts
LCP (mobile)14.2s1.1s−92%
INP420ms68ms−84%
CLS0.180.02−89%
TTFB (cached)1.2s380ms−68%
Total page weight4.8 MB1.1 MB−77%
HTTP requests14238−73%

Business Impact

Mark tracked revenue in WooCommerce Analytics for 30 days before and after the deploy. Mobile conversion improved alongside the speed gains — no other marketing changes were made during that window.

+22%

Monthly revenue

Measured 30 days post-launch vs. prior 30 days

−28%

Cart abandonment

Mobile checkout drop-off reduced

−41%

Mobile bounce rate

Homepage and product page exits down

What Didn't Work (Before Us)

WP Rocket alone wasn't enough

Mark had WP Rocket installed and enabled minification, lazy load, and page cache — mobile PSI only moved from 28 to 31. Caching can't fix a 2.4 MB LCP image, render-blocking Elementor CSS, or cart-fragment AJAX on every page load. Those require targeted WooCommerce and builder-specific fixes.

Plugin cleanup wasn't the answer either

Removing plugins would have broken Elementor layouts and WooCommerce checkout. The fix was surgical — defer what isn't needed on each page type, not strip functionality the store depends on.

Client Quote

WooCommerce Shared Hosting LCP Fix
★★★★★

14s → 1.1s · Revenue +22%

"Our WooCommerce store was taking 14 seconds on mobile. PageSpeed99 fixed it in 48 hours and our revenue went up 22% the following month. The PSI report was verifiable in Google's own tool."

MT
Mark T.

E-commerce Owner

Timeline

Day 0

Free Audit

Mark submitted the site URL. We delivered a PDF audit within 18 hours — PSI scores, 4 bottlenecks ranked by impact, and a fixed-price quote.

Day 1

Staging Clone

Site cloned to staging. Full optimization started — images, CSS deferral, WooCommerce AJAX, and cache rules. Live store untouched.

Day 2

Verified & Approved

Staging hit PSI 96 mobile. Mark reviewed checkout flow and product pages. Approved live deploy same day.

Day 2–32

Monitor 30 Days

30 days post-launch monitoring included. Score held at PSI 94–97. Revenue up 22% by day 30.

Key Takeaways

If your WooCommerce store scores under 50 on mobile PSI, these patterns likely apply to your site too.

Caching plugins fix cache, not LCP. WP Rocket, LiteSpeed, and W3 Total Cache won't convert a 2 MB hero image or defer Elementor CSS — you need builder-specific optimization.

Cart fragments kill non-shop pages. WooCommerce fires AJAX on every page load by default. Disabling fragments on blog and static pages is often the fastest INP win.

Payment JS should load on checkout only. Stripe.js and gateway scripts don't belong on your homepage — defer them to the pages that actually process payments.

Staging-first protects revenue. Never optimize live WooCommerce during peak hours. Clone, fix, verify PSI 90+, then deploy with client sign-off.

Ready to start?

Get a free audit from verified professionals

PSI scores, Core Web Vitals status, top bottlenecks, and a fixed-price quote — delivered within 24 hours, $0 cost.