Every contractor I audit has the same website structure: a homepage, an about page, a services page, and a contact form. Maybe a blog with three posts from 2022.
And every one of them is missing the pages that actually drive phone calls.
Here are the five. Not in order of how easy they are to build — in order of how many leads they're costing you right now.
1. Service + City Pages (You Probably Have Zero)
Your "Services" page is not a ranking opportunity. It's an organizational tool.
The page that actually shows up when a homeowner searches "AC repair Akron Ohio" is a page that says — in the H1, in the URL, in the first paragraph — "AC Repair in Akron, Ohio." Not a page that says "Our HVAC Services."
Every service you offer in every city you serve is a separate search query. Each one needs its own page.
A plumber in northeast Ohio who does water heater replacement, drain cleaning, leak detection, and whole-house repiping in Akron, Canton, Barberton, and Stow is sitting on 16 separate keyword opportunities. If they have one "Plumbing Services" page, they're ranking for zero of them.
What a service+city page needs:
- H1 that names the service and the city: "Water Heater Replacement in Akron, Ohio"
- 300+ words describing the service, your process, typical cost range, and what customers can expect
- A section on why hire a local plumber specifically (not a chain)
- 3-5 FAQ entries using the exact phrases homeowners search before calling
- LocalBusiness schema with your service area specified
- Internal links to your other service pages and your free estimate page
The pages don't need to be long. They need to be specific.
2. A /free-estimate Page
Every contractor website says "free estimates available." Almost none of them have a page that ranks for it.
"Free estimate plumber Akron Ohio." "Free roofing quote Columbus." "Free AC estimate near me." These are high-intent searches — homeowners already talking to someone else, getting a second opinion on their phone while standing in their driveway.
If you don't have a page, you're not in that comparison.
The page is straightforward:
- H1 with your trade and city: "Free Roofing Estimates in Akron, OH"
- What the estimate covers (be specific — "we'll assess your deck, underlayment, flashing, and gutters, not just count squares")
- What the visit looks like (who shows up, how long it takes)
- Your response time commitment ("within 2 hours on weekdays")
- The CTA form or phone number, with trust signals directly next to it
This page also feeds AI citation. When a homeowner asks ChatGPT "who gives free estimates for roofing near Akron," the AI pulls from pages that answer that question specifically. "Call for a free quote" buried in a header is not a page.
3. A Testimonials Page
Google reviews are on Google's platform. They are not crawlable content on your website. Search engines and AI tools can't synthesize them into rankings or recommendations.
A /testimonials page with structured markup changes that.
The difference is control and indexing. Your website testimonials are crawlable text that Google, ChatGPT, and Perplexity can actually read. They build topical authority around the services and locations mentioned. They surface in AI recommendation responses when structured as Review schema.
What every testimonial entry needs:
- Name, city, service type, and approximate date
- A real quote — not "great service, highly recommend" — something with a specific detail ("Joe found a leak in 20 minutes that two other plumbers missed")
- 80-150 words of context from you about the project
- JSON-LD Review schema so search engines can parse it cleanly
Group them by service category, not just chronologically. Your roofing testimonials in one section, HVAC in another. This creates indexed, keyword-rich content for each service rather than a generic praise page.
An AggregateRating in your schema — even conservative numbers — is what triggers star ratings in search results and AI citations.
4. A Cost Guide for Your Most Common Job
This is the highest-leverage page most contractors don't have.
Cost guide pages convert at 3x the rate of service pages. The reason is simple: homeowners who search "how much does it cost to replace a roof in Columbus Ohio" are already past the "should I do this" phase. They're in the "who should I hire" phase.
The page that answers the question wins the lead.
What makes it work:
- Honest, specific numbers with ranges and what affects price ("1,500 sq ft ranch home with 4:12 pitch, standard architectural shingles runs $9,000-$14,000 in central Ohio — add $1,500-$2,500 for ice and water shield, add 20-30% for steeper pitches")
- A table or breakdown showing what drives cost up and down
- Your process for how you estimate (what you look at, what you measure)
- FAQ section with the specific questions homeowners type before calling — "is roofing cheaper in fall," "does my insurance cover this," "how long does installation take"
The cost guide also feeds AI recommendations. When a homeowner asks Perplexity "how much does a roof replacement cost in Columbus," the page that shows up in AI results is the one with real numbers, not the one that says "pricing varies, contact us for a quote."
One cost guide per trade is a good start. One per major service is better.
5. A Portfolio Page With Descriptions (Photos Alone Don't Rank)
Most contractor portfolio pages are photo grids. Beautiful, invisible, zero lead generation.
Search engines can't read images. AI tools can't cite photos. A grid of before-and-after shots with no text is the same as a blank page to Google.
What makes a portfolio page work for SEO:
- Each project entry is a mini case study: service type, location, problem, solution, outcome
- 150-200 words per project, not a caption
- Before + after photos at the same angle (this builds trust and is crawlable via alt text)
- File names and alt text that include service and city: "water-heater-replacement-akron-ohio-before.jpg" + "Tankless water heater replacement in Akron, Ohio — old 40-gallon electric swapped for a Navien NPE-240S2"
- Organize by service category so each section targets a different keyword cluster
A portfolio entry for "kitchen remodel in Copley, Ohio" with a 200-word write-up describing the scope, timeline, materials, and outcome is a ranking page. A photo with the caption "kitchen remodel" is nothing.
The best portfolio pages use these entries to create internal link equity back to the relevant service+city pages. The Copley kitchen remodel links back to your "kitchen remodeling in Summit County, Ohio" service page. Both pages get stronger.
The Audit That Finds Them All
Every page missing from your site is a lead going somewhere else.
The fastest way to see your specific gaps — service+city pages, cost guides, estimate pages — is a brand audit that maps what you have against what your market is searching.
Get your free audit at vibetokens.io/start. We pull your GBP, run your site through PageSpeed, identify your keyword gaps, and show you the specific pages you're missing. Delivered in about two minutes.
The audit finds the pages. You decide which to build first.
Related guides
If you're ready to start building, these walk through each page type in detail:
- Service page formula that ranks and converts
- City pages that rank for local searches
- Free estimate page guide
- Testimonials page with Review schema
- Cost guide strategy and structure
- Portfolio page that works for SEO
Run your free brand audit to see your specific missing pages →
