Roofing SEO goes wrong in one predictable way: it gets judged too early, on the wrong number. A roof replacement can take weeks to go from the first search to a signed contract. Inspection, estimate, insurance back-and-forth, a second visit with the spouse. If you judge your pages at the end of the month they brought in the inspection, they look like failures. If you judge them on traffic, they look like successes whether or not a single roof sold.
This guide covers what to build (service pages, city pages, storm pages, your Business Profile) and spends real time on the part most roofing SEO advice skips: keeping the search source on the lead through the whole sales cycle, so you can see which pages sell roofs. It sits under the SEO hub, which explains the measurement chain all the trade guides share.
What roofing searchers are actually asking
Roofing searches fall into four groups, and they want different things from a page.
| Search group | Typical phrasing | What they need to see | The call to action that fits |
|---|---|---|---|
| Repair | roof leak repair, missing shingles, flashing repair | That you do small jobs, how fast you come out | Call now, or book a repair visit |
| Replacement | roof replacement, new roof cost, metal roof installer | Materials you install, what drives price, warranties, financing if offered | Book a free inspection and estimate |
| Storm and insurance | hail damage roof, wind damage inspection, roof insurance claim | What to check, what an inspection covers, how you work with the claim | Book an inspection; photos sent after |
| Commercial | flat roof repair, TPO, commercial roofing contractor | Systems you work on, maintenance programs, references | Request a site visit |
Almost every one of these is local. The searcher wants a roofer who serves their town, so your service area and your Business Profile carry as much weight as your pages.
Pages that rank and convert
Service pages. One page per service you want to sell, written for that searcher. A replacement page that doubles as a repair page serves neither. Say what the job involves, what changes the price (pitch, layers to tear off, decking, material), and how the inspection works. Real photos of your own jobs beat stock images every time.
Material pages. If you install metal, tile or specific shingle lines, a page for each is worth having. People researching a material are often further along than people searching "roofer near me."
City pages, done right. Google's spam policies list "multiple domain names or pages targeted at specific regions or cities that funnel users to one page" as doorway abuse.1 Its helpful content guidance asks whether a page offers "original information" and "first-hand expertise."2 For a roofer, that's easy to pass if you use your own records. Here's a working test.
The three-fact test for a roofing city page
- At least three facts true only of this area: roofs you've done there, the typical roof age or style in its neighborhoods, the permit office and inspection steps.
- Photos from jobs in this area, with the customer's permission.
- Reviews from customers in this area, quoted with permission, not invented.
- A clear statement of whether you serve the whole city or only parts of it.
- If you can't meet the first item, merge the city into a regional page instead.
Storm pages that don't go stale. The panic page ("Hail hit! Call now!") is useless a month later and reads like storm chasing. Build one standing page per region instead, written as a dated log. NOAA's Storm Prediction Center publishes daily tornado, hail and wind reports with county and location, marked preliminary.3 Use them to date each entry, add what you saw on inspections, and keep the advice (what to check from the ground, when to call, what an inspection includes) at the top. The page gets better with every storm instead of expiring.
Google Business Profile for roofers
For "roofer near me" searches, your profile often matters more than any page. Three rules from Google's own guidelines trip roofers up most.
- Service area, not a fake office. If customers don't come to your address, Google says to hide it. You can list up to 20 service areas by city or postal code, and the overall area shouldn't extend beyond about two hours' driving from your base.45
- Your real name. Adding extra words to the business name isn't permitted and can lead to suspension.4
- Categories. Google asks you to use as few categories as possible and to pick the most specific ones.4
Photos from real jobs, current hours and a steady flow of reviews do the rest.
Reviews from finished roofs
The right moment to ask a roofing customer is after the final walkthrough, when the yard is clean and the magnet sweep is done, not on tear-off day. Send the request the same day, with a photo of the finished roof if you have one. The guide to getting more Google reviews covers timing and wording; the roofing-specific point is simply to tie the request to job completion, not to the invoice date, which may come weeks later after insurance pays.
Technical basics in one checklist
You don't need to become a developer. You need a site that loads fast on a phone and tells Google plainly who you are.
Roofing site technical checklist
- Core Web Vitals in the Good range for real users: largest content in 2.5 seconds or less, responses to taps in 200 ms or less, layout shift 0.1 or less (Search Console shows this).
- Tap-to-call phone number at the top of every page on mobile.
- LocalBusiness structured data using the most specific type, RoofingContractor, with your name, address (or service area), phone and URL.
- Every service and city page indexed: check the Page indexing report in Search Console.
- One page per URL: no duplicate city pages reachable at two addresses.
- Photos compressed before upload; galleries are the usual reason roofing sites are slow.
Those thresholds come from Google's Core Web Vitals report.6 Google's LocalBusiness guidance asks for the most specific subtype, and schema.org lists RoofingContractor under HomeAndConstructionBusiness.78 One change worth knowing: Google stopped showing FAQ rich results in Search in May 2026, so FAQ markup no longer buys extra space on the results page.9
Tracking SEO to sold roofs
This is where roofing differs from every other trade. A plumbing call books today. A roofing lead might sell in ten weeks. So the source has to survive a long trip.
- 1
Read page performance in Search Console
Performance report, Pages tab: clicks and impressions for each page. Group them: replacement pages, repair pages, city pages, storm pages. That's the top of the funnel.
- 2
Make the form and the phone keep the source
Give organic visitors their own tracking number, or one per page group if volume allows. Make sure your web form passes its source onto the lead. Most form tools can add the page address in a hidden field.
- 3
Carry the source onto the inspection
When the office books the inspection, the job keeps the lead's campaign. No re-asking the homeowner how they heard about you three weeks later.
- 4
Keep it through estimate and sale
The estimate and the sold job inherit the same source. If a second visit or an insurance supplement creates a new job, link it to the first so the source isn't lost.
- 5
Read sold revenue after the cycle closes
Each month, look at inspections booked 90 to 120 days ago, by page group: how many sold, for how much. That's the number to judge pages on.
Sold revenue by landing page group (cohort view)
sold revenue from inspections booked in month M, by page group, read in month M + 4
Here's why the cohort view matters, with example numbers. Say a roofer's replacement pages brought in 20 inspection requests in April.
| Read in | Inspections from April | Sold so far | Sold revenue so far | What it looks like |
|---|---|---|---|---|
| End of April | 20 | 1 | $14,000 | Pages are failing |
| End of June | 20 | 5 | $71,000 | Pages are fine |
| End of August | 20 | 7 | $98,000 | Pages are a top channel |
Same 20 inspections, three different verdicts. These numbers are an example to show the shape, not a benchmark. Your own lag is in your records: the median days from lead to sold across your last year of replacements. Use that, not the 120 days above, once you have it.
Hiring a roofing SEO company: 8 questions
Most people searching "roofing SEO" are sizing up agencies. That's reasonable. These are the questions that separate reporting you can use from reporting that flatters.
- Who owns the website, the domain and the content if we part ways? Get it in writing.
- Which pages will you build in the first 90 days, and why those? You want named services and areas, not a page count.
- How will you handle city pages? If the answer is one template for 50 towns, walk away. See the doorway policy above.
- What will you do with storm events? A standing, dated page per region, or a stream of throwaway pages?
- Will you report by page group and ZIP? Traffic totals and keyword counts aren't enough.
- Can you join your reports to our sold jobs? They'll need our tracking numbers and form sources to do it.
- What happens to our Business Profile? Who has access, and will they ever change the business name or address?
- What's the reporting window for sold work? Anyone who judges roofing pages at 30 days doesn't understand roofing.
Tools like TradesForce now show local rank heatmaps and AI search visibility; whichever you use, ask for results by page and ZIP that you can check against your sold jobs.
If you'd rather put money into bought leads for a while, the roofing lead generation guide covers judging those on the same sold-revenue basis. And if you're comparing roofing with other trades, the HVAC SEO guide and SEO for contractors show how the same chain works when jobs book the same day.
How to measure it from your jobs
Metric
Inspection rate from organic search
How many organic leads become a booked inspection. Low numbers point at the office or the offer, not the pages.
(inspections booked ÷ organic leads) × 100
Where the numbers come from: Leads and jobs carrying the organic campaign, from your tracking numbers and form source.
Metric
Organic close rate, cohort
Of inspections booked in a month, how many sold within your sales-cycle window.
(sold jobs from month M inspections ÷ inspections booked in month M) × 100, read after the window
Where the numbers come from: Inspection jobs and sold estimates linked by the same campaign.
Metric
Sold revenue per 100 organic clicks
Lets you compare page groups of very different sizes on one scale.
(sold revenue from the page group's cohort ÷ Search Console clicks to the page group) × 100
Where the numbers come from: Clicks from Search Console's Pages tab; sold revenue from your jobs.
All three depend on clean lead source attribution: one source per lead, set when the lead arrives, never edited later from memory. The Search Console guide for contractors walks through reading the Pages tab and grouping pages. TradesWork doesn't connect to Search Console: you read page performance there and match it to jobs in TradesWork. Want call sources on the job automatically? See how tracking numbers work in TradesWork Phones.
Free download · ExcelField Service KPI ScorecardTrack the 12 numbers that run a service business, week by week, with formulas already built in.Footnotes
-
Google Search Central, "Spam policies for Google web search," doorway abuse. https://developers.google.com/search/docs/essentials/spam-policies ↩ ↩2
-
Google Search Central, "Creating helpful, reliable, people-first content," self-assessment questions. https://developers.google.com/search/docs/fundamentals/creating-helpful-content ↩
-
NOAA Storm Prediction Center, storm reports: daily tornado, hail and wind reports with county and location; "All Reports Are Considered Preliminary." https://www.spc.noaa.gov/climo/reports/ ↩
-
Google Business Profile Help, "Guidelines for representing your business on Google": service-area businesses, business names, categories. https://support.google.com/business/answer/3038177 ↩ ↩2 ↩3
-
Google Business Profile Help, "Manage your service area": up to 20 service areas; about 2 hours of driving time. https://support.google.com/business/answer/9157481 ↩
-
Search Console Help, "Core Web Vitals report": Good thresholds for LCP, INP and CLS, from real-user data. https://support.google.com/webmasters/answer/9205520 ↩
-
Google Search Central, "Local business (LocalBusiness) structured data": use the most specific LocalBusiness sub-type possible. https://developers.google.com/search/docs/appearance/structured-data/local-business ↩
-
schema.org, RoofingContractor (Thing > Organization > LocalBusiness > HomeAndConstructionBusiness > RoofingContractor). https://schema.org/RoofingContractor ↩
-
Google Search Central, Search updates changelog: FAQ rich results no longer appear in Google Search starting May 7, 2026. https://developers.google.com/search/updates ↩