Mistakes 1 and 2: a slow site, and no page for the service you sell
Mistake one is a slow site. If your pages crawl in at four, five, six seconds, you lose twice. Google sends its bot to read your site, and a slow site gets crawled less deeply and less often, so fewer of your pages ever get filed. Then the homeowner who does land on the page bounces before it paints, and Google watches that too. Speed is not a nice-to-have. It is a ranking input and a booking input at the same time. This is the first reason we hand-code static sites: a page that loads under 2 seconds gives the bot and the buyer nothing to wait on. If your site runs on a stack of plugins, speed is usually the first place you are bleeding.
Mistake two is having no page for the thing a buyer actually searches. Google can only rank pages you have. If a homeowner types "tankless water heater replacement" and your site has one "Services" page that lists everything in a bullet list, you have nothing specific enough to rank. The fix is one real page per service you sell, each named the way a buyer searches for it. A plumber needs a page for water heater replacement, a page for drain cleaning, a page for repiping, not one page that mentions all three in passing.
There is a reason to build a page per service beyond just having something to rank. One well-built service page catches dozens of related searches at once. A real "water heater replacement" page also picks up "water heater install cost," "replace hot water heater," and "tankless vs tank" without a separate page for each. That is why per-keyword pricing is a red flag: the page, not the keyword, is the unit of work. A shop charging you by the keyword is billing for the wrong thing.
These two mistakes stack. A fast site with no service pages ranks for nothing, and a pile of service pages on a slow site never gets read. Fix the speed first so the bot can work, then build the pages that catch the searches. An audit tells you which of the two is hurting you more, usually in 1 to 3 business days, and it changes what you should spend on next.
Mistake 3: one page trying to rank in every town you serve
Almost every contractor who works more than one town makes this mistake at some point. You serve six cities, so you write one page that says "proudly serving Naples, Bonita Springs, Estero, Fort Myers, Cape Coral, and Marco Island," and you assume Google will rank you in all six. It will not. A single page with a list of town names is one page, and Google ranks it in maybe one of those markets, usually your home city, and ignores the rest.
The fix is a page per place you actually work. Not a spun template with the town name swapped in, which is its own mistake we get to below, but a real page that speaks to that specific market: the neighborhoods, the kind of homes, the jobs you do there. A roofer working tile roofs in one town and shingle in another has genuinely different pages to write, and Google can tell the difference between a real one and a mail-merge.
Where this gets tricky is the line between organic service-area pages and your map-pack presence. The pack that shows up under the map is powered by your Google Business Profile, reviews, and citations, which is a separate lane (Local SEO). The organic service-area pages this section is about are the blue-link results below the map, and they are yours to build in the SEO lane. You want both, and a good shop tells you which one your problem lives in. But the organic side starts with a simple rule: if you want to rank in a town, you need a real page about that town. One page cannot be in six places at once.
Owners resist this because six real pages sound like six times the work, and done as filler they would be. Done right, they are the difference between showing up in one market and showing up in all six. If a town is worth driving your trucks to, it is worth a page that speaks to it. If it is not, leave it off. The page count should match the map you actually work, not a wish list.
Mistakes 4 and 5: thin, spun content and no schema markup
Mistake four is thin or spun content. This is the trap contractors fall into when they hear "you need more pages" and take a shortcut. They spin up forty near-identical city pages with the town name swapped, or they publish 200-word service pages that say nothing a buyer could not guess. Google has caught this pattern for years. A page that is thin gets ignored, and a batch of spun duplicates gets one indexed and the rest dropped, or worse, drags the whole site down. Volume without substance is not coverage. It is a liability.
The honest version is slower and it holds: real pages that describe the actual job, what you do, how, what a homeowner should expect, what it costs to think about. We tell owners that 94-plus cluster pages is typical for a market you genuinely want to own, but every one of those pages has to earn its place. A thin market may need far fewer. The number is coverage, not a quota to hit with filler.
Mistake five is no schema markup. Schema is the invisible labeling that tells Google "this is a service, this is a business, this is a review, this is an FAQ." Without it, Google has to guess what your page is, and guessing costs you the rich results and the clean pull into AI answers. Contractors skip schema because they never see it, but it is one of the highest-value things on a page for the effort it takes. It is also what makes you quotable when a homeowner asks ChatGPT or reads a Google AI Overview instead of scrolling the blue links. A page with clean schema hands the machine labeled facts. A page without it hands the machine a puzzle.
These two mistakes are opposites that share a cause: treating pages as a checkbox instead of a job. Thin content is a page built to exist. Missing schema is a page built to be read by people but not by the machine reading for them. The fix for both is the same discipline: build each page to genuinely answer the search and label it so Google and the AI answers can lift the facts cleanly. That is the difference between a page that fills a slot in a sitemap and a page that competes.
Mistakes 6 and 7: no internal links and ignored technical errors
Mistake six is a site with no internal links. Most contractor sites are a set of islands: a home page, a few service pages, a contact page, none of them linking to each other beyond the top nav. That wastes ranking strength. When your service pages link to each other, and your guides link down to the service pages that book the job, you spread ranking power around your own site and you give both Google and a visitor a path to follow. A homeowner reading your roof-repair page should be one click from your gutter page. Internal links are free, they are entirely in your control, and skipping them leaves ranking strength stranded on pages that never pass it along. The anchor text matters too: a link that reads "gutter guard installation" tells Google what the target page is about, while a link that just says "click here" tells it nothing. Name the destination in the link, and every internal link doubles as a small ranking signal.
Mistake seven is ignoring the technical errors piling up under the hood. Broken links, pages that redirect in a chain, duplicate versions of the same URL, a missing or wrong sitemap, pages accidentally blocked from Google, images with no alt text: none of these show up when you glance at your site, and all of them quietly cost you. A broken internal link is a dead end for the bot. A page blocked in your robots file cannot rank no matter how good it is. A crawl that keeps hitting errors comes back less often.
Here is a short list of the technical mistakes we find most on contractor sites:
- Pages accidentally set to "noindex" or blocked in robots.txt, so they cannot rank at all.
- Redirect chains and broken links that dead-end the crawl.
- Duplicate URLs (with and without www, with and without a trailing slash) splitting your ranking strength.
- A missing, stale, or malformed sitemap, so Google never finds your newest pages.
- Images with no alt text and no compression, dragging speed and accessibility down.
Individually these look small. Together they are why a decent site never quite ranks. An audit surfaces the whole list, and most of it is a one-time fix.
Mistake 8: chasing links instead of earning them
You have seen a competitor with an uglier, slower site sitting above you, and the reason is usually links and trust. Google treats a link from another site as a vote, and a business with more real votes from relevant places outranks one without them, even when the page itself is weaker. So contractors go looking for links. That is where mistake eight starts.
The mistake is buying links in bulk. A shop promises hundreds of links in a month, or you find a service that sells a thousand directory links for cheap, and it feels like a shortcut. It is the exact pattern Google penalizes. Junk links from link farms and irrelevant directories do not just fail to help, they can actively drag your site down. Google reads the relevance and reputation of the site doing the linking, so ten links from real sources in your field beat a thousand from nowhere.
Earning links is slower and there is no way around that. For a contractor, the real ones are the mentions a legitimate local business naturally has:
- Supplier and manufacturer pages that list you as a certified installer or dealer.
- Trade associations and licensing bodies in your field.
- Local sources: chambers of commerce, suppliers, community sites, sponsorships.
- Real coverage when a local outlet or blog writes about a job you did.
A handful of good links earned over months beats any bundle, and it compounds the way content does. This is also the line where organic links hand off to the citations and reviews that power your map pack, which live in the Local SEO lane. Both matter. But for organic ranking, the honest truth is that trust is earned, not purchased, and any shop selling it by the thousand is selling the thing that gets sites demoted.
Mistake 9: quitting before the calendar turns
The ninth mistake is the one that undoes all the work fixing the other eight: quitting too early. SEO is not a switch. Competitive terms take 4 to 9 months, and an owner who expects page one in thirty days fires a shop that is actually winning, or worse, trusts one that promised fast results and delivered nothing that lasts. Either way the work resets and the clock starts over.
The delay is built into the machine. Google has to crawl and index new pages, then watch how searchers respond, then slowly decide the pages deserve a higher spot. Links take time to be found and counted. Trust is a track record, and a track record cannot be rushed. Anyone promising page one in a month is either lying or aiming at terms nobody searches.
What keeps you from quitting is knowing what real progress looks like before the phone rings. Here is the honest calendar:
| Timeframe | What real progress looks like |
|---|---|
| Month 1 to 2 | Technical mistakes fixed, first real pages live and indexed, site loading under 2 seconds |
| Month 2 to 4 | Long-tail and low-competition terms start ranking; impressions climbing in Search Console |
| Month 4 to 6 | Mid-competition service and city terms moving into striking range |
| Month 6 to 9+ | Competitive money terms reaching the top of page one; calls following |
The leading signals show up long before booked jobs do: rising impressions and clicks, more pages indexed, easy terms ranking first. If a shop can show you those in months one through four, the machine is turning and the money terms are coming. If it cannot, that is your answer. Judge the early months on the leading signals and the booked-job math by month nine. Quitting at month three because the phone has not exploded yet is quitting right before the part you paid for.