Every checklist of what a contractor website "should include" was written without opening a contractor website. So I opened 39 — the plumbers, roofers, HVAC companies and electricians Google Maps ranks first in Grand Rapids — and counted what is actually there.
All 39 use HTTPS and 32 have a tap-to-call phone link. Those two are table stakes: without them you are the odd one out on page one.
The middle is genuinely mixed. 30 link to at least one service page, 32 carry some structured data, 26 have a contact form, 23 link a privacy policy, 23 have a blog. Having these puts you with the majority, not ahead of it.
Nobody — 0 of 39 — offers a tap-to-text link, and only 8 have an FAQ block. Those are the open doors, and both are cheap.
Search "what should a contractor website include" and page one is a domain registrar, a federal agency and a few small agencies, each with a bulleted list of must-haves. The lists are reasonable. They are also written from the armchair: not one of them opens a real contractor site to see whether the must-haves are actually there on the sites that win.
That is a fixable gap. Google Maps already tells you which trade sites in Grand Rapids are winning. All you have to do is look at them.
The generic lists agree on a core: a phone number you can tap, a contact form, a page per service, reviews, an about page, a blog, a privacy policy, a fast mobile layout. Some add "SEO" as a line item, which is like adding "be good" to a recipe.
Take one page-one result, a marketing agency's "12 elements every site must have" (contractorsmarketingpros.com, read 15 September 2026). Its first element is an "above-the-fold phone number, tap-to-call on mobile"; its seventh is "service pages for every service, every city"; the rest run through a trust bar, a reviews carousel, financing, a speed target and a sticky mobile footer. It is a sensible list. It also cites no sample: the one statistic in it arrives without a source, and no real contractor site is opened to see whether the winners actually do any of it.
Rather than write a fortieth version of that list, I measured it. On 15 September 2026, between 17:15 and 17:21 UTC, I fetched one home page and one robots.txt for each of the 40 businesses Google Maps ranked in its first ten for four searches in Grand Rapids: plumber, roofing company, HVAC company and electrician. 39 answered; one electrician's site timed out and is not counted. Then a script checked each home page for the things the checklists say you need.
Two caveats up front. This is the HTML the server sent, not what a browser renders afterwards, so anything a script injects later is invisible here. And it is one reading on one day. Both are stated again in the receipts below.
The "what it does" column is my read as a builder, except where it quotes Google. The counts are the measurement.
| Element | Of 39 | Plumbers · Roofers · HVAC · Electricians | What it does | Verdict |
|---|---|---|---|---|
| HTTPS | 39 | 10/10 · 10/10 · 10/10 · 9/9 | Encrypts the connection; the browser shows a padlock instead of "Not secure". Google's page-experience self-assessment asks "Are your pages served in a secure fashion?" and adds "There is no single signal" (developers.google.com, read 15 September 2026). In my experience it is also the one item every host now gives away, which is why it is universal. | Table stakes |
Tap-to-call (tel: link) | 32 | 9/10 · 7/10 · 9/10 · 7/9 | On a phone, the number is one tap from ringing. Without it the visitor copies digits into the dialler, and some will not bother. Builder's opinion. | Table stakes |
| robots.txt | 36 | 8/10 · 10/10 · 9/10 · 9/9 | Tells crawlers which paths to skip. Four of the 36 name an AI crawler; none blocks one site-wide. | Table stakes (see below) |
| Service-page link (at least one) | 30 | 9/10 · 7/10 · 8/10 · 6/9 | A page per service gives Google a page to rank for "water heater repair" instead of hoping the home page covers it. Median 5 service links; one mega-menu had 71. | Middle |
| Any structured data (JSON-LD) | 32 | 8/10 · 8/10 · 10/10 · 6/9 | Google's definition: "a standardized format for providing information about a page and classifying the page content" (developers.google.com, read 15 September 2026). On a contractor site it is often just a page-builder default, which is why the next row is smaller. | Middle |
| Business-type schema node | 23 | 5/10 · 6/10 · 7/10 · 5/9 | A node that says "this is a Plumber (or HVACBusiness, RoofingContractor, Electrician) at this address with this phone". The deliberate version of the row above. | Middle |
| Contact form | 26 | 7/10 · 7/10 · 7/10 · 5/9 | A second way in for the people who will not call. Thirteen top-ranked sites make you phone or email. | Middle |
| Privacy-policy link | 23 | 6/10 · 7/10 · 7/10 · 3/9 | Discloses what the site collects. Legally sensible on any page with a form or a pixel; visibly optional to 16 of the 39. | Middle |
| Blog / news link | 23 | 5/10 · 6/10 · 7/10 · 5/9 | Somewhere to publish pages that are not services. Sixteen sites rank in the first ten without one. | Middle |
| FAQPage schema | 8 | 3/10 · 3/10 · 0/10 · 2/9 | A marked-up question-and-answer block. Answers the questions a caller would ask, on the page, in a form machines can read. No HVAC company on page one has one. | Open door |
Tap-to-text (sms: link) | 0 | 0/10 · 0/10 · 0/10 · 0/9 | One tap opens a text to the business. Same idea as tap-to-call, for the customer who is at work and cannot take a call. One line of HTML. | Open door |
Table stakes. HTTPS is on every site. Tap-to-call is on 32; the seven without it are spread across every trade, so it is not a trade habit, it is an oversight. If your site lacks either, fixing it does not put you ahead of anyone, it stops you being behind.
The middle. Everything from service pages down to the blog sits between 23 and 32 of 39, which is another way of saying a clear majority has it and a real minority ranks fine without it. HVAC companies are the most thorough group: all ten carry some structured data, seven of ten have a blog, seven a privacy link. Electricians are the thinnest: three of nine link a privacy policy, six of nine carry any schema. If you are an electrician, the bar in your trade is lower than the table's overall column suggests.
Open doors. No site in the sweep lets you tap to text it. Eight have an FAQ block, and zero of the ten HVAC sites do. Neither costs anything beyond the copy, and the copy is the part I write anyway.
Thirty-nine sites, four trades, and not one of them will let you text it. That is not a hard thing to be first at.
Sample: the businesses in Google Maps' first ten for plumber, roofing company, HVAC company and electrician in Grand Rapids, Michigan, on 15 September 2026 (40 listed, 39 measured, one timed out at 20 seconds). One fetch of the home page and one of /robots.txt per site, 17:15–17:21 UTC, no retries. Counts are on the served HTML only. A tel: or sms: link means an href starting with that scheme; a service-page link means an internal path containing a services segment or a trade word; a form means a <form> tag; a robots.txt counts only if it returned 200 and contains a robots directive. One reading, one day. The same 40 businesses are behind the review counts (twelve top-three spots held 22 to 12,142 reviews, all rated 4.4 or better), the schema counts and the one that found all 40 have a site; a separate ten-site reading measured mobile speed (median score 59).
Three defects turned up that no checklist warns you about, because they are the kind of thing you only see when you look at the actual HTML.
A home page with no <title>. One of the 39 serves a home page with no title tag at all. The browser tab shows the URL, the search result shows whatever Google improvises, and the single most-read line of the site is blank. This is a site that ranks in the first ten anyway, which tells you how much reviews and proximity are carrying it.
The wrong city in the title. Two home pages carry a different city in their title than the one they rank in. Usually this is a business that started in a neighbouring town, grew into Grand Rapids and never updated the one line Google quotes back to searchers. Both rank in the first ten regardless, but the first thing a Grand Rapids searcher sees is a town they did not search for.
Robots files that are not robots files. Three sites answer /robots.txt with HTTP 200 and a web page. A crawler asking for the rules gets a home page dressed as a text file. It is harmless in the sense that no rules means no restrictions, but it means the site's host is serving its "not found" page with a "found" status, and that habit tends to show up elsewhere too.
One more number that is not a defect so much as a weight. The median home page in the sweep is 202 kB of HTML before a single image or script loads; the heaviest is 1,173 kB. HTML alone does not decide speed, but a megabyte of markup on a home page is a page-builder's fingerprint, and the speed reading shows where that ends up on a phone.
Here is my Starter Site, and the Business Site above it, laid against the same rows. Honestly: the Starter tier does not include a blog or a page per service.
| Element | Starter Site · $999 | Business Site · $2,499 |
|---|---|---|
| HTTPS | Yes | Yes |
| Tap-to-call | Yes: lead form + click-to-call is in the tier | Yes |
| Tap-to-text | Not a line item on either tier. It is one link, and I add it on any build where the number takes texts. | |
| Contact form | Yes | Yes |
| Correct title, city included | Yes: on-page SEO + Google setup | Yes: copywriting + on-page SEO |
| Business-type schema node | Not in the tier | Yes: local schema |
| Page per service | No: 1–3 pages total | Yes: 5–8 custom pages |
| Reviews on the site | Not in the tier | Yes |
| Analytics | Not in the tier | Yes |
| Blog | No | No |
| FAQ block | Not a line item on either tier. It is copy, and I write the copy, so ask for it. | |
| Privacy policy page | Not a line item on either tier; a page with a form should have one, so raise it when we scope. | |
Both tiers are a fixed price and a date in writing, and you own everything at the end. If you already have a site and want to know where it sits on the first table before spending anything, the Site & Business Audit is $750 one-off: a written report in three business days, 190-plus checks per page, which is a longer version of the script that produced these counts.
Three questions, in order.
1. Does your number ring when tapped on a phone? Open your own site on your phone and tap the number. If nothing happens, you are one of the seven, and it is the cheapest fix on this page. Any tier covers it, and so does a competent fifteen-minute edit to your current site.
2. Do you want to be found for each service, or for the business? If you are a two-person outfit that does one thing, a 1–3 page Starter Site with the right title and a tap-to-call link covers the table stakes and most of the middle. If you sell four or five services and want Google to have a page to rank for each, the Starter is the wrong tier, and I will say so on the call; 30 of the 39 sites you are up against link to service pages, median five.
3. Do you want the open doors? A text link and an FAQ block are the two things nobody on page one has. Neither is a budget question. If you want them, say so at scoping and they go in.
Measured against the 39 top-ranked trade sites in Grand Rapids: HTTPS (39 of 39) and a tap-to-call phone link (32 of 39) are the two things almost everyone has. A majority also link to at least one service page (30), carry some structured data (32), have a contact form (26), link a privacy policy (23) and have a blog (23). Nobody offers a tap-to-text link and only 8 have an FAQ block, so those are the two cheapest ways to have something your competitors do not.
About six in ten. On 15 September 2026, 23 of the 39 top-ranked Grand Rapids plumber, roofer, HVAC and electrician home pages linked to a blog or news section: 5 of 10 plumbers, 6 of 10 roofers, 7 of 10 HVAC companies and 5 of 9 electricians. So a blog is common at the top but far from universal, and 16 sites rank in the first ten without one.
It is not required, but most of the top-ranked sites have some. 32 of 39 home pages carried at least one JSON-LD block, 23 carried a node describing the business itself (a Plumber, RoofingContractor, HVACBusiness, Electrician or LocalBusiness type) and 8 carried FAQPage markup. Seven sites rank in Google Maps' first ten with no structured data at all, so it is a majority practice rather than a gate.
For the table stakes, yes: a Starter Site at $999 is 1 to 3 pages, mobile-first, with a lead form and click-to-call, on-page SEO and Google setup, live in days. That covers HTTPS, tap-to-call, a form and a correct title. It does not include a blog or a page for each service; 30 of the 39 top-ranked sites link to at least one service page, with a median of five. If you sell several services and want a page for each, that is the Business Site at $2,499 (5 to 8 custom pages, copywriting, local schema, reviews, analytics).
Send me your URL. I'll tell you which of the eleven rows you have, which you are missing, and whether the fix is a fifteen-minute edit or a rebuild — before you spend anything.
Fixed price and date in writing. You own everything at the end.