Twinpalms Case Study: CWV Solved in 6 Days

Case Study CWV Passed Luxury Hospitality

From 41 to 91 –
Core Web Vitals fixed
for a 5‑Star Resort

A failing WordPress site was silently costing Twinpalms Hotels & Resorts direct bookings every single day. We fixed every metric in 6 days, zero design changes, zero downtime.

ClientTwinpalms Hotels & Resorts
IndustryLuxury Hospitality
LocationPhuket, Thailand
Platform WordPress + Cloudflare
Timeline 6 Days
41Before
91After

Mobile PageSpeed  ·  +50 Points

Results at a Glance

Every Metric. Fixed.

Verified via PageSpeed Insights + CrUX
Performance Score
41 / 100
91
+50 Points ↑
Passing
LCP — Largest Contentful Paint
4.3 seconds
1.8s
−58% Faster ↑
Good
TBT — Total Blocking Time
400 ms
90ms
−77.5% Reduced ↑
Good
CLS — Cumulative Layout Shift
0.625
0.02
−96.8% Stable ↑
Excellent
Speed Index
13.7 seconds
3.1s
−77% Faster ↑
Good
Core Web Vitals
FAILED
PASSED
Google Approved ↑
CWV Pass
6 Days
Timeline
Zero
Design Changes
Zero
Downtime
+50 pts
PageSpeed Gain
5
Property Rating
About the Client

Twinpalms Hotels & Resorts

One of Thailand’s most celebrated independent luxury hotel brands, operating award-winning boutique properties across Phuket. Their website is their single most important direct sales channel.

With a strong international guest base and annual revenue exceeding $11 million, Twinpalms competes at the very top of Southeast Asian luxury hospitality. Their site runs on WordPress.org + Cloudflare CDN — a solid foundation that was being completely undermined by an unoptimised performance stack.

The OTA leak. Every percentage point of direct booking conversion matters at this scale. A slow site doesn’t just hurt UX — it leaks revenue to OTAs at 15–25% commission per booking, every single day.

Twinpalms luxury resort at dusk, Phuket
5-Star Boutique Collection
Client Snapshot
Client
Twinpalms Hotels & Resorts
Industry
Luxury Hospitality
Location
Phuket, Thailand
Platform
WordPress + Cloudflare
Revenue
$11M+ annually
Timeline
6 Days
Result
41 → 91 · CWV Pass
The Problem

A 5-Star Property.
A failing website.

When we ran an independent PageSpeed audit, the mobile results were alarming — especially for a property actively running paid traffic.

pagespeed.web.dev/analysis — twinpalms.com · mobile ASSESSMENT: FAILED
MetricScoreGoogle TargetStatus
Performance Score41 / 10090+ Failing
Largest Contentful Paint4.3 seconds≤ 2.5s Poor
Total Blocking Time400 ms≤ 200ms Poor
Cumulative Layout Shift0.625≤ 0.1 Critical
Speed Index13.7 seconds≤ 3.4s Critical
Core Web VitalsFAILEDPass Failed

Audited with Google PageSpeed Insights · Lighthouse · Chrome UX Report (CrUX)

The Diagnosis

5 Root Causes.
All fixable.

Server + code level only
  • Root Cause of LCP 4.3s
    Hero Images Not Preloaded — Served in JPEG

    The browser had to discover, request, download and render the hero image sequentially. No preload tag. Images were served in legacy JPEG format, not WebP — adding unnecessary file weight on every load.

    LCP 4.3s · limit ≤ 2.5s
  • Root Cause of CLS 0.625
    Images Without Explicit Width & Height

    Multiple images had no explicit dimensions in HTML. The browser couldn’t reserve space — causing visible layout shifts during load. The worst metric: 6× over Google’s maximum threshold.

    CLS 0.625 · limit ≤ 0.1
  • Root Cause of TBT 400ms
    Third-Party Scripts Blocking the Main Thread

    Analytics, live chat, and booking engine JS were loading synchronously in the page head — blocking render before any content appeared. Nothing was deferred or loaded asynchronously.

    TBT 400ms · limit ≤ 200ms
  • Root Cause of FCP 2.3s
    No Critical CSS — Full Stylesheet Blocking Render

    The entire stylesheet loaded before above-the-fold content rendered. Critical CSS allows the browser to render visible content immediately and load the rest in the background.

    FCP 2.3s · limit ≤ 1.8s
  • Root Cause of Speed Index 13.7s
    Cloudflare In Place — But Misconfigured

    Cloudflare CDN was active but several key features were disabled: Auto Minify off, Polish (image compression) not enabled, and caching rules not optimised for high cache-hit rates.

    SI 13.7s · limit ≤ 3.4s
The Solution

6 Days. Zero Design Changes.
Zero downtime.

Every fix was implemented at the server and code level. The design, content, and user experience stayed completely unchanged.

Day 1 – 2
Audit, Staging Setup & Quick Wins
  • Full technical audit — Query Monitor + Chrome DevTools
  • Staging environment configured (zero risk to live site)
  • WebP conversion applied across all key pages
  • Explicit width & height added to all images (CLS fix)
  • Cloudflare Polish + Auto Minify + Browser TTL rules enabled
Day 3 – 4
Core Performance Stack Implementation
  • LCP hero image preloaded with <link rel="preload"> on all key pages
  • Critical CSS implemented for all above-the-fold content
  • Analytics, chat, and booking scripts deferred — all non-critical JS
  • Full-page WordPress caching with booking/cart exclusion rules
  • CSS and JS minified and combined where safe
Day 5
Third-Party Script Audit & Management
  • Full audit of all third-party tags — GA4, Facebook Pixel, live chat, booking engine
  • async and defer attributes applied across the full script stack
  • Off-screen images and below-fold content lazy-loaded
  • 3 unused plugin scripts loading globally on every page removed
Day 6 — Complete
Validation, Deployment & Handover
  • All fixes validated on staging — mobile and desktop
  • Core Web Vitals pass confirmed via PageSpeed Insights + CrUX data
  • Deployed to live with zero downtime
  • Full before/after report with PageSpeed screenshots delivered
  • Cloudflare Cache Purge automation set up for ongoing workflow
The Results

Before vs. After — full comparison.

Drag the gold handle to compare the live PageSpeed audits, pixel for pixel.

PageSpeed Insights Mobile CWV Passed
91Score
  • Largest Contentful Paint 1.8 s
  • Total Blocking Time 90 ms
  • Cumulative Layout Shift 0.02
  • Speed Index 3.1 s
  • First Contentful Paint 0.9 s

Core Web Vitals Assessment: Passed — all metrics in the good range

PageSpeed Insights Mobile CWV Failed
41Score
  • Largest Contentful Paint 4.3 s
  • Total Blocking Time 400 ms
  • Cumulative Layout Shift 0.625
  • Speed Index 13.7 s
  • First Contentful Paint 2.3 s

Core Web Vitals Assessment: Failed — multiple URLs need improvement

Metric Before After Improvement
Performance Score41 / 10091 / 100+50 Points
Largest Contentful Paint4.3 seconds1.8 seconds−58% Faster
Total Blocking Time400 ms90 ms−77.5% Reduced
Cumulative Layout Shift0.6250.02−96.8% Stable
Speed Index13.7 seconds3.1 seconds−77% Faster
Core Web VitalsFAILEDPASSEDGoogle Approved
Business Impact

What This Means in
Real Revenue Terms

Google Rankings Improved

CWV is a confirmed Google ranking signal. With all metrics now passing, Twinpalms is eligible to outrank competitors for searches like “luxury resort Phuket” — searches that were being lost while CWV failed.

CWV = ranking signal
Mobile Booking Conversions Up

LCP dropped from 4.3s to 1.8s. The villa photography that sells the property now appears in under 2 seconds on mobile. Each 1-second improvement lifts hospitality conversions by up to 20%.

+20% Δ conversion / second
First Impression Matches the Property

CLS of 0.02 means the page is visually stable from the first pixel. No shifting, no jumping, no broken layout. The digital first impression now matches a 5-star luxury property.

0.02 CLS — pixel-stable
Paid Traffic ROI Improved

A Google-approved site improves Quality Scores on Google Ads — reducing cost-per-click and increasing ad rank for the same spend. Every baht of ad budget now works harder.

↑ Quality Score · ↓ CPC
Client Testimonial

In Their Own Words

Requested: personal experience at delivery
“Umair has been great to work with. The project was completed quickly and the work was great. Communication throughout was perfect. Really pleased with the results and will be using again.”
TT Tom Thorns HR  ·  Twinpalms Hotels & Resorts
What Was Included

Services Used in This Project

10 Deliverables
WordPress Core Web Vitals Optimization
LCP (Largest Contentful Paint) Fix
CLS (Cumulative Layout Shift) Fix
TBT / INP Reduction
Cloudflare CDN Configuration & Optimization
Critical CSS Implementation
Third-Party Script Management & Deferral
WebP Image Conversion & Compression
WordPress Page Caching Stack
Full Before/After Performance Report
Get Started

Is Your WordPress Site
Costing You Business?

We’ll run a free audit on your site and show you exactly what’s slowing it down — and what it’s costing you in traffic and revenue. No pitch. Just data.

Results in 5–7 Days Zero Design Changes Zero Downtime Full Before/After Report
More Case Studies

Real Results, Real Clients