2026-07-24
Why Your HVAC Website Is Slow, and What It Costs You in Booked Calls
What Core Web Vitals actually measure, why WordPress contractor sites fail them, and how to find out in five minutes whether yours is losing you emergency calls.
Short answer: plugins, page builders, and unoptimized images — usually in that order. WordPress is not inherently slow; a WordPress site running 34 plugins and a drag-and-drop builder is. And the cost lands hardest exactly where you can least afford it: a homeowner standing next to a dead condenser in August, on a phone, with two bars of signal and no patience.
Here is how to diagnose it and what the fix actually involves.
The standard you are being measured against
Google measures three things, collectively called Core Web Vitals. In 2026 the passing thresholds are:
| Metric | What it measures | Good |
|---|---|---|
| LCP (Largest Contentful Paint) | How long until the main content appears | under 2.5s |
| INP (Interaction to Next Paint) | How fast the page responds when tapped | under 200ms |
| CLS (Cumulative Layout Shift) | How much the layout jumps while loading | under 0.1 |
Two details matter and are widely misunderstood.
These are measured on real visitors, not lab tests. Google uses field data from the Chrome User Experience Report — actual people on actual phones on actual networks. A perfect score on a fast office connection means nothing if your customers are on LTE in a driveway.
You must pass at the 75th percentile. At least 75% of real page views have to hit the threshold. Being fast for most people is not enough if a quarter of your visitors are waiting.
Why contractor sites fail
Plugins. Every plugin adds code that loads on every page, whether that page uses it or not. A booking widget, a review slider, a chat bubble, three security plugins, a page builder, an SEO plugin, a form plugin, and an analytics plugin each add weight. Individually small; collectively fatal.
Page builders. Drag-and-drop builders generate deeply nested markup and load their own rendering engine before your content appears. They are what makes a site possible to edit without a developer, and they are also usually the single largest performance cost on the page.
Images straight off a phone. A photo from a modern phone is often 4–8 MB. Ten of those on a homepage is 40–80 MB, delivered to somebody on mobile data. Correctly sized and converted to modern formats the same images are frequently under 200 KB total.
Render-blocking JavaScript. If your content only appears after scripts execute, the visitor stares at white space — and so does a share of the AI crawlers now deciding whether to recommend you.
Cheap shared hosting. A $5/month plan puts you on a machine with hundreds of other sites. Under load — say, the first 100-degree day of the year — response times climb precisely when your traffic peaks.
What it costs, in terms that matter
The general research on abandonment is well known: the probability of a bounce rises sharply as load time goes from one second to five. But the HVAC-specific version is more useful.
A homeowner with a failed system in August is in the least patient state a customer is ever in. They are hot, they are stressed, and they have three tabs open. If yours takes six seconds and the competitor’s takes one, you frequently lose before your homepage renders. You never see it. There is no line in any report for the call that went elsewhere.
It compounds in two more places. Slow pages depress your rankings, so fewer people see you in the first place. And slow pages are disproportionately likely to be skipped by AI crawlers, which increasingly decide who gets named when someone asks an assistant who to call.
Diagnose it in five minutes
1. Run PageSpeed Insights. Go to pagespeed.web.dev, enter your homepage, and read the mobile tab. Ignore the big score for a moment and look for the “real users” field data section — that is what Google is actually judging you on. If it says there is insufficient data, your traffic is low enough that Google is falling back to lab estimates.
2. Count your plugins. In WordPress, open the plugins page. Over twenty is a warning. Over thirty is usually the whole story.
3. Check your largest image. Right-click your hero image, open it in a new tab, and check the file size. Anything over 500 KB for a single image is a problem.
4. View source. Right-click, view page source — the raw HTML, not the inspector. Search for your phone number and a service name. If they are not in that raw HTML, your content is being assembled by JavaScript, which hurts both speed and machine readability.
What actually fixes it
Honestly: sometimes not much is needed, and sometimes the site needs replacing.
If the site is fundamentally sound, real gains come from compressing and correctly sizing images, removing plugins you do not use, adding proper caching, and moving to better hosting. That can take a mediocre site to a passing one.
If the site is a page-builder site with thirty-plus plugins, you are optimizing something whose architecture is the problem. Each fix buys a fraction of a second against a structure that keeps adding weight every time someone edits a page.
The alternative is a static site. The pages are built in advance, so the server sends finished HTML rather than assembling it per visit. There is no database query, no plugin chain, no builder engine. It is why static builds routinely load in under a second — and why they do not slow down over time as content accumulates, which is the part contractors notice most in year two.
The tradeoff is real and worth stating: static sites are less trivially editable than WordPress. You gain speed, security, and stability; you give up the ability to install a plugin on a whim. For a contractor site — where the content changes a few times a year, not daily — that is usually a good trade. For a site needing constant self-service editing, it may not be.
The realistic benchmark
A well-built contractor site should load its main content in under one second on mobile, score in the high 90s on PageSpeed mobile, and hold up under a heat-wave traffic spike without slowing down.
If yours takes six seconds, that is not a small optimization gap. That is roughly the difference between being the first call and not being called.
Sources: Google Search Central Core Web Vitals documentation and 2026 thresholds; Chrome User Experience Report methodology; PageSpeed Insights field data guidance.