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-commerceVerified 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.
Component
Details
Hosting
SiteGround GrowBig (shared)
Page builder
Elementor Pro + Hello theme
E-commerce
WooCommerce + Stripe payments
Caching
WP Rocket + SiteGround Dynamic Cache
Catalog
340+ 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
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 PSI28→96
Desktop PSI52→98
LCP14.2s→1.1s
INP420ms→68ms
CLS0.18→0.02
Load time14s→1.1s
Core Web VitalsFail→All Pass
Metric
Before
After
Change
Mobile PSI
28
96
+68 pts
Desktop PSI
52
98
+46 pts
LCP (mobile)
14.2s
1.1s
−92%
INP
420ms
68ms
−84%
CLS
0.18
0.02
−89%
TTFB (cached)
1.2s
380ms
−68%
Total page weight
4.8 MB
1.1 MB
−77%
HTTP requests
142
38
−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
WooCommerceShared HostingLCP 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."
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.
Related Case Studies
More verified WordPress speed results across Elementor, WooCommerce checkout, and Core Web Vitals projects.