- 130 Roofing contractor websites Site Inspected Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
- 67.82 Mean Fervor Score (median 70, range 30 to 90) Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
- 64 Brands graded D or F (49% of the roofing trade sample) Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
- 11.23s Mobile LCP (mean). Google's "poor" threshold is 4 seconds. Source: Google Lighthouse 13.3.0 (mobile), Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
- 64.6% Brands with a phone number in the persistent header (84 of 130) Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Cite as: "Best Roofing Websites 2026: Examples from 130 Sites Scored." The Contractor CRO Index, Fervor Studio. 2026-05-15. Sample size: 130.
Between April 15 and May 12, 2026, we ran Site Inspections on 130 roofing contractor websites across the US and Canada. Every site went through the same Fervor Grade rubric. 100 points across six categories, axe-core 4.10.2 against WCAG 2.1 AA for accessibility, and Google Lighthouse for performance. We didn't form opinions by clicking around. The scores reproduce if anyone re-runs them.
The trade averaged 67.82 out of 100, which lands a D on the same school grading scale your kids get report cards on. Median 70.0. One of 130 brands earned an A. 31 earned an F. The rest sat between B and D, mostly bunched in the middle, doing fine without doing well.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What we noticed
Trust & Credibility, Content & SEO, and Accessibility explain almost all the distance between the top and bottom quartiles. Top-quartile brands average 19.4 of 22 on trust signals. Bottom quartile, 14.1. So that's a 23.7% spread on the same category. Mobile Experience barely separates anyone, because the floor moved up. And sites that don't render on a phone aren't really competing anymore.
The accessibility picture is bad across the trade. 60.8% of inspected brands ship at least one critical WCAG violation on their homepage or a key supporting page. axe-core counted 529 critical issues across the sites we inspected, plus 1,559 serious ones. The single most common violation type was missing or misused landmark regions, followed by colour-contrast failures.
Conversion infrastructure is uneven. 64.6% of sites put a phone number in a persistent header. 12.3% of sites place an inline form on the hero. Online scheduling sits at 33.8% and chat at 31.5%. So the default inbound channels are still phone and web form, with scheduling and chat sitting underneath as supporting capture.
And site speed is where the trade is most visibly behind. The median brand scores 42 of 100 on Lighthouse mobile Performance. Median LCP is 7.89 seconds. Google's threshold for "good" is 2.5. Most of these sites are running on stock builder themes that haven't been touched since launch.
Source: Google Lighthouse 13.3.0 (mobile), Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
How the framework works
The Fervor Grade rubric is 100 points across six categories, weighted by their influence on lead generation. Each Site Inspection produces a Base Score from the rubric, then any documented Grade Adjustments are applied, then an Adjusted Score lands on the brand's record. That Adjusted Score is the Fervor Score reported here. The Score maps to a letter Grade using standard school grading thresholds: A is 90 and above, B is 80 to 89, C is 70 to 79, D is 60 to 69, F is below 60.
| Category | Maximum points | Share of total |
|---|---|---|
| First Impression | 20 | 20% |
| Trust & Credibility | 22 | 22% |
| Lead Capture | 20 | 20% |
| Mobile Experience | 15 | 15% |
| Content & SEO | 15 | 15% |
| Accessibility | 8 | 8% |
| Total | 100 | 100% |
Sample and geography
Final sample: 130 brands. 92 US or non-Canadian-TLD brands. 38 Canadian. Field work ran 2026-04-15 to 2026-05-12.
What the score uses
Every brand was inspected the same way. Screenshot capture across mobile and desktop viewports. Structured DOM extraction for facts a reviewer can verify, like schema.org JSON-LD types, form counts, contact channels, navigation structure. axe-core 4.10.2 for accessibility. And Google Lighthouse for Core Web Vitals. Rubric scoring is anchored to evidence files. Pure opinion doesn't move the score.
What the score doesn't use
Aggregate statistics here are mechanical and defensible. Per-brand evidence claims (which specific page, which exact element) carry known fabrication risk pending the HTML/DOM-verified evidence layer we're currently building. So this report stays at the aggregate level. Per-brand call-outs are deliberately absent.
Accessibility overlay widgets don't count toward the score
Third-party overlay widgets (AccessiBe, UserWay, EqualWeb, AudioEye, Recite Me, and similar) aren't credited toward a brand's accessibility score, even when present. This aligns with the WebAIM Overlay Fact Sheet, DOJ guidance, and U.S. case law in the Robles v. Domino's lineage. Overlays are opt-in by default, so most visitors never activate them. And keyboard-only users often can't reach the widget before bouncing. Screen-reader users frequently get a worse experience with overlays active. So axe-core measures the DOM at page load, which is what a visitor actually encounters.
The shape of the trade
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Score histogram, 5-point bins
Histogram values, bin by bin
| Fervor Score range | Brands in bin |
|---|---|
| 30 to 34 | 2 |
| 35 to 39 | 1 |
| 40 to 44 | 1 |
| 45 to 49 | 4 |
| 50 to 54 | 11 |
| 55 to 59 | 12 |
| 60 to 64 | 13 |
| 65 to 69 | 20 |
| 70 to 74 | 27 |
| 75 to 79 | 20 |
| 80 to 84 | 13 |
| 85 to 89 | 5 |
| 90 to 94 | 1 |
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Summary statistics
| Statistic | Value | Statistic | Value |
|---|---|---|---|
| Sample size | 130 | Minimum | 30 |
| Mean | 67.82 | Maximum | 90 |
| Median | 70.0 | Q1 (25th percentile) | 60.0 |
| Standard deviation | 11.83 | Q3 (75th percentile) | 77.0 |
| 10th / 90th percentile | 52.0 / 82.0 | ||
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Six categories, ranked by how the trade scores
The 70% line marks where a category drags down scores across most brands. Roofing sites clear that line on First Impression, Trust & Credibility, Lead Capture, and Mobile Experience. Content & SEO sits right at the line. Accessibility sits well below it, and pulls down both the trade's average and the bottom-quartile brands' Grades.
Per-category detail
| Category | Mean | Median | Min | Max | Share of max |
|---|---|---|---|---|---|
| First Impression | 16.92 / 20 | 17 | 12 | 19 | 84.6% |
| Lead Capture | 15.62 / 20 | 16 | 6 | 20 | 78.1% |
| Mobile Experience | 11.58 / 15 | 12 | 6 | 15 | 77.2% |
| Trust & Credibility | 16.85 / 22 | 17 | 4 | 21 | 76.6% |
| Content & SEO | 10.54 / 15 | 11 | 6 | 15 | 70.3% |
| Accessibility | 3.88 / 8 | 4 | 0 | 8 | 48.6% |
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Where the leaders pull ahead
The top quartile and bottom quartile don't differ evenly across the six categories. The widest gap is on Trust & Credibility. The narrowest is Mobile Experience. So the two categories most responsible for separating leaders from laggards in roofing are trust signals and lead-capture craft.
Category gap detail
| Category | Top quartile average | Bottom quartile average | Gap (points) | Gap (share of max) |
|---|---|---|---|---|
| First Impression | 17.62 | 16.38 | 1.24 | 6.2% |
| Trust & Credibility | 18.03 | 15.59 | 2.44 | 11.1% |
| Lead Capture | 17.03 | 14.44 | 2.59 | 12.9% |
| Mobile Experience | 11.97 | 11.18 | 0.79 | 5.3% |
| Content & SEO | 11.53 | 10.24 | 1.29 | 8.6% |
| Accessibility | 3.68 | 4.24 | -0.56 | -7.0% |
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Lighthouse and Core Web Vitals
We ran Google Lighthouse against every brand in the trade sample, mobile viewport. The picture is rough. Median Performance score is 42 of 100, well inside what Google calls the "poor" range. And median LCP (Largest Contentful Paint) is 7.89 seconds, which is roughly 3.2× the threshold Google flags as "good".
"Page experience signals, including Core Web Vitals, are part of how Google Search ranks pages. Sites that meet Core Web Vitals thresholds have a better user experience and can perform better in Search."
Understanding page experience in Google Search results, Google Search Central (2024)
Full Lighthouse mobile detail
| Metric | Mean | Median | p25 | p75 | Notes |
|---|---|---|---|---|---|
| Lighthouse performance score | 44 | 42 | 32 | 55 | Out of 100; 90 and above is good |
| Largest Contentful Paint (seconds) | 11.23 | 7.89 | 5.28 | 13.12 | 2.5s or under is good |
| Cumulative Layout Shift | 0.1 | 0.02 | 0 | 0.09 | 0.10 or under is good |
| Total Blocking Time (ms) | 3180 | 1638 | 632 | 4824 | 200ms or under is good |
| First Contentful Paint (seconds) | 3.38 | 2.99 | 2.21 | 4.1 | 1.8s or under is good |
| Lighthouse SEO score | 91 | 92 | 85 | 100 | Out of 100; technical SEO check |
A note on Lighthouse Accessibility versus the Fervor Accessibility category. Lighthouse's own accessibility score (mean 87.17 / 100 here) uses a narrower ruleset than axe-core. The Fervor Grade rubric uses axe-core 4.10.2 for its Accessibility category. The two typically correlate but aren't identical.
Source: Google Lighthouse 13.3.0 (mobile), Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What the trade ships, what it doesn't
Five conversion features were inspected on every site. The pattern: phone in the header is the most-adopted capture surface. The medium-cost features that compress time-to-quote (SMS, chat, online scheduling) sit in the middle of the pack. And the inline form on the hero, the single most reliable lift on a service site, sits the lowest.
The lower-adoption items are the cheapest available conversion upgrades in the roofing category. A brand that adds an inline hero form, SMS, or online scheduling stops looking like every other site in its city without changing any of its service delivery.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
How visitors actually reach the trade
Every brand was scanned for the four ways a visitor can hand off to a contractor: phone (tel: links on the page), web form, embedded chat widget, and click-to-CTA. The trade doesn't ship these channels evenly. The numbers below come from DOM extraction and CTA click-through automation, not self-reporting.
Phone-channel density
The median roofing brand exposes 2 tel: links on its homepage capture. The mean is 4.07, pulled up by multi-location franchises that list a phone for every office. The heaviest single brand exposes 89 tel: links on one site. p25 sits at 1, p75 at 4, p90 at 6. Voice-channel saturation matters because phone remains the dominant intake mode for home-service trades. A single-location brand with one tel: link and a buried mobile header is leaking calls that would otherwise close.
Form-channel density
Distinct from form field count (covered on the form-complexity page), this is the count of form elements per brand. The median brand ships 4 forms. The mean is 6.15. The heaviest brand ships 36 on a single site, most of them duplicate intakes embedded across location pages, service pages, and footers. Form sprawl isn't inherently bad, but each duplicate is another CRM-mapping liability and another place a field-count bloat decision gets made independently.
Chat-widget adoption
16.9% of roofing brands ship a detectable chat widget at page load. The trade uses a long tail of vendors (Tidio, Tawk.to, Drift, Intercom, Crisp, LiveChat, Olark, Podium, HubSpot Conversations), most of which sit at single-digit adoption individually. Chat widgets capture the visitor who won't call and won't fill a form, and the trade is leaving that segment uncaptured almost three-quarters of the time.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Where the buttons actually go
Every CTA on every captured page was click-tested by automation. The full inspection logged 0 click executions across the trade sample, with 0% of attempts firing without error. The headline finding is the destination distribution. Internal contact pages absorb 0% of clicks. Quote and estimate pages absorb another 0%. Phone CTAs route only 0% of clicks, even though phone is the trade's dominant intake channel. Third-party schedulers (Calendly, ServiceTitan, Jobber-style booking flows) carry just 0%.
| CTA destination pattern | Click executions | Share of all CTA clicks |
|---|
"Internal contact page" is the safest CTA destination, and the most common. It's also the slowest path to a sales conversation. Brands routing more CTAs to phone, scheduler, or quote / estimate flows compress time-to-quote. Brands routing them all to /contact-us push every visitor through the same intake bottleneck.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Which platforms the trade links to
Social and review-platform links are conversion-adjacent. The visitor who clicks through to Facebook or Instagram is doing pre-purchase social proof on the brand. 78.5% of brands link to Facebook. 52.3% link to Instagram. Google Maps profiles are linked from 39.2% of sites. That's the channel that captures local-pack search visitors who never landed on the site directly. Houzz at 6.2% is one of the few trade-specific signals: high adoption indicates a brand that competes on portfolio strength.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Where the funnel leaks fields
Every brand's DOM was scanned for <form> elements across home, contact, service, and location pages. The 105 roofing brands with at least one captured intake form ship a median of 13 logical user-facing fields on their most-complex form. The form a visitor most likely encounters during a conversion attempt. The 75th-percentile brand ships 19 fields. Field counts collapse composite widgets (a Gravity Forms address field counts as one logical field, not four sub-inputs) and exclude hidden tracking inputs.
CAPTCHA and multi-step adoption
41.0% of roofing brands with captured forms deploy CAPTCHA on at least one intake (Google reCAPTCHA or hCaptcha tokens detected in DOM). CAPTCHA suppresses bot traffic but adds friction for real visitors. One click, one image-grid challenge, and 5 to 10% of mobile users abandon. The fix isn't to drop CAPTCHA. It's to combine it with field reduction so the post-CAPTCHA path is short.
Multi-step / progressive form signals appear on 3.1% of brands with captured forms. Multi-step is one of the most reliable interventions for reducing the field-count abandonment penalty. It doesn't shorten the form, it just stages the ask so commitment-to-completion rises with each step. The signal is rare in the trade sample because most contractor sites are built on builder themes that ship single-page intakes by default.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Where the heaviest forms live
Page roles are inferred from the URL slug of each capture (contact-us, home, services, locations, and so on). Forms on dedicated contact pages tend to be longer than forms embedded in service pages, which tend to be longer than forms surfaced on the homepage. The hierarchy is intuitive. The absolute numbers tell the story.
| Page role (URL slug) | Forms observed | Mean fields | Median fields | Max fields |
|---|---|---|---|---|
| Home | 76 | 13.3 | 9 | 49 |
| Contact Us | 43 | 15 | 13 | 33 |
| Contact | 35 | 14.9 | 12 | 38 |
| Gutters | 11 | 10.8 | 9 | 25 |
| Roofing | 7 | 27.7 | 22 | 49 |
| Locations | 4 | 29.8 | 26 | 49 |
| Free Quote | 3 | 4.7 | 5 | 7 |
| Services | 3 | 14.3 | 15 | 21 |
| Service Areas | 3 | 12 | 7 | 22 |
| Products | 3 | 14.7 | 21 | 21 |
Logical-field counts collapse Gravity Forms composite inputs (input_N.X sub-inputs reduce to input_N). Hidden / tracking inputs (Contact Form 7 nonces, WordPress nonces, reCAPTCHA / hCaptcha tokens, Elementor post_id / form_id / referer_title / queried_id, antispam honeypots) are excluded. Single-input forms (logical fields under 2) are filtered out to remove search bars and newsletter-only intakes. Forms are deduped per-brand by (action, logical field count, first 10 logical field names) to avoid double-counting mobile / desktop captures of the same form.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What forms ask for, and how they're built
Two structural choices govern whether a roofing contractor's intake actually converts: how the form is staged (single-step vs multi-step) and which fields it asks the visitor to fill. The trade sample is overwhelmingly single-step. Multi-step adoption sits at 3.1%, which means 96.9% of the trade ships intakes that present every field at once. Field counts compound abandonment past five fields, so single-step plus long-form is the worst possible combination. And the most common.
What captured forms ask for
Field-type detection reads each form's input names against a pattern library covering name, email, phone, message, address, service-type, scheduling, consent, file-upload, and budget. The numbers below are lower bounds. Forms built on Gravity Forms emit opaque input IDs (input_1, input_5) that don't carry semantic information, so their fields go unclassified even though the user-visible labels exist. Contact Form 7 and Elementor forms with semantic field names are fully classified.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
The credibility stack
Nineteen trust signal categories were inspected. Named-customer testimonials lead at 55.4%. Before/after galleries (the strongest proof asset in any visual trade) sit at 36.9%. And manufacturer certifications form a second-tier stack: GAF any-tier, IKO, CertainTeed, Owens Corning. But license numbers, the most basic legitimacy signal, appear on just 12.3% of sites.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
How the trade describes itself
Two positioning frames dominate. Flat or commercial-roof specialty and high-end / luxury positioning. Storm and restoration positioning appears on 15.4% of sites, which is typical for regions with hail and hurricane exposure. But free roof inspections remain underused at 16.9%.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What's in the markup, and what the buttons say
Schema.org JSON-LD adoption
83.8% of inspected brands ship at least one piece of structured-data markup on their homepage. The median brand ships 6 types. But the mean is pulled up to 10.93 by a small number of brands stacking 50 to 100+ types on a single page, which Google doesn't reward and may discount.
Common CTA phrasing
Across the trade sample, we observed 0 CTA click executions during the inspection pipeline. The phrases that show up most often:
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What the markup says, what it omits
Every brand in the trade sample ships a title tag. Almost every brand ships a viewport meta. After that, the markup story gets uglier. 48.5% of roofing brands ship title tags that exceed Google's 60-character soft cap, which means roughly half the trade sample is publishing titles Google will truncate in the SERP. 11.5% ship no meta description at all (Google synthesizes one from the page, usually badly). Another 23.8% ship meta descriptions over 160 characters, which also get truncated.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
How the trade structures its pages
H1 is the single most weight-carrying heading element on a page. Best practice is one H1 per page, descriptive, with a clean H2 / H3 hierarchy underneath. The trade sample doesn't follow that practice. 90.0% of roofing brands ship homepages with multiple H1s. Usually because the page builder marks every section heading as H1. And 9.2% ship pages with no H1 at all, typically because a visual hero replaces the H1 with display text styled to look like a heading but rendered as a div.
| Metric | Value |
|---|---|
| Brands with at least one H1 on the homepage | 90.8% |
| Brands with zero H1 on the homepage (broken signal) | 9.2% |
| Brands with multiple H1s on the homepage (best-practice violation) | 90.0% |
| Brands with a proper H1 then H2 then H3 hierarchy | 43.8% |
| Average H1 count per homepage | 4.01 |
| Typical H1 count per homepage (median) | 2 |
| Heaviest brand: H1s on a single page | 56 |
| Average length of the first H1 (characters) | 41.48 |
Heading hierarchy is a shared SEO + accessibility signal. The trade sample's heading-order defect also surfaces on the accessibility page (axe-core's heading-order rule is one of the top-10 most-frequent violations). Fixing the H1 problem cleans up two scorecard categories at once.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
The cheapest unfair advantage in the trade
The median roofing brand ships 114 images across their captured pages. The trade-sample mean is 191.82. The heaviest brand ships 3,732 images on a single site. Most of them un-optimized. Image weight is the dominant contributor to mobile LCP in this trade, and the fix is mechanical: convert to WebP, enable lazy-load, ship srcset. None of those require a redesign. All three are roughly afternoon-of-developer-time fixes. None of them are happening.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
The lowest-scoring category: Accessibility
axe-core 4.10.2 was run against the homepage and four supporting URLs per brand, in mobile and desktop viewports, with brand-level deduplication. Across the trade sample: 529 critical, 1,559 serious, and 2,129 moderate unique violations. And only 39.2% of brands ship zero critical issues.
Severity at a glance
Top 10 axe-core violation rules by total occurrence
Source: axe-core 4.10.2 (WCAG 2.1 AA), Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Why this matters legally
The accessibility findings on the previous pages translate directly into legal exposure under two frameworks. Most of the 130 roofing brands in this trade sample would fail a compliance review under either.
ADA Title III in the United States
The Americans with Disabilities Act applies to public accommodations, including commercial websites. The Ninth Circuit ruling in Robles v. Domino's Pizza (2019) (which the U.S. Supreme Court declined to review) confirmed that a brand's website carries the same accessibility duty as its brick-and-mortar storefront. The Department of Justice's March 2022 guidance reinforced that public-accommodation websites must be accessible regardless of overlay-widget installation. WCAG 2.1 AA is the standard courts reference when evaluating whether a site meets the duty.
Critical and serious axe-core violations under WCAG 2.1 AA are exactly the line items that surface in demand letters. Missing form labels, low colour contrast, image-alt failures, broken landmark regions. Those aren't theoretical defects. They're what plaintiffs' counsel screenshot. And 60.8% of this trade sample ships at least one.
"The Ninth Circuit held that Title III of the ADA applies to a business's website and mobile app when those have a nexus to a physical place of public accommodation. In October 2019 the Supreme Court declined review, leaving the Ninth Circuit decision intact and exposing brick-and-mortar businesses nationwide to website-accessibility lawsuits."
Robles v. Domino's Pizza LLC, 913 F.3d 898 (9th Cir.) (2019)
AODA in Ontario, Canada
Canadian brands carry an additional layer. The Accessibility for Ontarians with Disabilities Act requires designated organizations to meet WCAG 2.0 Level AA on public-facing websites. Compliance reporting is mandatory under Ontario Regulation 191/11. Administrative monetary penalties reach $50,000 per day for an individual and $100,000 per day for a corporation, and they accumulate while a violation goes unresolved. The 38 Canadian roofing brands in this trade sample sit inside AODA jurisdiction in addition to whatever cross-border ADA exposure they carry from US visitors.
The overlay trap
A share of trade-sample brands deploy third-party accessibility overlay widgets. AccessiBe, UserWay, EqualWeb, AudioEye, Recite Me, and similar. The widgets bolt a settings panel on top of an existing site to expose limited accessibility controls. But they do not repair the underlying source code. The WebAIM Overlay Fact Sheet (signed by hundreds of accessibility professionals and developers) documents the consensus position: overlays do not satisfy ADA, AODA, or WCAG.
"A blind plaintiff sued Eyebobs over website inaccessibility despite the site running an accessiBe overlay. The case settled by consent decree requiring the U.S. portion of the website be made accessible within 24 months, plus an accessibility coordination team, a published accessibility policy, regular reviews, training, and retention of an accessibility consultant."
Murphy v. Eyebobs LLC, W.D. Pa. (2021)
"The FTC's final order requires accessiBe to pay $1 million and bars the company from representing that its automated product can make any website WCAG-compliant or can ensure continued WCAG compliance over time, unless it has evidence to support such claims."
FTC Approves Final Order Requiring accessiBe to pay $1 Million, Federal Trade Commission (2025)
Courts have not treated overlay installation as a defense in digital-accessibility cases. Multiple lawsuits have proceeded against overlay-equipped sites. So a contractor reading "98%+ ADA compliant" inside an overlay vendor's dashboard is reading marketing copy, not a legal assessment. axe-core measures the rendered DOM at page load, which is what an assistive-technology user actually encounters. That's the number that matters when a demand letter arrives.
How the trade structures its websites
Architecture is detected mechanically: URL discovery, page-role coverage, and HTML patterns. 81.5% of roofing brands use the canonical multi-page contractor layout (homepage, service pages, location pages, contact). Mean Fervor Score for that group: 69.06. But single-page brochures and single-form homepages score meaningfully lower, partly because the rubric rewards page-role coverage, and partly because thin sitemaps tend to ship thinner trust signals.
Page-role coverage
The rubric expects five page roles in a well-structured contractor site: homepage, service page, location finder, location page, and dedicated lead capture. The median brand covers 3.0 of 5. The mean is 3.24. Single-location brands typically have only homepage, service, and contact roles (85 brands, 65.4% of the trade sample). Multi-location brands (45 brands, 34.6%) add location-finder and location-page roles.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Who they are, where they are
Tenure
| Founding decade | Brands | Mean Fervor Score |
|---|---|---|
| 1920s | 1 | 57 |
| 1930s | 2 | 66.5 |
| 1940s | 1 | 72 |
| 1950s | 5 | 68.8 |
| 1970s | 10 | 72.1 |
| 1980s | 16 | 69.2 |
| 1990s | 7 | 66.1 |
| 2000s | 10 | 69.5 |
| 2010s | 9 | 75.8 |
Note the absence of a strong age-score correlation. Older decade groupings don't reliably outscore younger ones. But sample sizes in the smallest decade buckets are too thin to draw strong conclusions.
Geographic split
| Region | Brands | Share of sample |
|---|---|---|
| United States / non-Canadian TLD | 92 | 70.8% |
| Canada | 38 | 29.2% |
| Total | 130 | 100.0% |
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What's wired up behind the website
We read every captured HTML page (not just the homepage) for marketing tech vendor signatures. Across the trade sample, 82.3% of roofing brands run at least one detectable MarTech vendor. The dominant pattern: a Google tag (GA4 or GTM) on most sites, with a long tail of trade-adjacent tools sitting at single-digit adoption.
Advertising / retargeting pixels
39.2% of roofing brands run at least one advertising or retargeting pixel. Meta Pixel, Google Ads conversion tags, and LinkedIn Insight Tag are the most common. Brands without any retargeting pixel are essentially advertising into a leaky funnel. Paying for traffic on Google or Meta with no mechanism to bring back the 95%+ that don't convert on the first visit.
Lead-capture and CRM tooling
10.0% of brands ship a detectable lead-capture or CRM tool. Calendly and HubSpot lead the named-vendor stack, followed by ServiceTitan and Jobber on the trade-platform side. But the long tail of brands has no detectable CRM hook on the public site, which means leads land in an email inbox and rely on a human to triage them inside the same business day.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Two categories the trade is barely touching
Two technology categories that the trade is barely touching yet: AI-powered tools (chat assistants, AI search optimization, voice agents) and pop-ups / exit-intent. AI integration sits at 6.9%. Pop-up and exit-intent vendors sit at 3.1%. Both numbers are surprisingly low given how saturated those categories are in e-commerce.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
CMS, page builders, and JS frameworks
WordPress dominates roofing at 66.2% of the trade sample, with Gutenberg Blocks the most common page builder at 60.8%. The long tail of Shopify-, Wix-, Squarespace-, Webflow-, Duda-, and custom-built sites accounts for the remaining quarter or so of the trade sample. The CMS choice doesn't determine the Fervor Score, but it does shape which optimization paths are open. A WordPress site with a builder pre-installed unlocks page-speed and structured-data fixes that a closed-platform site can't reach.
CMS platform adoption
Page builder adoption
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
An addressable-opportunity projection
Read this carefully. The Revenue Loss Estimate is a modeled industry projection, not a measurement of any individual brand's actual revenue loss. The formula uses uniform per-trade traffic benchmarks. Each brand's RLE assumes the same range of monthly visitors regardless of brand size, the same close rate, and the same average project value. This matches what comparable industry research bodies do (NRCA, IBISWorld, JCHS, Verified Market Reports) and exists for inter-brand comparability inside the trade sample, not for per-brand financial planning.
The right way to read this is as the category-level addressable conversion-uplift opportunity. So if every inspected brand received its benchmark monthly traffic and improved its on-site conversion rate by the amount its Fervor Score implies, this is the modeled total of new revenue the category would capture. But the figure should not be summed against any single brand's books. And small local operators sit inside the same traffic assumption as national franchises.
Modeled annual figure by Fervor Grade
| Fervor Grade | Brands | Mean modeled annual |
|---|---|---|
| A (Honor) | 1 | $25M |
| B (Passing) | 18 | $28M |
| C (Conditional) | 47 | $30M |
| D (Probation) | 33 | $31M |
| F (Condemned) | 31 | $32M |
For context: per-brand modeled median is $30M annually (p10 $27M · p90 $35M). The per-brand figure is a modeling output, not a balance-sheet projection. It uses uniform traffic and ticket assumptions across the trade. Lower-Grade brands carry a higher modeled gap because the formula compounds Fervor-Score deficit against benchmark CVR.
Benchmark assumptions
| Input | Source / value |
|---|---|
| Monthly visitor range per brand | Trade-specific benchmark (roofing 5K to 15K). Uniform across all brands in the trade. |
| Industry CVR baseline | LocaliQ 2025 (3,200+ campaigns), category-matched |
| Close rate | 0.35 |
| Average project value | Trade-specific benchmark, LocaliQ 2025 + sector blends |
Full methodology disclosure
Revenue Loss Estimate is a modeled industry projection, not a measurement of any individual brand's actual revenue loss. The formula uses uniform per-trade traffic benchmarks (5,000 to 15,000 monthly visitors for all roofing brands, regardless of brand size). Each brand's RLE = (benchmark CVR − benchmark CVR × Fervor Score / 100) × benchmark monthly visitors × 0.35 close rate × trade-benchmark avg project value × 12 months. This methodology matches industry-standard comparative analyses (NRCA, IBISWorld, JCHS, Verified Market Reports) for inter-brand comparability. Per-brand RLE is not reliable for comparing brands of different scale, national franchises and small local operators use identical traffic assumptions. Trade-aggregate RLE represents 'addressable conversion-uplift opportunity across the category assuming benchmark traffic', not a sum of measured losses.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Glossary of terms
Definitions for terms used in this report. Where a term is also industry-standard (WCAG, axe-core, Lighthouse), the definition reflects how the Fervor Grade rubric applies it.
- Fervor Grade rubric
- A 100-point, 6-category rubric for evaluating contractor websites on the dimensions that drive lead generation and conversion. Each Site Inspection produces a Fervor Score (numeric, 0 to 100) which maps to a Fervor Grade (letter, A to F) using standard school grading thresholds (A: 90+, B: 80 to 89, C: 70 to 79, D: 60 to 69, F: below 60). Categories are weighted: First Impression (20 pts), Trust & Credibility (22 pts), Lead Capture (20 pts), Mobile Experience (15 pts), Content & SEO (15 pts), Accessibility (8 pts).
- Site Inspection
- An individual brand's Site Inspection. Combines screenshot review of every homepage / service / location / contact page across mobile and desktop viewports, structured DOM extraction (phone numbers, schema markup, form fields, credentials), accessibility evaluation using axe-core (WCAG 2.1 AA compliance check), Core Web Vitals measurement via Google Lighthouse, and call-to-action click-through verification.
- Grade Adjustment
- A post-rubric correction applied to a brand's Base Score when contextual factors warrant it. Examples: a brand running a 24/7 emergency service gets a partial Grade Adjustment if their phone number isn't visible above the fold (the standard rubric penalty is heavier than the actual conversion impact for their trade). Grade Adjustments are tracked with IDs and their net delta is recorded as modifierDelta. The Adjusted Score (final Fervor Score) equals Base Score plus the sum of Grade Adjustment deltas.
- DOM facts
- Structured data extracted from a page's rendered DOM at capture time: schema.org JSON-LD markup, tel: and mailto: links, form field structures, social-media link patterns, manufacturer / certification badges in body text, review widget signatures, alt-text on images, and chat-widget presence. Provides a mechanical second-source-of-truth alongside the visual screenshot.
- Revenue Loss Estimate (RLE)
- A modeled industry projection of annual revenue a contractor is estimated to leave on the table due to website conversion underperformance relative to a top-tier benchmark in the same trade. Computed using LocaliQ 2025 lead-to-customer benchmarks. RLE is a trade-comparability tool, not a per-brand balance-sheet figure. Per-brand RLE is unreliable for comparing brands of different scale because the formula uses uniform traffic assumptions across the trade.
- Addressable opportunity
- The calculated financial lift available across a trade if every brand lifted its on-site conversion rate by the amount its Fervor Score implies. The trade-aggregate RLE expresses this addressable opportunity. Individual brands recover some fraction of their per-brand modeled figure depending on actual traffic, ticket size, and operational execution.
- ADA Title III
- The Americans with Disabilities Act, Title III. Prohibits discrimination by places of public accommodation, which courts have repeatedly held to include commercial websites of brick-and-mortar businesses. The Ninth Circuit's Robles v. Domino's Pizza ruling (2019, U.S. Supreme Court certiorari denied) is the controlling precedent. The Department of Justice's March 2022 guidance reaffirmed Title III's application to commercial websites. Federal courts cite WCAG 2.1 AA as the de facto compliance benchmark for digital accessibility under Title III.
- AODA
- Accessibility for Ontarians with Disabilities Act, 2005. Ontario provincial legislation that requires designated organizations to meet WCAG 2.0 Level AA on public-facing websites and intranets. Compliance reporting is mandatory under Ontario Regulation 191/11. Administrative monetary penalties for non-compliance reach $50,000 per day for an individual and $100,000 per day for a corporation, and accumulate while a violation goes unresolved.
- WCAG 2.1 AA
- Web Content Accessibility Guidelines 2.1, Level AA. The international accessibility standard maintained by the World Wide Web Consortium (W3C). AA is the conformance level most regulators reference. U.S. Department of Justice guidance under ADA Title III, AODA in Ontario, EN 301 549 in the European Union, and Accessible Canada Act regulations all use it. Failure to meet AA is the typical basis for digital-accessibility demand letters and lawsuits.
- Overlay widget
- A JavaScript widget (AccessiBe, UserWay, EqualWeb, AudioEye, Recite Me, and similar) that overlays a settings panel on top of an existing website to expose limited accessibility controls. Overlays do not modify the underlying source code or repair WCAG violations at the DOM level. The Fervor Grade rubric reads the rendered DOM directly and ignores overlay presence.
- axe-core
- Open-source accessibility testing engine maintained by Deque Systems. Scans the rendered HTML/CSS/JS of a webpage and reports violations of WCAG 2.1 against the AA conformance level. Version 4.10.2 used here. Detects issues like missing alt-text on images, insufficient color contrast, keyboard-trap navigation, missing form labels, broken landmark regions, and heading-order failures.
- Landmark regions
- Structural HTML markers (<header>, <nav>, <main>, <aside>, <footer>, and ARIA landmark roles) that allow screen readers and other assistive technologies to skip directly to a page section. Missing or duplicated landmark regions is the single most common axe-core violation across this trade sample. Fixing it is a roughly one-hour developer task, but most contractor sites ship with the defect baked into their builder theme.
- Lighthouse / Core Web Vitals
- Google's open-source page-quality measurement tool. Reports Largest Contentful Paint, Cumulative Layout Shift, Total Blocking Time, First Contentful Paint, and Speed Index, then produces an overall Performance score (0 to 100). Google uses Core Web Vitals as ranking signals in search results, so the metrics affect both user experience and organic visibility.
- Largest Contentful Paint (LCP)
- A Core Web Vital measuring how long it takes for the largest visible content element on the page (usually the hero image or hero headline) to fully render after a visitor lands. Google considers LCP good at or under 2.5 seconds, poor at or over 4 seconds. The trade-sample median sits in the poor range, which depresses both rankings and conversion.
- Cumulative Layout Shift (CLS)
- A Core Web Vital measuring how much visible page elements move or jump unexpectedly during the loading phase. High CLS causes accidental clicks (the user taps where a button used to be, and an ad or a different button slides into that position at the last millisecond). Google considers CLS good at or under 0.10. Most trade-sample sites are within tolerance here.
- Call-to-action (CTA)
- A visual element (button, link, or form) designed to prompt a user to take a specific conversion action. "Free quote / estimate" and "Phone in persistent header" are the highest-adoption CTAs in this trade sample. Generic "Contact us" phrasing is the lowest-converting common pattern in home services and the most common default fallback.
- Trust stack
- The set of credibility signals a contractor surfaces above the fold and within the first scroll: manufacturer certifications, license numbers, named-customer testimonials, before/after galleries, BBB / Google review aggregates, team photography, warranty and financing language. Top-quartile contractor brands in this trade sample surface 5 to 8 distinct trust signals before a visitor scrolls.
- Form bloat
- An intake form with more fields than the trade's conversion economics support, typically anything past five visible fields. Form-abandonment rates rise sharply past that threshold. The trade sample's worst examples ship 25-plus fields on the homepage intake, often because a downstream CRM mapping was never refactored.
- Canonical multi-page layout
- The standard contractor-site structure: homepage, service pages, location pages, and contact. The Fervor Grade rubric rewards page-role coverage because thin sitemaps tend to ship thinner trust signals and weaker SEO surface area. Roughly 80% of trade-sample brands ship this layout.
- Persistent header
- A site header pinned to the top of the viewport as the visitor scrolls. When a contractor's phone number lives inside the persistent header, voice-preferring visitors can call from any depth in the page. When the phone lives only at the very top, it disappears the moment a visitor scrolls past the hero.
Methodology, citation, and credits
About the Contractor CRO Index
The Contractor CRO Index is a public benchmark of how home service contractor websites convert visitors into qualified leads. Every brand is inspected against the same Fervor Grade rubric. Reports are published openly at fervorstudio.ca/contractor/cro-index.
Sample and timeframe
Site Inspections covered 130 roofing contractor websites. Field work ran 2026-04-15 to 2026-05-12. Published May 14, 2026.
Tooling
Accessibility violations were captured with axe-core 4.10.2 across desktop and mobile viewports, against WCAG 2.1 AA. Core Web Vitals were captured with Google Lighthouse. Structured data (schema.org JSON-LD) was parsed directly from rendered HTML. Trust, positioning, and conversion-infrastructure categories were inspected against the rubric with structured DOM evidence.
Recommended citation
"Roofing Contractor Website Performance: State of the Industry 2026." The Contractor CRO Index, Fervor Studio. 2026-05-15. Sample size: 130. Methodology: Fervor Grade rubric.
Short form: (Contractor CRO Index, Fervor Studio, 2026) · Report ID: SoI-Roofing-2026-v3
Limitations
Website-side analysis only. The rubric doesn't measure ad spend efficiency, CRM hygiene, sales-team responsiveness, or post-lead conversion to revenue. And the HTML/DOM-verified evidence layer is in development; until it ships, per-brand specific-evidence claims are excluded from this report. So aggregate findings are mechanical and defensible.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Frequently asked questions about roofing contractor websites
Roofing-specific answers grounded in the 130 sites Fervor Studio inspected in 2026. Every stat below traces back to a captured screenshot, an axe-core 4.10.2 evaluation, or a Google Lighthouse 13.3.0 measurement.
What is the average roofing contractor website score?
Across the 130 roofing contractor websites Fervor Studio Site Inspected in 2026, the mean Fervor Score is 67.82 out of 100. Median is 70. Range runs from 30 to 90. Only 19 brands (about 15%) graded B or better. 64 brands (49%) graded D or F. Most of the trade clustered in the C band.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What are the best roofing websites doing right?
The best roofing websites in the 2026 trade sample share five patterns: a clickable phone number in the persistent header, an inline form on the hero, mobile pages under 2.5 seconds, an online-scheduling tool that actually books a slot, and visible trust signals like Google reviews and named license numbers in the page markup. Brands that earned a Fervor Grade of B or higher hit at least four out of those five. The rest of the trade hits one or two.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
How many roofing contractor websites have a phone number in the header?
64.6% of roofing contractor websites put a clickable phone number in the persistent header. That's 84 of 130 brands, the highest-adoption conversion signal in the roofing trade. It still leaves about 35% of roofing sites making buyers hunt the footer on a phone. And roofing is a phone-first trade. A homeowner whose roof is leaking isn't filling out a contact form, so roofing lead generation lives or dies on whether the phone number is one tap away.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What is the average mobile page load speed for roofing websites?
The typical roofing homepage loads its biggest visible element in about 11.23s on a phone. Google's threshold for "good" is 2.5s; anything over 4s is officially "poor." So the average roofing site sits deep inside Google's poor band. According to Google's page-experience guidance, Core Web Vitals are a ranking signal. Slow pages get dropped down the results page before the form even renders.
Source: Google Lighthouse 13.3.0 (mobile), Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
How many roofing websites have critical accessibility violations?
30.8% of roofing contractor websites carry at least one critical WCAG 2.1 AA accessibility violation. 45.4% carry a serious violation. We checked every page with axe-core 4.10.2 (the open-source accessibility checker the WCAG community trusts). Critical violations are the kind ADA Title III plaintiffs cite in suits like Robles v. Domino's Pizza (9th Cir. 2019). Overlay widgets don't fix this.
Source: axe-core 4.10.2 (WCAG 2.1 AA), Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What should a roofing contractor website include?
Five conversion signals carry most of the score in the best roofing website design we've seen across the trade sample. A clickable phone number in the persistent header (only 64.6% of roofing brands have this). An inline form in the first visible chunk of the page (12.3% have it). Mobile pages that load in under 2.5 seconds. A real online-scheduling tool (33.8% of roofing brands run one). And visible trust signals like Google reviews, named license numbers, and manufacturer credentials a buyer can see.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What schema markup do roofing contractor websites use?
About 83.8% of roofing contractor websites publish some JSON-LD structured data. That number is adoption only. Most stop at Organization or LocalBusiness. Google's structured-data guidelines require every property listed under each rich-result type before a page is eligible to surface. Missing the nested Service, Review, AggregateRating, and FAQPage entities is the actual reason most roofing sites don't earn star ratings in the SERP. SEO for roofing companies is a structured-data game once you get past the basics, and that's where the schema score moves the needle most.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
What conversion infrastructure do roofing websites have?
Five conversion signals were measured on every roofing site. Phone in persistent header: 64.6%. Inline form on the hero: 12.3%. Chat widget installed: 31.5%. Online scheduling tool (Calendly, Acuity, Square Appointments, or a real booking widget): 33.8%. The conversion floor is thin. A homeowner with a leaking roof who lands at midnight on a roofing site without any of these signals just goes back to Google.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
How many roofing websites surface Google reviews?
71.5% of roofing contractor websites surface their Google reviews somewhere a buyer can see them. A brand qualifies if their site links to their Google Business Profile, runs a review widget (NiceJob, BirdEye, Podium), publishes a structured review block, or just writes "4.9 stars on Google" in the page copy. So a third of roofing brands run their entire site without showing the social proof a homeowner is hunting for in the first ten seconds.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
How is Fervor Studio measuring roofing contractor websites?
Same process on every brand. We capture screenshots at desktop and mobile width across every page our crawler can reach. We read the underlying page (forms, structured markup, phone and email links, manufacturer badges, review widgets, chat widgets). We run axe-core 4.10.2 against WCAG 2.1 AA. And we measure Core Web Vitals with Google Lighthouse 13.3.0. That's about 150 individual measurements per page. The Fervor Grade rubric then scores what we captured.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Why do most roofing contractor websites score below 80?
Because the trade hasn't built the basic conversion plumbing other industries built five years ago. 49% of roofing brands graded D or F. Only 1% earned an A. The strongest category across the roofing trade sample was First Impression. The weakest was Lead Capture. So the gap isn't about who's the best roofer in town. It's about which roofing site actually turns a midnight emergency call into a booked job.
Source: Fervor Studio, Contractor CRO Index 2026 (n=130 roofing brands)
Want to see how your roofing site scores against the best roofing websites in the 2026 sample? Start with a free Site Inspection, or jump into the roofing marketing and website design guide for the upstream playbook that drives most of these scores. Compare side-by-side with the remodeling report or the cross-trade overview.