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

Case study

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%.

Client: Nina S., Course Creator Industry: Online education / Membership Verified in: PageSpeed Insights

29 → 92

PSI Mobile

7.2s → 1.8s

LCP

580ms → 84ms

INP

0.09 → 0.02

CLS

7.6s → 1.9s

Load time

+12%

Course completions

40 hours

Staging to live

64 pages

Elementor layouts

~14k/mo

Organic 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

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.

ComponentDetails
HostingCloudways — DigitalOcean 2GB
Page builderElementor Pro + Kadence child theme
CachingWP Rocket + Cloudways Breeze
CRM embedHubSpot meeting scheduler
Pages42 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
  • Stripped 4 unused Elementor widget stylesheets (slider, form, popup, nav-menu)
  • 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 PSI3194
Desktop PSI5897
LCP8.4s1.6s
INP380ms72ms
CLS0.140.03
Load time8.1s1.6s
Core Web VitalsFailAll Pass
MetricBeforeAfterChange
Mobile PSI3194+63 pts
Desktop PSI5897+39 pts
LCP (mobile)8.4s1.6s−81%
INP380ms72ms−81%
CLS0.140.03−79%
TTFB (cached)890ms310ms−65%
Total page weight3.6 MB890 KB−75%
HTTP requests11834−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

Elementor B2B SaaS LCP 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."

RM
Nina S.

Course Creator, Membership Site

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.

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.