Why does page speed decide who gets the call?
A homeowner searching for a roofer, a plumber, or an HVAC company at 9pm with water coming through the ceiling is not browsing. They are in a hurry and they are scared. They open two or three sites from the search results, and the first one that loads gets their attention. The other two get closed before they ever paint a pixel. That is the whole contest, and it is decided in the first two seconds.
Speed is not a vanity metric for a contractor. It is the front door to your quote form. Every extra second of load time is a second the homeowner spends staring at a white screen or a spinner, and a fair share of them tap back to the search results and pick the next name. Google has measured this across billions of visits: as load time climbs from one second to three, the odds of a bounce roughly double. Your competitor did not out-sell you. Their site just showed up first.
There is a second lever most contractors miss. Google uses page speed and mobile responsiveness as a ranking signal, so a slow site does not just lose the visitors it gets, it gets fewer visitors to begin with. And AI answer engines like ChatGPT and Google AI Overviews prefer clean, fast, well-structured pages when they decide which businesses to quote. Slow, tangled sites are harder for them to read and less likely to get named.
So the math is simple. Faster site, more visitors from search, more of those visitors staying, more of them reaching a working form. Under 2 seconds is not a bragging right. It is the difference between a lead and a bounce, repeated a few hundred times a month.
It also compounds with everything else you pay for. If you run Google Ads to a slow landing page, you are paying for the click and then losing the visitor at the door, which drags your cost per lead up and your quality score down. The same click to a fast page books more jobs for the same spend. Speed is not one line item. It is the multiplier under every other line item.
What actually makes a contractor site slow?
Almost every slow contractor website we audit is slow for the same handful of reasons. None of them are mysterious, and none of them require a homeowner to have a bad phone. They are build problems.
- A WordPress theme plus a page builder. Elementor, Divi, WPBakery, and their cousins ship an enormous pile of code so the site can be edited by dragging boxes. The homeowner downloads all of that weight to read three sentences and a phone number.
- Plugins stacked on plugins. A booking plugin, a slider plugin, a popup plugin, a security plugin, an SEO plugin. Each one adds its own scripts and stylesheets that load on every page, whether that page uses them or not.
- Full-size photos. A camera shoots a 4,000-pixel-wide, 6MB photo of a finished roof. Uploaded straight to the site, it loads at full size on a phone that only has 400 pixels to show it. Ten of those on a gallery page and the site crawls.
- No caching and cheap shared hosting. The $8/month host rebuilds the page from a database on every single visit, and it shares one tired server with hundreds of other sites.
- Third-party junk. Chat widgets, review-badge scripts, five different tracking pixels, an embedded font service loading nine weights. Each one is a call out to someone else's server before your page can finish.
Notice the pattern. The slowness is not in your content. It is in the machinery underneath the content. A roofer's site does not need a database and forty plugins to show a phone number, a service list, and a gallery. The heavier the platform, the more of these problems you inherit for free.
There is also a quiet culprit most contractors never look at: the font stack. A lot of template sites load six or eight font weights from a font service before any text can render, which means the homeowner stares at blank space or a flash of unstyled text while the fonts download. One well-chosen font family, loaded properly, removes that stall entirely. It is a small thing that shows up as a real half-second on a phone.
How do you measure it honestly?
Do not measure your site on your office desktop over your own fast wifi. You have visited it a hundred times, so it is cached, and your connection is nothing like the homeowner standing in a driveway on one bar. Measure it the way a real visitor arrives: cold, on a phone, on a normal mobile connection.
Two free tools tell you almost everything. Run your homepage and one service page through Google PageSpeed Insights, and check them in Google Search Console under the Core Web Vitals report. Ignore the single 0-to-100 score for a second and read the three numbers underneath it, because those are what the homeowner actually feels.
| Metric | What it measures | Good on mobile |
|---|---|---|
| LCP (Largest Contentful Paint) | When the main content appears | Under 2.5 seconds |
| INP (Interaction to Next Paint) | How fast the page responds to a tap | Under 200 ms |
| CLS (Cumulative Layout Shift) | How much the page jumps while loading | Under 0.1 |
LCP is the one that decides the two-second race, so start there. INP catches the site that looks loaded but freezes when the homeowner taps the menu. CLS catches the site where a slow-loading photo shoves the Call button down half a second after they aimed for it, so they tap an ad instead. All three matter, but a fast, stable, tappable page is the goal, not a perfect score to frame on the wall.
Two more honest checks. First, watch someone who is not you open the site on their own phone for the first time. If they wait, sigh, or hunt for the phone number, no score can argue with that. Second, check the numbers on a service page and a gallery page, not just the homepage. The homepage is usually the one that got optimized. The interior pages, where a homeowner actually reads about your roofing or HVAC work, are often twice as heavy and nobody ever tested them.
Can you speed up the WordPress site you already have?
Yes, up to a point, and it is worth trying before you rebuild if the site is otherwise fine. The wins fall in a rough order of effort versus payoff.
- Compress and resize every image. This is the single biggest lever on most contractor sites. Serve photos at the size they actually display, in a modern format like WebP, and lazy-load anything below the fold. A gallery page can drop from 12MB to under 1MB with no visible quality loss.
- Add real caching and a CDN. A caching plugin plus a content delivery network stops the server from rebuilding the page on every visit and serves it from somewhere near the visitor. Cloudflare's free tier does a lot of this.
- Cut plugins you do not need. Every plugin is weight and a security risk. If you are not using it this month, remove it, do not just deactivate it.
- Kill third-party scripts that do not earn their load. The chat widget nobody answers, the second analytics tool, the review badge. Each one is a tax on every page.
- Upgrade off the cheapest shared hosting. Managed hosting or a faster plan removes the bottleneck the plugins sit on.
That gets a genuinely bloated WordPress site from four or five seconds down toward two. What it usually cannot do is get you comfortably under two seconds and keep you there, because the theme and the CMS itself are still loading on every visit, and the next plugin update can undo your work overnight. If you have already done all of this and the site is still sluggish, you are not fighting your settings anymore. You are fighting the platform.
Be realistic about the labor, too. Doing this well is a few hours of careful work per site, and it is not one and done. Plugins update, someone adds a new photo at full size, a new tracking script gets pasted in, and six months later the site has crept back up to four seconds. Speed on a CMS is a garden you have to keep weeding. That maintenance cost is the part contractors rarely budget for, and it is worth weighing against a build that stays fast on its own.
Why does hand-coded static win the speed race?
A static site is the page a homeowner needs and nothing else. No database to query, no theme to assemble on the fly, no plugin scripts riding along. The HTML, the small amount of CSS, and the little bit of JavaScript are written by hand and served as finished files from a fast edge network. There is nothing to rebuild on each visit, so there is nothing to slow down.
That is the difference in one sentence: WordPress builds the page when the visitor asks for it, and a static site already built the page. One of those is always going to be faster, and it is not close. It is why the sites we build load under 2 seconds on a phone as a matter of course, not as a number we chase with plugins after the fact.
There is a durability angle that matters just as much for a busy contractor. A static site has almost no attack surface, no plugin updates that break the layout, and nothing that quietly gets slower as it ages. It performs the same in month one and month thirty. You are not paying someone to re-optimize it every quarter because a plugin update bloated it again.
The tradeoff is honest: a static site is not edited by dragging boxes in a browser, so it is built by someone who writes code. For a contractor that is a feature. You are not the one editing the site day to day, you are the one whose phone needs to ring, and clean code is what keeps the load time down and the page readable to Google and to AI answer engines. When you do need a new service page or a fresh batch of job photos, you send them over and they get added properly, at the right size, without bloating the site.
There is one more payoff that shows up on the phone bill. A static site served from an edge network holds its speed under a traffic spike, the kind you get after a storm rolls through and every homeowner in the county searches for a roofer at once. A shared-hosting WordPress site can buckle exactly when you need it most. If you want to weigh building your own versus hiring for that, our guide on DIY builders versus hiring a designer walks through it, and our cost guide covers what the build runs.
What speed target should a contractor actually aim for?
Aim for the largest content on the page, usually your hero headline and phone number, to appear in under 2 seconds on a mobile connection, and for the Call button to be tappable the instant it shows. If you hit that, you have won the load-time race against nearly every competitor in your market, because most of them are sitting at four seconds and do not know it.
Set expectations by device honestly. Desktop is easy and almost never the problem. Phones on cell networks are where jobs are won and lost, because that is where most home-service searches happen, at night, in a driveway, in a parking lot. Test on mobile, optimize for mobile, and desktop takes care of itself.
| Load time (mobile, cold) | What it means for your leads |
|---|---|
| Under 2 seconds | Homeowner stays, reads, taps Call. You win the race. |
| 2 to 3 seconds | Some drop off. Fixable with images, caching, and hosting. |
| 3 to 5 seconds | You are losing a real share of leads before they see you. |
| Over 5 seconds | Most visitors leave. The site is costing you jobs. |
Do not let a page-speed score become the goal by itself. A 100 score with a broken quote form and no phone number in the header is a slow, expensive way to lose leads politely. Speed is the front door. Once the homeowner is through it fast, the page still has to make the case and put the Call button where a thumb lands. Fast and useless still loses. Fast plus a clear offer plus a working form is what turns a visit into a job. Speed just makes sure they get far enough to see the rest.