Frederick Sona
HomeCase Studies › Roofing services
Industry Playbook · NAICS 23 Playbook

Roofing services

Residential + light commercial roofing. How marketing works in this industry, what breaks most often, and the Ranking Surfaces I would prioritize.

Type: Industry playbook NAICS Sector: 23 Format: Buyer + discovery + playbook
Playbook, not shipped engagement. This is how I would approach roofing services marketing based on the Ranking Surfaces Playbook and comparable work in adjacent categories.

The company shape

Residential roofing is one of the largest and most fragmented trade categories in the US, with roughly 108,000 licensed roofing contractors nationally and total industry revenue near $60 billion. Fragmentation is severe: the top 100 firms account for under 12 percent of aggregate revenue. Revenue bands cluster into four tiers. The solo roofer or two-person crew doing repairs and small residential work runs $250K to $700K a year with a truck, a ladder, and word of mouth. The small production shop with two to five crews does $1.5M to $6M and typically owns its own equipment plus a small office. The mid-market operator with 6 to 15 crews does $8M to $30M and is where storm-chase revenue models often live. The regional multi-location operator does $35M to $150M with 100 to 500 employees, insurance-claim expertise, multiple showrooms, and a substantial marketing budget.

Ownership skews family with two important overlays. First, storm-chase operators. These are shops that follow major hail and wind events across the country, set up temporary offices, and work insurance claims for six to eighteen months in the affected metro before moving on. They compete against local operators with meaningfully more aggressive marketing tactics and often leave the local reputation ecosystem worse than they found it. Second, private equity roll-ups. Since 2019, PE has aggressively consolidated roofing at 4x to 7x EBITDA. Groups like RoofSmart, CentiMark (commercial), Beacon Roofing spinouts, and roughly 30 regional PE platforms are active. Independent operators competing in a rolled-up metro need to lean into local presence, real crew photos, and permanent physical address as differentiation.

Field structure runs one production manager per 3 to 6 crews, plus estimators (usually 1 per $2M to $4M of revenue) and insurance claims specialists at operators that work insurance-heavy books. Gross margin runs 30 to 45 percent on retail residential replacement, 18 to 32 percent on insurance work (higher volume, thinner margin due to insurance-set pricing), and 40 to 60 percent on repairs and small work. Retail work has meaningfully better unit economics but requires stronger marketing to acquire. Insurance work delivers volume but ties the shop to the local claims cycle.

Insurance carriers exert unusual leverage in roofing. The relationships between the local carrier claims teams, independent adjusters, and roofing contractors shape access to storm-damage revenue. Shops that maintain professional relationships with the top three to five carriers in the metro (State Farm, Allstate, USAA, Farmers, Liberty Mutual are typical top carriers) receive more direct referrals and smoother claims processing. Shops that treat carriers as adversaries face slower approvals and higher denial rates. The claims specialist on staff is often the highest-leverage single hire a roofing operator makes.

The buyer

Residential roofing has three distinct buyer modes. Storm-damage claim (homeowner just experienced hail or high wind, insurance adjuster is involved, timeline is compressed), aged-roof replacement (roof is 18 to 30 years old, homeowner is planning ahead, cash or financing decision), and repair (leak, missing shingles, flashing failure, chimney work).

Storm-damage buyers behave under time pressure and information asymmetry. They rarely have prior experience with roofing, they trust whoever knocks on the door first if they are not already researching, and they often sign contracts contingent on insurance approval. The ticket runs $8,000 to $28,000 for a full replacement on an average residential roof, sometimes higher on complex architectural roofs. The buyer's biggest question is not price but "will my insurance actually cover this and will you help me with the claim." Shops with real insurance-claim expertise (a claims specialist on staff, familiarity with the specific carriers in the metro, willingness to attend the adjuster meeting) win at meaningfully higher rates than shops that do not.

Aged-roof buyers are the highest-value segment for the local operator. They research for 30 to 90 days, collect three to five quotes, and make the decision on a combination of material choice, warranty, workmanship reputation, and price. Ticket runs $10,000 to $45,000 depending on square footage, pitch, material (asphalt versus metal versus tile), and accessibility. These jobs get financed roughly 50 to 65 percent of the time. Manufacturer partnerships matter: GAF Master Elite, Owens Corning Platinum, CertainTeed Select ShingleMaster, Malarkey Emerald Preferred. These certifications unlock extended warranties (typically 25 to 50 years on materials plus workmanship) that are the difference-maker on the buyer's decision.

Repair buyers care about speed and honesty. Ticket runs $350 to $2,800. They pick from the map pack and go with whoever can be onsite within 48 hours and does not try to upsell into a full replacement they do not need. The repair-to-replacement conversion is real: roughly 20 to 30 percent of repair calls become replacement jobs within 24 months, either because the underlying roof is at end of life or because the repair reveals worse damage than expected. Shops with a lifecycle sequence that stays in touch with repair customers convert the second job at 3x to 5x the rate of shops that do not.

Seasonality is severe and geographic. In freeze-prone metros, roofing crews cannot install through December to February. Storm damage tracks the weather calendar. Retail replacement peaks in late spring and early fall. The marketing calendar has to plan for the shoulder months (November through February in the North, June through August in the South) where lead generation must sustain the pipeline that will actually install in the next crew-available window.

Product manufacturer choice increasingly matters to the retail buyer. Asphalt shingle manufacturers (GAF, Owens Corning, CertainTeed, Malarkey, Atlas, IKO) are perceived differently by buyers who researched for the 30 to 90 day window. Metal roofing options (standing seam versus stone-coated steel versus corrugated) require even more buyer education. Roofing sites that walk buyers through the manufacturer and product-line trade-offs honestly convert research-window inquiries at meaningfully higher rates than sites presenting a single manufacturer as the default answer.

Discovery landscape

Ranked by first-touch attribution for a residential operator running retail and insurance work: Google Business Profile takes 32 to 38 percent, Google organic 18 to 22 percent, Google Ads 15 to 22 percent (roofing is a high-CPC vertical, sometimes $60 to $150 per click on replacement queries), Facebook 6 to 10 percent (roofing Facebook Ads are a real channel here, unusually so for a trade), referral and word of mouth 12 to 18 percent, canvassing and door-knocking 4 to 8 percent (storm-chase and some local operators), directories (Angi, HomeAdvisor, BBB, Nextdoor) 2 to 4 percent.

Of the 13 Ranking Surfaces, seven move revenue for roofing. LSO leads because the map pack is where "roofers near me" resolves after a storm. SEO with per-service and per-service-city pages captures the aged-roof research segment. E-E-A-T is oversized because homeowners are shopping credentials as much as price (manufacturer certifications, GAF/Owens Corning/CertainTeed badges, BBB, state license, workmanship warranty). AEO captures the aged-roof buyer during the 30 to 90 day research window. GEO extends AEO into AI Overviews. CWV matters. E-E-A-T is Tier 1 for roofing because of the extreme trust load.

VxSO is unusually productive for roofing. Homeowners take drone or ladder photos of visible damage and reverse-search them. ImageObject schema on the shop's damage-diagnosis photo library captures this. VSO adds Speakable at marginal cost.

Four surfaces do not apply meaningfully. ASO (consumer roofing apps are rare), KGO (regional operators lack notability), GLOBO (US-only), Web3. AAO is not yet producing volume in roofing.

What breaks most often

Seven failure modes recur.

Storm-chase reputation contamination of local operators. When an out-of-state storm-chase operator sets up in a metro, complaints flood BBB, Nextdoor, and Google. Legitimate local operators get tarred with the same brush. The fix is proactive local-presence messaging: physical address on every page, named owner and crew photos, membership in local trade groups (National Roofing Contractors Association, local BBB, chamber of commerce), reviews with named local customers.

Insurance-claim messaging that sounds sketchy. "Free inspection, we'll deal with your insurance" reads as either desperate or shady to a considered buyer. Legitimate insurance expertise is a differentiator, but it has to be communicated with credibility: named claims specialist, description of the process, real case studies with the carrier named.

Manufacturer certifications unused. A GAF Master Elite badge (top 3 percent of GAF-certified contractors nationally) sitting in a footer image accomplishes nothing. That certification unlocks a 50-year non-prorated warranty that most local competitors cannot offer. It belongs above the fold on every replacement page, in the ad copy, in the estimate, and on the GBP profile.

No estimator or price band on the site. Homeowners researching roof replacement Google "roof replacement cost 2,400 square foot house." Shops with zero cost content lose that traffic entirely. Even a simple estimator that produces a range based on square footage, pitch, and material selection captures the search and pre-qualifies the inquiry.

Ignoring the 30 to 90 day research window for aged-roof buyers. These buyers are the highest-value segment (retail margin, willing to pay for craft) and shops that only enter at the quote stage lose to shops that build brand equity during research. Long-form content on material comparisons (asphalt vs metal vs tile), warranty structures, and installation-crew standards captures the research window.

Financing hidden. A $22,000 roof financed at $290 per month is a different sale than a $22,000 cash quote. Financing math belongs on every replacement page, on the estimator, and in the ad copy.

Review generation only from happy full-replacement customers. Repairs are where the review flow should start. Small-ticket repair customers are willing to leave reviews and produce a steady baseline. The shop that only asks after a $18K replacement waits weeks between opportunities. Repair customers can be asked the same day.

Retail versus insurance mix drift. Shops that started retail-focused often drift toward insurance work during storm seasons because the volume is easier to close. Two years later the retail brand equity is eroded and the shop is dependent on the insurance cycle for revenue. The opposite drift also happens: insurance-focused shops chase retail during quiet periods without building the marketing and sales muscle to close it, and produce poor experiences for retail buyers who expected a different service model. Deliberate mix targets (say, 65 percent retail, 35 percent insurance) with revenue attribution and separate sales processes prevent the drift.

The Ranking Surfaces Playbook applied

Tier one: revenue this quarter

LSO. Rebuild GBP with the correct primary category (Roofing contractor for retail, Commercial roofing contractor if applicable). Add secondaries. Precise service area. Complete service list including specific material offerings (architectural asphalt, metal, tile, TPO for commercial, EPDM). Weekly Google Posts alternating completed retail projects, storm-response availability during weather events, financing offers, and material-comparison content. Review generation targeting 20 to 40 per month across repair and replacement combined.

SEO. Per-service-city grid covering replacement, repair, storm damage, gutter, siding (if the shop offers it), and each metro served. Real project photos from that metro. LocalBusiness plus Service plus FAQPage schema. Internal linking dense.

E-E-A-T. Tier one for roofing. Manufacturer certification badges above the fold. Named owner and crew photos. Physical address on every page. State license number. Insurance carrier list with claims specialist named. Workmanship warranty language displayed. NRCA membership if applicable.

Tier two: compounds

AEO. Direct-answer guides on 25 to 35 informational queries. "How much does a new roof cost," "asphalt vs metal roof cost and lifespan," "how to spot hail damage on a roof," "what does a good roofer's estimate include," "how long does a roof replacement take." TL;DR opener, FAQPage schema, real cost tables and timeline data from the shop's book.

GEO. Organization schema with sameAs to GBP, LinkedIn, Facebook, GAF/Owens Corning/CertainTeed contractor directory pages, state license board. llms.txt in place. Attributable numbered facts.

CWV. LCP under 2s, INP under 200ms. Emergency storm-response traffic is mobile-first and impatient.

Tier three: lower ROI, low cost

VxSO. ImageObject schema on the damage-diagnosis photo library. Descriptive alt text for hail damage, wind damage, granule loss, flashing failure, ice dam damage. Google Lens is starting to matter for homeowner damage assessment.

VSO. Speakable markup on FAQ blocks. Nearly free.

Tier four: not a fit

ASO, KGO, GLOBO, Web3, AAO. Skip for regional roofing operators.

How Playbook priority shifts by operator size

Solo roofer under $1M: LSO plus reputation. A tight site, GBP, review generation. Skip most of the compounding stack. Small shop $1M to $6M: per-service-city grid built, manufacturer certification badges prominent, financing math visible, basic content engine. Attribution stack essential. Mid $6M to $25M: full Playbook. AEO and GEO become meaningful. Lifecycle in CRM. Insurance-carrier relationship program formalized. Regional $25M+: multi-metro measurement, custom estimator or drone-quote capability, storm-response operational playbook, AAO first-mover posture.

First 30 / 60 / 90 days

Days 1 to 30

Attribution deployment across every channel. Baseline cost per booked replacement, per repair, and per storm claim. GBP rebuild across every location. Precise service area by ZIP. Review generation flow live on both repair and replacement completions. Audit and pause underperforming Google Ads. Establish weekly reporting to the owner covering booked revenue by channel, cost per booking, retail versus insurance mix, and review count. If storm season is imminent (six to eight weeks out in the local geography), pre-build the storm response landing page and creative so it can go live within 48 hours of an event.

Days 31 to 60

Per-service-city grid built. Dedicated landing pages for replacement (broken out by material: asphalt, metal, tile), repair, storm damage, and insurance claims. Manufacturer certification badges deployed above the fold with warranty language. Financing math visible everywhere. CWV work: LCP, CLS, INP in green. Google Ads restructure into intent-and-service campaigns with tight negatives (remove DIY intent, remove commercial-only queries if residential-focused, remove storm-chase-style aggressive queries if brand-appropriate). Simple estimator deployed on replacement pages. First six AEO guides live.

Days 61 to 90

Lifecycle sequences activated. Repair customers get a two-touch sequence 6 months later checking roof condition. Aged-roof customers (over 18 years) identified in the CRM and marketed to seasonally. Twelve AEO guides live. GEO entity clarity in place. Rank tracking on per-service-city terms. Trade-facing motion started with local insurance agents (they refer roofing shops to their policyholders after storms). First map-pack gains between day 60 and day 90. Realistic blended ROAS of 3x to 4x by month five to six. Roofing runs lower ROAS than HVAC or plumbing because CPCs are higher, and that is the industry math.

Measurement stack across the 90-day window

GA4 with events for call_click, estimator_start, estimator_complete, storm_form_submit. CallRail with unique numbers per channel and per storm campaign when active. CRM with contact source mapped and retail versus insurance flag on every record. Looker Studio dashboard for the owner covering booked revenue by mix, ROAS by channel, and storm-campaign performance in-season. Cost caps: paid media at 4 to 6 percent of trailing revenue (higher than most trades because CPCs are elevated in roofing). SEO and content at 1 to 2 percent. Storm-response reserve of 15 to 25 percent of the paid budget held for surge deployment during weather events.

If you run this kind of business and want to talk, tell me what you are trying to move.

Start a conversation
← Back to case studies