Your plumbing client's competitor has a faster site. Not prettier. Not more features. Just faster.
And it's costing your client leads.
Here's the uncomfortable truth: a local service site that takes 4 seconds to load loses half its visitors before they see the phone number.
Google knows this. They've been screaming about Core Web Vitals for years. But most freelancers treat performance optimization like it's optional polish you add after launch—if there's time, if there's budget.
That's backwards.
For local service businesses, performance is conversion. A fast site doesn't just rank better. It answers the phone first.
The Real Cost of a Slow Site
Let's talk numbers, because your clients care about money, not metrics.
Bounce Rate
According to Google's research:
- 53% of mobile visitors abandon a site that takes longer than 3 seconds to load
- Every additional second of load time increases bounce rate by roughly 32%
Translation: if your client's site takes 5 seconds to load, 6 out of 10 potential customers are gone before they see the hero section.
Conversions
Amazon found that every 100ms of latency costs them 1% in sales. For a local HVAC company pulling $500K annually from their site, that's $5K per year lost for every tenth of a second.
You're not building for Amazon scale. But your client's competitor is one click away. If their site loads in 1.2 seconds and yours takes 3.8 seconds, guess who gets the call?
Search Rankings
Google has made Core Web Vitals a ranking factor since 2021. A slow site doesn't just convert worse—it gets seen less.
Your client's SEO budget is wasted if the site ranks on page one but loads like it's on dial-up.
What Core Web Vitals Actually Measure
Google gives you three metrics. They sound technical. They're not.
LCP: Largest Contentful Paint
What it measures: How long until the biggest thing on the page (usually the hero image or headline) becomes visible.
Why it matters: This is what visitors see first. If it's slow, they assume the whole site is broken.
Target: Under 2.5 seconds.
How to fix it:
- Optimize your hero image (use WebP, size it correctly, serve it from a CDN)
- Preload critical assets
- Remove render-blocking CSS and JS from the critical path
- Use server-side rendering or static generation (Next.js does this by default)
FID/INP: First Input Delay / Interaction to Next Paint
What it measures: How long until the page responds to the first click, tap, or keystroke. (INP replaced FID in 2024 and measures all interactions, not just the first.)
Why it matters: A visitor clicks your "Call Now" button. If nothing happens for 600ms, they click again. And again. Then they leave.
Target: Under 100ms for FID, under 200ms for INP.
How to fix it:
- Break up long JavaScript tasks
- Defer non-critical scripts
- Use Web Workers for heavy computation
- Avoid blocking the main thread with analytics or chat widgets
CLS: Cumulative Layout Shift
What it measures: How much the page jumps around while loading.
Why it matters: Your visitor goes to click the phone number. An ad loads. The page shifts. They click the ad instead. Or they rage-quit.
Target: Under 0.1.
How to fix it:
- Set width and height on all images and embeds
- Reserve space for ads and dynamic content
- Avoid inserting content above existing content
- Use
font-display: swapcarefully (or preload fonts)
The Local Service Site Playbook
Most guides tell you to optimize everything. That's exhausting.
Here's the minimum viable performance work for a local service site:
1. Hero Image Optimization
Your hero image is almost always the LCP element. Fix it first.
Before:
- 3MB JPEG
- Loaded from WordPress media library
- No sizing attributes
- No priority loading
After:
- Sub-200KB WebP with a JPEG fallback
- Served from a CDN
- Explicit width and height
priorityprop in Next.js (orfetchpriority="high"in plain HTML)
This one change can cut 2 seconds off your LCP.
2. Font Loading Strategy
Custom fonts are the second-biggest LCP killer. You have two options:
Option A: System fonts only
The fastest option. Use -apple-system, BlinkMacSystemFont, Segoe UI, etc. Your site will look native on every device. Bonus: zero CLS.
Option B: Preload and self-host custom fonts
If your client insists on brand fonts:
- Self-host them (don't load from Google Fonts unless you're using the new API)
- Preload the WOFF2 files
- Use
font-display: swaponly if you've tested the CLS impact - Subset the fonts (you don't need Cyrillic glyphs for a plumber in Phoenix)
3. Third-Party Script Audit
Every script is a tax on INP. Go through your <head> and ask:
- Do we need this? (Analytics, heatmaps, chatbots, ads, social pixels)
- Can it load asynchronously? (Most scripts can)
- Can it load after user interaction? (Chatbots, live chat, booking widgets)
For example, don't load the booking widget until someone clicks "Schedule Service." Use a facade—show a button, then load the widget when they click it.
Cutting 3 third-party scripts can shave 500ms off your INP.
4. Image Lazy Loading
Every image below the fold should lazy-load. Period.
In Next.js, this is automatic with the <Image> component. In plain HTML, add loading="lazy" to every <img> except the hero.
This reduces initial payload and improves LCP by not competing for bandwidth.
5. Measure and Monitor
Use these tools:
- PageSpeed Insights (free, shows real-world data from Chrome users)
- WebPageTest (free, shows waterfall and filmstrip view)
- Lighthouse (built into Chrome DevTools)
Run tests on a throttled connection. Your client's customers aren't all on gigabit fiber.
Set a benchmark. Fix the biggest offenders. Re-test. Repeat until you hit the targets.
The Conversation With Your Client
Your client doesn't care about LCP. They care about booked calls.
Here's how to frame it:
"Right now, your site takes 4.2 seconds to load on mobile. That means 50% of visitors leave before they see your phone number. If we optimize performance, we can get that down to 1.8 seconds. That could double the number of people who see your contact info."
Use real numbers. Show them the before/after. Tie it to revenue, not metrics.
And if they're skeptical, ask them to open their competitor's site on their phone. Then open theirs. Let them feel the difference.
Final Thought
Performance isn't a nice-to-have. It's not a luxury add-on for enterprise clients.
For local service businesses, performance is the front door. If it's slow, nobody walks in.
Your client doesn't need a redesign. They need their site to load in under 2 seconds.
Fix the hero image. Audit the scripts. Lazy-load everything below the fold. Measure. Ship.
Then watch the phone ring.