On 23 September 2026 the first page of results for “roofing company website examples” was ten design showcases and vendor guides — sites picked for how they look, from anywhere in the country. I wanted the local number instead: on the websites of the roofers a search actually shows in West Michigan, what is standard, and where is the gap a roofer could own? So I took the first ten local listings for roofers in eight towns and read every homepage.
The baseline is high. On 23 September 2026 I read the homepages of the roofers Brave Search lists for Grand Rapids, Wyoming, Kentwood, Grandville, Holland, Muskegon and Kalamazoo — 54 businesses, 52 with a website, 46 of those that could be read. All 46 are on HTTPS, 45 are built for phones, 40 offer a free estimate or inspection and 37 have a tap-to-call link. A roofing site without those four is behind almost every competitor it sits next to.
The gaps are where a roofer can stand out without spending more. Only 4 of the 46 show what a roof costs. Only 4 print their Michigan licence number, although 20 say “licensed and insured”. 10 have an FAQ, 12 let a visitor book or schedule online, 13 show reviews on the page, and the typical site names 2 of the 8 towns in the survey. A roofing website should have the baseline, then as many of those gaps closed as are true for the business.
That is how we build them: our contractor websites start at $999 for up to three pages, and the Business Site ($2,499 starting, 5–8 pages) carries local schema, reviews and analytics, with a page per service. The measurement below is free to use whether or not you ever talk to us.
Most advice about roofing websites is written by the companies selling them, and it lists everything: galleries, drone video, chat widgets, twenty pages of service-area copy. A roofer reading it cannot tell which items are table stakes in their own market and which would actually set them apart. That depends on what the other roofers a homeowner compares you with already have — and that can be counted. This page counts it for West Michigan, then says what I would put on a roofing site as a result.
On 23 September 2026 I asked the Brave Search API for its local results for “roofers <town> MI” in the eight towns I track — Grand Rapids, Wyoming, Kentwood, Grandville, Walker, Holland, Muskegon and Kalamazoo — and took the first ten listings in each. These are Brave’s local listings, not Google’s map pack: the roofers a search engine shows for the town, not a ranking. Walker returned no local listings at all, so it is not in the numbers. The other seven gave 70 listings; a roofer listed in several towns counts once, which leaves 54 businesses (9 of them appear in two or more towns, one in four). Two listings name no website. Of the 52 websites, 46 could be read: two domain names no longer resolve, two timed out on three tries, one refuses automated fetches (usually a firewall rather than a dead site), and one is drawn by script after it loads, so a single fetch — the way a crawler or an AI engine reads a page — sees no words at all.
I fetched each homepage once with curl, the way a search crawler or an AI engine does, and read the HTML for the signals in the table: a tel: link, LocalBusiness-family schema, an FAQ (FAQPage schema or an FAQ heading), a phone viewport, a contact form in the page, a review widget or a printed star rating or review count, a scheduling widget or book-online link, and the phrases a homeowner looks for — free estimate or inspection, financing, emergency or 24/7, licensed and insured, a licence number, a warranty or guarantee, insurance claims or storm and hail damage, and a shingle maker or its contractor programme. Every dollar figure on a page was read by hand to tell a price from an offer. The raw files are in the receipts.
| What the homepage has (46 roofer sites, read 23 Sep 2026) | Sites | Of 46 |
|---|---|---|
| HTTPS | 46 | 100% |
| A phone viewport (built for mobile) | 45 | 98% |
| A free estimate or free inspection offer | 40 | 87% |
| A tap-to-call link | 37 | 80% |
| LocalBusiness-type schema markup | 29 | 63% |
| A warranty or guarantee mentioned | 28 | 61% |
| Insurance claims, storm or hail damage mentioned | 27 | 59% |
| A contact form in the page’s HTML | 26 | 57% |
| “Licensed and insured” | 20 | 43% |
| Financing or monthly payments mentioned | 20 | 43% |
| Emergency or 24/7 service mentioned | 18 | 39% |
| Reviews shown on the page (widget, star rating or count) | 13 | 28% |
| A book-online or schedule link, or a scheduling widget | 12 | 26% |
| An FAQ | 10 | 22% |
| A shingle maker or its contractor programme named | 9 | 20% |
| A price or price range | 4 | 9% |
| A Michigan licence number | 4 | 9% |
| Town (23 Sep 2026) | Sites read | Free estimate | Tap-to-call | Schema | Insurance claims | Reviews | FAQ |
|---|---|---|---|---|---|---|---|
| Grand Rapids | 9 | 7 | 6 | 6 | 4 | 3 | 3 |
| Wyoming | 10 | 8 | 10 | 6 | 4 | 2 | 0 |
| Kentwood | 10 | 8 | 8 | 8 | 4 | 2 | 3 |
| Grandville | 10 | 10 | 8 | 7 | 4 | 2 | 2 |
| Holland | 8 | 7 | 7 | 4 | 6 | 2 | 1 |
| Muskegon | 6 | 6 | 6 | 4 | 4 | 1 | 0 |
| Kalamazoo | 8 | 8 | 7 | 4 | 6 | 5 | 3 |
| Walker | no local listings returned — not measured | ||||||
Every town but Walker gave ten listings. One Grand Rapids homepage is drawn by script and could not be read; Holland’s ten were nine businesses, one listed twice, and one of their sites did not load; Muskegon’s included two with no website and two whose sites did not load; Kalamazoo’s included two that did not load. The town rows count a roofer once per town, so a business listed in Grand Rapids, Wyoming and Kentwood appears in all three rows; the first table counts it once. Read across the towns and the pattern holds everywhere: the free estimate and the phone link are nearly universal, and reviews and an FAQ are rare in every town, not just one.
Four things are close to universal. Every one of the 46 readable homepages is on HTTPS and 45 are built for a phone screen, so neither is an advantage any more — only a liability if missing. 40 offer a free estimate or a free inspection, and 37 have a tap-to-call link; 33 have both. Across the 39 top-ranked Grand Rapids trade sites I read on 15 September the tap-to-call count was 32 — the same shape. Nine of these 46 have no tap-to-call link a crawler can see.
Three more are in the majority. 29 carry LocalBusiness-type schema, the markup that tells a search engine what the business is and where; 28 mention a warranty or guarantee; and 27 talk about insurance claims or storm and hail damage — the roofing-specific one, and a common reason a homeowner starts searching after a bad storm. If you do insurance work and your homepage does not say so, you are missing the most roofing-specific signal on the list. A contact form sits in the HTML of 26 homepages; the true number may be higher, because forms drawn by script after the page loads are invisible to one fetch, and a short form is still the second route after the phone.
42 of 46 roofing homepages give a homeowner no idea what a roof costs.
A price. Eight homepages print a dollar figure, and I read each one by hand (read 23 September 2026). Four are prices: a cost table by roofing material, a ballpark calculator running from $5k to $40k, “starting at” prices for repairs, and an average-cost-per-project counter. The counter is drawn by script, and the HTML a crawler or an AI engine receives reads “$0k” — so to anything that is not a person, that site shows no price at all. Two more figures are offers ($1,000 off a new roof, $0 down), and two are not prices (a licensing threshold and an insurance amount). That leaves 42 of 46 roofing homepages with no idea of cost, which is the question every homeowner arrives with. A range with the assumptions stated is enough; the case for it is on the prices page.
A licence number. Michigan’s Occupational Code covers anyone paid to repair, alter or improve a house — a “residential maintenance and alteration contractor” in MCL 339.2401 — and MCL 339.2403 exempts only a project whose total price is under $600 (both read on legislature.mi.gov, 23 September 2026). Re-roofing a house for pay sits squarely inside that. 20 of the 46 homepages say “licensed and insured”; 4 print the number. The state’s licensing agency, LARA, runs a public “Find / Verify a Licensed Professional or Business” lookup that covers residential builders (michigan.gov/lara/online-services, read 23 September 2026), so a printed number is a claim any homeowner can check in a minute — which is exactly why it is worth more than the phrase.
Reviews, an FAQ and booking. 13 of 46 show reviews on the page — a widget, a printed star rating or a printed count — so 33 give a visitor comparing roofers no rating to see without leaving. The honest ways to do it, and the one Google rule that matters, are on the reviews page. 10 have an FAQ, which is the cheapest place to answer cost, timing, insurance and permits before the phone call (why and how). 12 offer a book-online or schedule link; in a housing campaign I ran, a calendar link beat a free estimate — a different market, so for a roofer it is worth testing rather than assuming.
Where you work. The homepages name a median of 2 of the survey’s 8 towns; 3 name none and 10 name four or more. A homeowner in Kentwood wants to see Kentwood. Name the towns you serve on the homepage and in your schema. A separate page per town is worth it only when you have something true and specific to say about each one — jobs done there, a local permit rule, a crew based there — not the same page with the town name swapped, which search engines treat as doorway pages.
Maker programmes and weight. 9 name a shingle maker or its contractor programme (GAF, Owens Corning, CertainTeed and the like). If you hold one, it belongs on the homepage with what it adds to the warranty. And the homepages are heavy: the median HTML alone is 225 KB before images and scripts, and the largest is 1.3 MB — worth knowing, because speed on a phone on a job site is part of the same visit.
| Element | West Michigan roofers (of 46) | Verdict |
|---|---|---|
| HTTPS and a phone-ready layout | 46 and 45 | Table stakes. Missing either puts you behind every competitor. |
| A free estimate or inspection offer | 40 | Table stakes. The difference is how easy the next step is. |
| A tap-to-call link | 37 | Yes. Nine of the 46 have no tap-to-call link a crawler can see. |
| LocalBusiness schema | 29 | Yes. Cheap, and it tells search engines what and where you are. |
| Storm, hail and insurance-claim help | 27 | Yes, if you do the work. It is the roofing-specific reason people search. |
| A warranty, stated plainly | 28 | Yes. Say what it covers and for how long. |
| Reviews on the page | 13 | Yes. A widget or a rating and count linked to Google; 33 of 46 show no rating, count or widget. |
| An FAQ | 10 | Yes. Answer cost, timing, insurance and permits. |
| A price or price range | 4 | The biggest gap. A range with its assumptions beats silence. |
| Your licence number | 4 | Yes. Free, checkable in a minute, and 42 of 46 leave it off. |
| Book or schedule online | 12 | Worth testing against the phone and the form. |
| The towns you serve, named | median 2 of 8 | Yes on the homepage; a page per town only with something true to say. |
A roofing site we build starts from this list rather than a template: the baseline four, schema, the insurance and storm work if you do it, a warranty stated plainly, reviews pulled from your Google profile, an FAQ that answers cost and insurance, your licence number, and the towns you actually serve. The Starter Site is from $999 for up to three pages, or $149 a month for twelve months; the Business Site is $2,499 starting for five to eight pages with a page per service, which is how most roofers end up with separate pages for repair, replacement and insurance work (how many pages a contractor site needs). Everything on this page applies whether or not we build yours.
The sweep. Brave Search API local results for “roofers <town> MI” in eight towns, read 23 September 2026 between 12:39 and 12:41 UTC, first ten listings each; Walker returned none. Businesses listed in more than one town counted once by website host. Each homepage fetched once with curl on 23 September 2026. Raw rows, one file per town plus the regional file: ops/search/measurements/local-sweep/roofers-*-2026-09-23.json and roofers-west-michigan-2026-09-23.json. Business names are kept in those files for audit; this page publishes totals only. Re-read the same day after the method was tightened: one Grand Rapids homepage turned out to be drawn by script and moved from read to unreadable, so the counts are over 46, not the 47 first published.
The statute. Michigan Occupational Code, MCL 339.2401 (definitions) and MCL 339.2403 (the $600 exemption) (legislature.mi.gov), read 23 September 2026.
The licence lookup. LARA online services, “Find / Verify a Licensed Professional or Business” (michigan.gov/lara/online-services), read 23 September 2026.
Page one. Brave Search web results for “roofing company website examples”, read 23 September 2026: ten design showcases and vendor or agency guides, none measuring a local market.
Our own terms. The service pages of this site as published: Starter Site from $999 or $149 a month for twelve months; Business Site $2,499 starting, 5–8 pages.
The baseline West Michigan roofers already have: HTTPS, a phone-ready layout, a free estimate or inspection offer and a tap-to-call link (46, 45, 40 and 37 of the 46 homepages read on 23 September 2026). Then the gaps most of them leave open: a price or price range (4 of 46), a Michigan licence number (4), an FAQ (10), reviews on the page (13), online booking (12) and the towns you serve by name.
A range, yes. Only 4 of 46 West Michigan roofing homepages read on 23 September 2026 show what a roof costs — a cost table by material, a ballpark calculator, starting-at repair prices and a script-drawn counter that crawlers read as zero. The other 42 leave a homeowner with no idea of cost, which is the first question they have. State the range and what moves it: size, pitch, material, tear-off.
Michigan’s Occupational Code covers anyone paid to repair or improve a house (MCL 339.2401) and exempts only a project under $600 in total (MCL 339.2403, read 23 September 2026). Put the number on the site: 20 of 46 West Michigan roofing homepages say “licensed and insured” but only 4 print the number, and anyone can check it in LARA’s public licence lookup.
Send me your website. I'll run the same read on it and tell you which of the twelve it has, which your three nearest competitors have, and what to fix first.
Works whether or not you end up working with me.