A roofer with 176 town pages gets its rankings from the blog, at least in the snapshot I took on August 23, 2026. The site came up in an SEO group I’m in, and I took it apart page by page. Every one of the 182 keywords a national keyword database had it ranking for went to an informational article. Its best organic ranking in a town search came from a long area page, not from the page built for that service in that town.
What the roofer’s site is made of
What the roofer’s site is made of is a big grid of programmatic pages around a smaller core of real content. It’s a real company, licensed and certified by a shingle maker, with a real address and a well-reviewed Business Profile. The site runs on WordPress after a move off Wix in May 2026, and the domain was first seen in February 2025.
| Page type | Pages | What’s on them |
|---|---|---|
| Service-by-town pages | 176 | 8 services times 22 towns, about 870 words each, about 70% template overlap, one unique section per town on its housing stock |
| Resources articles | 51 | Six sections, every article bylined with the owner’s name and state license number, with Article markup |
| Service-area pages | 22 | One per town, about 1,700 words each |
The structured data is thorough too, down to the Business Profile’s place ID used as an identifier. On paper, this is a site built to win every service in every town.
Where the roofer’s rankings come from
Where the roofer’s rankings come from is the resources hub, a blog in all but name. In the national keyword database I checked, the site ranked for 182 keywords, and all 182 were informational queries answered by articles in that hub: a shingle maker’s warranty registration at #9, the cost of class 4 shingles at #15, chimney flashing at #20 and plywood roof decking at #25. None of the 182 went to a service-by-town page.
All 182 keywords went to the articles, not the town pages.
That hub holds 51 articles. The town grid holds 176 pages and, in that database, none of the 182 keywords.
The #2 city ranking came from an area page
The #2 city ranking came from an area page, not the town page. In a live search set to the company’s state, a “roof replacement” search for one of its towns put the site at #2 in the organic results, and the page Google chose was the 1,700-word service-area page for that town. The roof replacement page built for that exact town wasn’t the one ranking.
For a “roofing contractor” search in another of its towns, it was #2 in the map pack and #5 in the organic results. My read is that the map pack spot belongs mostly to the Business Profile, so I count it as a Business Profile result, not a page result.
Why 176 town pages don’t carry the site
Why 176 town pages don’t carry the site is my read, not something the snapshot proves. Each one runs about 870 words, and about 70% of that is shared template; the unique part is one section about the town’s housing stock. The area page that ranked runs about 1,700 words.
Google’s spam policies describe doorway abuse with examples like pages targeted at specific cities that funnel users to one page, and substantially similar pages that sit closer to search results than to a clear, browsable hierarchy. A grid of eight services times 22 towns at 70% overlap is close to that description. I’m not saying Google has penalized this site, and nothing in the snapshot shows that. What it shows is that the pages built to rank in each town aren’t the ones doing the ranking.
What I’d copy from this roofer, and what I wouldn’t
What I’d copy from this roofer, and what I wouldn’t, comes straight out of where the rankings were. I’d copy:
- A resources hub of real, bylined guides, since that’s where every one of the 182 ranking keywords went.
- Long area pages, like the 1,700-word page that won the city spot, over thin pages near 870 words.
- A few sub-area pages built around the local housing stock, the one part of the town pages that was unique.
What I wouldn’t copy is the grid of 176 service-by-town pages. In this snapshot it carries the doorway risk and none of the rankings. I’d rather build a town page only when the town gives it something real to say, which is the idea behind how I decide which city pages get built.
The bylines are worth a mention too. Every article names the owner and a state license number, a detail no page template supplies on its own. Whether it helps rankings, this audit can’t say.
How I audited the roofer’s site
How I audited the roofer’s site came down to one pass on one day.
- Date
- August 23, 2026
- Pages
- All 309 URLs, sorted by page type, with word counts and template overlap for the town pages
- Rankings
- Two live searches set to the company’s state, map pack and organic
- National keywords
- One keyword database’s list of the site’s ranking keywords, 182 in all
- Not measured
- The effect of backlinks, traffic, calls and leads
What the town pages tell other local sites
What the town pages tell other local sites is that more pages isn’t the same as more rankings. This roofer built 176 pages to cover every service in every town, and in this snapshot Google sent its city ranking to a long area page and its national rankings to the resources hub. If you’re planning a grid of service-by-town pages, look first at which of your pages already rank, and what they have that the grid wouldn’t.
Sources
- Spam Policies for Google Web Search (Google Search Central)