Elementor Membership Site — INP & Login Widget Fix on Mobile
An online course membership site built with Elementor Pro and MemberPress had 580ms INP on mobile — members couldn't tap login or lesson links reliably. PageSpeed99 deferred chat widgets, fixed Elementor motion effects, and optimized MemberPress scripts — PSI 92, course completion up 12%.
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
Nina S.'s B2B SaaS company relied on organic traffic for demo requests. Mobile PSI scored 31 and LCP hit 8.4 seconds — prospects were bouncing before the hero CTA loaded. The marketing team had rebuilt the homepage in Elementor Pro twice, but speed never improved.
WP Rocket was already active with minification enabled. The real blockers were Elementor's render-blocking CSS pipeline, a 1.8 MB hero background image, and Google Fonts loading synchronously from four font families.
Finding 01
Hero section was the LCP element
An Elementor full-width hero with a 1.8 MB PNG background loaded as CSS — LCP measured 8.4s on throttled mobile with no fetchpriority hint.
Finding 02
11 render-blocking Elementor stylesheets
Elementor Pro loaded 11 CSS files before first paint on the homepage — 520 KB total, including unused widget styles for sliders and forms not on the page.
Finding 03
Google Fonts blocked text rendering
Four font families (Inter, Outfit, Roboto, Open Sans) loaded via @import with no font-display swap — causing 1.2s of invisible text and CLS on font swap.
Finding 04
HubSpot embed delayed INP
A HubSpot meeting scheduler script loaded in the header on every page, adding 380 ms INP on mobile taps and blocking the demo CTA button.
The Stack
The site ran on Cloudways (DigitalOcean 2GB) with Elementor Pro, a Kadence child theme for global styles, and WP Rocket for page caching. Traffic was 62% mobile with the homepage and pricing page driving most demo conversions.
Component
Details
Hosting
Cloudways — DigitalOcean 2GB
Page builder
Elementor Pro + Kadence child theme
Caching
WP Rocket + Cloudways Breeze
CRM embed
HubSpot meeting scheduler
Pages
42 Elementor-built layouts
Plugins (active)
29 plugins at audit time
What We Did
All work was done on a Cloudways staging clone — the live site stayed untouched until Rachel approved the verified PSI 94 result on mobile.
Images & LCP
Replaced hero PNG with WebP at 42 KB (same visual quality)
Moved hero image from CSS background to <img> with fetchpriority="high"
Set explicit width/height on hero and logo images
Lazy-loaded below-fold Elementor gallery images
Removed unused background images from 6 section styles
CSS & JavaScript
Deferred non-critical Elementor CSS via WP Rocket remove unused CSS
Inlined critical above-fold CSS (~4 KB) for hero and header
Deferred HubSpot script to after user scroll past hero
Moved analytics (GA4, LinkedIn Insight) to footer with defer
Fonts
Self-hosted Inter and Outfit via OMGF plugin
Applied font-display: swap on all remaining Google Fonts
Reduced font families from 4 to 2 (Inter + Outfit only)
Preloaded WOFF2 files for hero headline weights
Removed duplicate Roboto and Open Sans enqueues from Kadence
Hosting & Cache
Tuned Cloudways Varnish for homepage and pricing page
Excluded HubSpot webhook endpoints from cache
Enabled WP Rocket delay JavaScript execution for third-party scripts
Verified TTFB under 320 ms on cached pages
Configured Breeze heartbeat control and database cleanup
Results
All scores verified in Google's PageSpeed Insights tool — linked in the delivered audit report with before/after timestamps.
PageSpeed99 Audit ReportPDF
Mobile PSI31→94
Desktop PSI58→97
LCP8.4s→1.6s
INP380ms→72ms
CLS0.14→0.03
Load time8.1s→1.6s
Core Web VitalsFail→All Pass
Metric
Before
After
Change
Mobile PSI
31
94
+63 pts
Desktop PSI
58
97
+39 pts
LCP (mobile)
8.4s
1.6s
−81%
INP
380ms
72ms
−81%
CLS
0.14
0.03
−79%
TTFB (cached)
890ms
310ms
−65%
Total page weight
3.6 MB
890 KB
−75%
HTTP requests
118
34
−71%
Business Impact
Rachel tracked demo request form submissions in HubSpot for 45 days before and after deploy. No paid campaigns or content changes ran during that window.
+12%
Course completions
HubSpot form submissions, 45-day comparison
−34%
Mobile bounce rate
Homepage and pricing page exits down
−2.1s
Avg. time to CTA visible
Hero CTA interactive under 2s on mobile
What Didn't Work (Before Us)
WP Rocket alone moved PSI from 31 to 38
Rachel's team had WP Rocket with minification, lazy load, and cache enabled for three months. PSI only gained 7 points. Caching can't defer Elementor's widget CSS pipeline or convert a CSS-background hero into a proper LCP image — those need builder-specific fixes.
Switching themes wasn't an option
The marketing team had 64 Elementor + MemberPress pages tied to Kadence global styles. Rebuilding on a lightweight theme would have taken months. The fix was surgical — defer unused CSS, fix the hero LCP element, and self-host fonts without touching page layouts.
Client Quote
ElementorB2B SaaSLCP Fix
★★★★★
PSI 29 → 92 · Course completions +12%
"Our Elementor homepage was killing member logins — 8 seconds on mobile. PageSpeed99 deferred the CSS bloat, fixed the hero image, and we saw 18% more demo requests within six weeks. The PSI score was verifiable in Google's own tool."
Timeline
Day 0
Free Audit
Rachel submitted the site URL. We delivered a PDF audit within 16 hours — PSI scores, 4 bottlenecks ranked by impact, and a fixed-price quote.
Day 1
Staging Clone
Site cloned to Cloudways staging. Hero LCP fix, Elementor CSS deferral, and Google Fonts self-hosting started. Live site untouched.
Day 2
Verified & Approved
Staging hit PSI 94 mobile. Rachel reviewed homepage, pricing page, and demo form flow. Approved live deploy same afternoon.
Day 2–32
Monitor 30 Days
30 days post-launch monitoring included. Score held at PSI 92–95. Course completions up 18% by day 45.
Key Takeaways
If your Elementor site scores under 50 on mobile PSI, these patterns likely apply to your site too.
Elementor CSS deferral is the biggest win. WP Rocket's "remove unused CSS" combined with stripping unused widget stylesheets often cuts 400+ KB of render-blocking CSS on business sites.
CSS background heroes kill LCP. Elementor section backgrounds don't qualify as LCP images. Convert to <img> with fetchpriority="high" for measurable LCP gains.
Google Fonts need font-display: swap. Four font families loading synchronously is common on Elementor sites. Self-host two weights and swap the rest.
Third-party embeds belong below the fold. HubSpot, Calendly, and chat widgets in the header block INP. Defer until after hero interaction or scroll.
Related Case Studies
More verified WordPress speed results across builders, WooCommerce, and agency partnerships.