SEO Roofing: The Owner's 90-Day Fix List That Books Year-Round Jobs
You don't have a roofing SEO problem. You have an oversight problem. The agency you hired isn't dumb and isn't lazy — they're doing exactly what your contract incentivizes them to do, which is produce reports. Here's the 90-day fix list that turns the same retainer into a phone-ringing program.
Roofing owners hire SEO agencies, then six months later wonder why the phone isn't ringing more. The answer is almost always the same: nobody on the owner side is steering the program. The retainer drifts toward the work that's easy to invoice — blog posts, link-building, monthly PDFs — and away from the work that books jobs: GBP discipline, review velocity, conversion-focused landing pages.
This isn't an agency-bashing post. Good agencies exist. But every agency I've ever worked with does better work for owners who ask sharper questions and hold sharper KPIs. The 90-day fix list below is exactly that — six interventions any roofing owner can run, in order, with the agency in the room or not.
The Setup: Why Owner Inattention Costs Roofers More Than Bad Agencies
Roofing has a unique SEO challenge: the buyer's decision happens fast (often within 24–72 hours of damage) and the volume is lumpy (steady year-round with massive storm spikes). Most SEO programs are built for steady B2B service businesses where conversion windows are weeks. They miss roofing's actual buying pattern.
The fix is six owner-side interventions. None require you to know HTML. All require you to ask the agency one specific question per topic and refuse to renew until the answer is right.
Your agency reports rankings — not calls. You're paying a retainer that has no contractual tie to the phone ringing
What it is: Every month you get a PDF showing keyword rank changes, organic traffic, and 'domain authority' moves. None of those metrics convert into dollars. Until the retainer's deliverable is 'X qualified roofing inbound calls/month from organic + GBP, measured by CallRail or equivalent,' the agency has no contractual reason to prioritize the work that books jobs.
What it costs: Roofers without a call-volume KPI in their SEO contract overpay by 30–50% on a 12-month basis — about $10K–$20K wasted per year on rank reporting that doesn't book a single job.
How to fix it: Amend the contract this month. New KPIs: monthly inbound calls from organic + GBP (tracked), 30-day rolling cost-per-call, qualified-call rate. If the agency won't sign to a call-volume KPI, they are an SEO performance-theater company. Replace them with one who will. Plenty exist.
Example: A roofing owner in Phoenix re-papered his retainer with call-volume KPIs in Q1. The same $2,800/month went from producing 18 attributable inbound calls to 51 by Q4. Same agency, same retainer, sharper deliverable.
Nobody inside your company owns the GBP — so the highest-ROI surface in roofing SEO gets touched twice a quarter
What it is: GBP drives 50–70% of mobile local-roofer search. It is also the single asset most roofing owners outsource to an agency that touches it once a month. The result: stale photos, no Google posts, slow review responses, and a profile that signals 'inactive' to Google's local algorithm.
What it costs: A neglected roofing GBP costs the contractor 30–50% of attainable map-pack inbound — about $5K–$15K/month in lost direct calls. During storm season the cost is 3–5x that.
How to fix it: Assign GBP ownership to an internal person — typically your office manager or marketing coordinator. Weekly checklist: 1 Google post about a recent job or service area, 3 new job-site photos uploaded, all new reviews responded to within 24 hours, any new Q&As populated. Time required: 30–45 min/week. Cost: free. The agency can support and audit but cannot 'own' this surface.
Example: A roofer in San Antonio moved GBP ownership in-house in February. Within 90 days the profile had 180+ new original photos, 22 fresh reviews, and ranked #1 in the map pack for two priority queries. The agency's GBP line item came off the contract.
Your site loads slowly and nobody's been authorized to fix it — so half the mobile homeowners bounce before they see your phone number
What it is: Your roofing site probably loads in 4+ seconds on mobile. 32% of mobile visitors leave before a 4-second page finishes loading. The agency points at the developer; the developer points at the hosting; the hosting points at the theme. Nobody fixes it. You bleed every day it stays broken.
What it costs: A slow site costs a roofer 25–40% of qualified mobile traffic — $3K–$8K/month in lost conversion on a typical mid-sized contractor's ad + SEO spend. Worst during storm season when search volume spikes.
How to fix it: Run PageSpeed Insights on your homepage and top service page. Anything under 70 mobile = sprint. Compress images to <200KB, lazy-load below-the-fold images, defer chat widgets and analytics scripts, install Cloudflare CDN, move off shared hosting (GoDaddy/HostGator) to managed hosting (Kinsta, Flywheel, Rocket.net). Expected one-time cost: $200–$800 freelancer + $30/month hosting upgrade. Payoff: weeks.
Example: A roofer in Jacksonville cut his mobile load time from 5.4s to 1.6s with a one-week sprint in April. Mobile organic traffic to service pages jumped 41% over the following 75 days at zero additional ad spend.
Your review request workflow is manual — so the techs who do five-star work aren't capturing the five-star reviews
What it is: Roofing crews finish jobs, get verbal thanks, and drive away. The review request — if it happens at all — is buried in an email a week later or never sent. Your competitors who automate same-day SMS requests capture 5–10x your review velocity, which directly suppresses your map-pack ranking.
What it costs: Most roofers capture <5% of completed-job-to-review conversion. The disciplined ones capture 25–35%. On a 200-job/month contractor, the gap is 40–60 missed reviews per month — review velocity that costs $8K–$15K/month in lost map-pack inbound.
How to fix it: Automate SMS the moment a job is marked complete in your CRM (AccuLynx, JobNimbus, Roofr, Housecall Pro, etc.). Use Podium, NiceJob, Birdeye, or Zapier+Twilio. One-tap Google review link in the SMS. Send within 1 hour of completion while the homeowner is still standing in the driveway. Cost: $200–$400/month or $150 one-time DIY.
Example: A roofer in Kansas City installed an SMS review workflow in March. Reviews/month went from 2.1 to 13.8. Six months later he overtook a longtime competitor for the city's top map-pack slot despite having half the lifetime review count when he started.
Your service pages have no schema markup — so Google can't show your FAQ snippet and your competitor's page eats your click-through
What it is: Schema is the JSON that tells Google explicitly: this is a service page, here is the service area, here are 8 FAQs, here is the aggregate rating, here are business hours. Without it, Google has to guess. Pages with schema get FAQ snippets that occupy 3–4x the SERP real estate and capture 30–50% more clicks at the same rank.
What it costs: A roofer without schema on his top 5 service pages leaves 25–40% of attainable organic click-through on the table — about $3K–$7K/month at steady state, more during storm spikes.
How to fix it: Add Service, LocalBusiness, and FAQPage schema to every service page. RankMath or YoastSEO on WordPress handles it with light config. Validate every page in Google's Rich Results Test. Budget: 1–2 days work, then permanent payoff.
Example: A roofer in Birmingham schema-marked his top 6 service pages in May. FAQ snippets appeared on 11 queries within 60 days. Organic click-through on his three top pages roughly doubled with no ranking change — pure SERP real estate capture.
You have no call tracking by channel — so you can't tell which marketing dollar is producing the phone calls
What it is: You're spending money on SEO, ads, directories, and probably one referral source. You have no idea which is producing the calls. Budget allocation is guesswork. Usually that means renewing everything, often at 2–3x the right level for the underperforming channel and 30–50% the right level for the winner.
What it costs: Without call tracking by channel, roofers misallocate 30–50% of marketing budget. On a typical $5K–$8K/month roofer, that's $1.5K–$4K/month, $18K–$48K/year pointed at the wrong channel.
How to fix it: Install CallRail. ~$45/month for the entry tier. One tracking number per channel, dynamic insertion based on traffic source. Weekly report: calls by source, qualified rate, cost per call. Reallocate budget every 90 days based on data, not gut.
Example: A roofer in Sacramento installed CallRail in February and discovered his Angi listing was producing $620/call versus his GBP at $35/call. He cancelled Angi, doubled the GBP photo and post workflow, and saved roughly $11K over the rest of the year.
The Total Bleed Across All Six
Across six bleeds, a typical mid-sized roofing contractor leaks $90K–$180K/year — most of it in revenue that walked because the program drifted, not because the agency was bad. The 90-day fix order is: contract amendment (week 1), GBP ownership transfer (week 1–2), call tracking install (week 2–3), page speed sprint (week 3–4), SMS review workflow (week 4–6), schema rollout (week 6–10). All six can be live by day 90 with one focused day of work per intervention.
"The roofers who win at SEO don't have better agencies. They have better oversight — and they fixed six things their agency was never going to fix on its own."
FAQ
How fast can a roofing SEO program show results?
GBP fixes show in 30–60 days. Page speed and schema show in 60–90 days. Full program compounding takes 9–12 months. If you need cash flow sooner, run paid ads alongside SEO for the first 6 months — that's a standard roofing playbook.
Should I switch agencies if the current one won't accept call-volume KPIs?
Yes. An agency unwilling to be measured on calls is an agency optimizing for invoiceability, not for your business. Plenty of roofing-specialized agencies sign call-volume KPIs without hesitation.
Can I do roofing SEO in-house instead of hiring an agency?
GBP, reviews, and basic content — yes, with 5–10 hours/week of disciplined time. Technical SEO (schema, page speed, site architecture) usually requires a contractor or agency. The blended model — in-house GBP+reviews, agency for technical and content — is the most common winning structure.
How much should a roofing owner spend on SEO?
$1,500–$4,000/month for a 3–8 crew contractor. Below that you're getting cosmetic work. Above that you should be getting GBP discipline + technical SEO + content + schema + monthly KPI reporting.
Is SEO better than paid ads for roofing?
Both, weighted by maturity. New roofers: 70% ads, 30% SEO. Established: 30% ads, 70% SEO. The mix shifts as SEO compounds because organic cost-per-call drops 50–70% by year 3 while ad cost-per-call stays flat or rises.
What's the single biggest roofing SEO bleed?
GBP neglect, by a mile. It's the highest-ROI surface in local SEO, it's free, and roofing is the easiest vertical to populate with original photos. Most roofers leave it 50% optimized. Fix that one bleed and many roofers double their map-pack inbound inside a quarter.
Roofing SEO doesn't fail because agencies are incompetent. It fails because owners don't intervene at six specific touchpoints. The 90-day fix list above is exactly that — six interventions you control, sequenced by ROI. None require you to fire your agency. All require you to ask better questions and refuse to renew until the answers are sharp.
YOUR ROOFING BUSINESS IS BLEEDING JOBS YOUR AGENCY WAS NEVER GOING TO BOOK.
Book a free 30-minute screen-share. I open your live site, GBP, contract, and call data, name every bleed your agency is letting slide, and hand you the 90-day fix list with dollar costs. Zero pitch.
BOOK THE CALL →Free · 30 min · Zero pitch · The list is yours to keep