You built a website. Maybe you paid a cousin $500 for it, maybe you dragged boxes around in Wix for a weekend, maybe an agency charged you $4,000 and vanished. It has been six months. You search your own service and city, scroll past the ads, scroll past the map pack, scroll past Angi and Houzz and three competitors, and you are nowhere. So you did what every frustrated owner does: you typed the exact question into Google and landed here.
Here is the hard truth before anything else. A contractor website not ranking is almost never one big mysterious problem. It is usually five or six small, boring, fixable problems stacked on top of each other. Google is not punishing you. It simply has no reason to trust your site over the ten other roofers, deck builders, and plumbers who did the boring work you skipped.
Those numbers are directional, not gospel. Your mileage varies by market. But every one of them points at a pattern I see on almost every contractor site that walks in the door: fast to build, slow to load, thin on content, and invisible to local search. Let us go reason by reason.
Reason 1: You built a brochure, not service pages
This is the number one killer, so it goes first. Most contractor sites are a single homepage with a slider, an About paragraph, a photo gallery, and a contact form. You offer roof repair, roof replacement, gutter installation, storm damage, and metal roofing, and you expect that one homepage to rank for all five. It will not. Google ranks pages, not businesses. A page that tries to be about everything is about nothing.
The fix is structural. Every distinct service you sell gets its own dedicated page with its own URL, its own title tag, and its own body written around how a customer actually searches. Roof repair and roof replacement are two different searches with two different buyers. They need two different pages. This one change moves more contractors onto page one than any clever trick ever will.
- Separate page per service (roof repair, replacement, gutters, metal)
- Each page 600 to 1,200 words answering real questions
- City or service-area pages for each town you cover
- Clear title tag: service plus city
- Photos compressed and named descriptively
- One homepage trying to rank for everything
- Two paragraphs of we do quality work text
- No mention of the towns you actually serve
- Title tag says Home or Welcome
- 12 photos at 6MB each straight off the phone
Reason 2: Your pages are thin and say nothing
Even when contractors do build service pages, the pages are hollow. Three sentences, a stock photo, and a call now button. Google reads that as a page with nothing to offer, so it ranks the competitor who actually explained the difference between a tear-off and an overlay, what a job costs in ranges, how long it takes, and what a warranty covers.
You do not need to write like an English major. You need to write like the expert you already are. Answer the questions you get on every estimate call. What does it cost. How long does it take. What goes wrong. How do I know if I need repair or replacement. That content is not fluff, it is the exact thing your buyer is searching for, and it is the thing your competitor was too lazy to write.
Reason 3: Your site is slow, and it is the template's fault
Here is where the Wix and Squarespace template bites you. Those builders are fine for a five-page site, but contractors load them with heavy sliders, video backgrounds, and photo galleries full of raw phone images at 5 to 10 megabytes each. The page crawls, especially on a phone on a job-site LTE connection. Google measures that load time as part of Core Web Vitals, and a slow mobile page gets pushed down.
Run your own site through Google PageSpeed Insights right now. Type your URL, hit analyze, and look at the mobile score. If it is red or under 50, images are almost always the culprit. Compress every image to under 200KB before it goes on the site, use modern formats like WebP, kill the auto-playing video background, and cut the homepage slider down to one static hero. You can often halve load time in an afternoon.
Reason 4: You have no local signals
Home services is a local game, and most of the money is in the map pack, the three-business box that sits above the regular results. If your site never names the towns you serve, has no city pages, and is not tied cleanly to a fully filled-out Google Business Profile, you are invisible in the exact place buyers look first. Google cannot rank you in Fort Worth if your site never says Fort Worth.
Your business name, address, and phone number, called your NAP, must be identical everywhere: on your site, on your Google Business Profile, and across every directory. A phone number that reads one way on your site and another on Yelp quietly erodes trust. Build a page for each core town you serve, embed a map, and make sure the profile is claimed, categorized correctly, and stacked with recent reviews.
The map pack is where home-service leads actually come from. This is the piece most contractor sites ignore.
See how our Local SEO service fills the map packReason 5: You have zero schema markup
Schema is a small block of code that tells Google in plain terms what your business is, where it works, and how to reach it. LocalBusiness schema, service schema, and review schema help Google understand and trust your pages, and they can earn you rich results like star ratings in the search listing. Almost no contractor template ships with it, and almost no cousin-built site has it. That is an easy edge sitting on the table.
You do not have to hand-code it. Tools and plugins generate valid LocalBusiness and service schema for you, and Google's Rich Results Test tells you instantly whether it is working. It is a one-time setup that pays off on every page. If you are on WordPress, a good SEO plugin handles most of this. If you are on a locked-down template builder, this is one more reason the platform is holding you back.
Reason 6: The mobile experience is broken
Google indexes the mobile version of your site, not the desktop one. So the site you proudly checked on your laptop is not the site Google is grading. Pull it up on your actual phone. Are the buttons tappable without pinching. Does a pop-up cover the whole screen. Is the phone number a tap-to-call link or just text. Can someone book an estimate in two taps. If any of that is clumsy, you are leaking both rankings and leads.
“The contractor who wins is rarely the best contractor in town. It is the one whose site loads fast, answers the question, and is easy to call from a phone in a driveway.”
Reason 7: Nobody links to you, so Google does not trust you
Backlinks, other websites linking to yours, are one of the strongest trust signals Google has. A brand-new site with zero links is a stranger. It is very hard to outrank an established competitor for a money keyword with no authority behind you. This is the slow lever, the one that takes months, which is exactly why most contractors skip it and stay stuck.
You do not need shady link schemes. You need the boring, legitimate links a real local business earns: your local chamber of commerce, supplier and manufacturer directories, industry associations, local sponsorships, and the reputable directories in your trade. A handful of clean, relevant local links beats a hundred junk ones, and it compounds over time.
Reason 8: You are chasing keywords you cannot win
The last reason is strategy. A new contractor site trying to rank for roofing, a single national head term crowded with Angi, Houzz, and national brands, is trying to win a fight it cannot win yet. Meanwhile the searches that actually turn into jobs, like emergency roof repair plus your town, or composite deck installer plus your suburb, are far less contested and far more likely to buy.
Go specific and go local. Service plus city beats service alone. Longer, intent-heavy phrases beat one-word dreams. You are not competing with Angi for a national term. You are competing with three local shops for a local one, and that is a fight you can win with the fixes in reasons one through eight.
The 15-minute contractor SEO self-audit
You can diagnose most of this yourself before you spend a dollar. Grab a coffee and run this checklist against your own site. Be honest. Every no is a lead you are leaving on the table.
- Structure: Does every service you sell have its own page with its own URL? If it is all on the homepage, start here.
- Content: Does each service page answer cost, timeline, and how to choose? Or is it three sentences and a photo?
- Speed: Run your URL through Google PageSpeed Insights. Is the mobile score red? Images are the usual cause.
- Local: Does your site name the towns you serve? Is your Google Business Profile claimed and full?
- NAP: Is your name, address, and phone identical on the site, the profile, and every directory?
- Schema: Use Google's Rich Results Test. Does LocalBusiness schema show up, or nothing?
- Mobile: Open the site on your phone. Is the number tap-to-call? Are buttons easy to hit?
- Authority: Search your business name. Do any real local sites link to you, or none at all?
We will run all eight checks on your site and tell you exactly what is holding it back, no pitch required.
Get a free contractor website SEO auditFix it in the right order
Do not do all of this at once and do not do it in a random order. Impact per hour of effort matters. Here is the sequence I would run for almost any contractor site, fastest wins first.
- Week 1: Compress every image and fix mobile load speed. Fastest measurable win.
- Week 1: Claim and fully complete your Google Business Profile, then fix NAP everywhere.
- Weeks 2 to 3: Split services into dedicated pages and write real content on each.
- Week 3: Add city or service-area pages for your core towns.
- Week 4: Install LocalBusiness and service schema, validate it, and clean up title tags.
- Ongoing: Earn a few clean local backlinks and collect reviews every single month.
None of this is magic. It is the boring, deliberate work most contractors never get around to because they are busy running actual jobs. That is fine. Fixing this is a skill and a full-time focus, which is exactly why agencies exist. If you would rather spend your week on rooflines and estimates than on schema markup and Core Web Vitals, hand it off.
We do the eight fixes above as a system, built specifically for home-service contractors.
See our Website SEO serviceBefore you decide, it helps to know what this costs, whether it is even worth it for your size of business, and how it stacks up against just running ads. We wrote honest breakdowns of all three so you can make the call with real numbers, not a sales pitch.
Real pricing, no vague ranges. See our plans at $900, $1,500, and $2,200 on the pricing page.
How much does contractor SEO cost?A straight answer on when SEO pays off and when it does not.
Is SEO even worth it for contractors?The honest tradeoff between slow, compounding SEO and fast, paid leads.
Contractor SEO vs Google Ads: which first?