Local SEO Tips for Northern Michigan | Traverse City SEO

7 SEO Mistakes Traverse City Roofing Companies Are Making Right Now

Written by Traverse City SEO | Jul 5, 2026 6:39:52 PM

We audited five roofing company websites serving the Traverse City area, checking site structure, page content, and basic technical setup the way Google actually reads them. The goal was to get a clear-eyed look at the actual quality of local SEO work happening on the ground here in Traverse City, not theory or best-practice guides, but what's actually live on real roofing company sites today.

SEO mistakes exist.

Every site we looked at had at least two of the same seven mistakes, and one mistake showed up on four out of five. None of these are exotic technical failures that need a developer to explain. They're the kind of thing that happens when a site gets built fast, gets left alone, and nobody circles back to check the work, the exact gap our home services SEO work is built to close.

Here's what we found, what it costs a roofing company in practice, and what the one site that avoided most of these problems did differently.

The Audit Scorecard: 5 Sites, 7 Mistakes
Mistake Site A Site B Site C Site D Site E
1. Templated doorway location pages
2. Multiple pages competing for one city
3. Service areas beyond real presence
4. Duplicate or cloned content
5. Boilerplate meta descriptions
6. Test or placeholder pages still live (4 of 5 sites)
7. Broken links baked into the template
Sites labeled A through E to protect anonymity. Site E is the one covered in the "what good looks like" section below, and the only one to clear the audit clean.

1. Location Pages Built From the Same Template With the City Swapped

The most common mistake we found: a page built for one town, then duplicated dozens of times with only the city name changed. Google calls these doorway pages, and its spam policies are direct about them: pages built to rank for many similar keyword variations, with little unique value beyond a swapped location name, are a violation.

One site we looked at had roughly 50 town-specific pages built from the same template, with the meta description reading almost word for word the same across every one of them. Worse, on one page targeting a Northern Michigan town, part of the body copy still referenced a completely different city, the kind of leftover placeholder text that happens when a template gets copied faster than it gets proofread. If a page can't tell which town it's actually for, neither can Google, and neither can the homeowner reading it. This is the kind of issue our technical SEO reviews catch before it costs a business real ranking position. The fix: write real, specific content per town, or consolidate into fewer pages that actually earn their place.

2. Multiple Pages Fighting Over the Same City

A close second: two, three, sometimes four separate pages on the same site all targeting the exact same town. One roofing company had a general location page, a "roof repair in [city]" page, a "roof installation in [city]" page, and a "professional roofing company in [city]" page, all live at the same time, all trying to rank for close variations of the same search.

This is called keyword cannibalization, and it doesn't split your ranking power evenly across four pages. It usually just confuses Google about which page is the real answer, and all four end up ranking worse than one strong page would, a pattern we cover in more depth in this post on Google visibility. If you're not sure how many of your own pages are competing with each other, our local SEO service starts with exactly that kind of audit. The fix: pick one page per city, redirect or merge the rest into it.

3. Serving Cities the Business Doesn't Actually Operate In

A few sites listed service areas that stretched hundreds of miles beyond any real branch or crew location, sometimes across three or four separate metro areas that share nothing in common except being roughly in the same state. One company had zero physical presence anywhere near a town it had built a full location page for.

Google's local ranking signals lean heavily on proximity and relevance to a specific place. Whitespark's research consistently finds proximity and physical presence among the strongest signals for map pack visibility. Stretching your service area on paper doesn't stretch your actual rankings the same way, it usually just dilutes the relevance signal for the towns you do serve well, including a town like Traverse City itself, where local competition for roofing searches is already tight. The fix: list the towns you can actually reach with a crew the same day, and drop the rest.

CURIOUS WHAT WE'D FIND

Want to know if your site has these same problems?

We'll run the same checks on your site that we ran on these five, free, no obligation.

Get your free SEO audit →

4. Duplicate Content, Sometimes Published Twice on Purpose

On more than one site, we found blog posts and location pages that existed twice under nearly identical URLs, one with a "-2" added to the end. Not similar content. The same content, published a second time. On another site, a page URL still had the word "cloned" in it, left over from whatever tool generated it.

Duplicate content doesn't get penalized the way people assume, but it does force Google to pick a winner between two pages that should have been one, and that decision doesn't always go the way you'd want, as Moz's research on the topic lays out. The fix: run a crawl, find the duplicates, and 301 redirect one into the other.

5. Meta Descriptions That Are the Same Boilerplate, City After City

Several sites reused the exact same meta description template across every location page, with only the city name changed: "Expert roofing solutions in [city]. Quality service and reliable craftsmanship guaranteed." That's not a description of what makes that page useful. It's a placeholder that never got replaced with something specific.

A meta description is the pitch a homeowner reads before they click. When it's identical on fifty pages, it stops doing that job on any of them, and it tells Google the pages behind it probably aren't that different either. The fix: write one unique, specific sentence per page about what actually makes that page useful.

6. Test Pages, Old Pages, and Placeholder Content Still Live

This was the most surprising find. One site had an entire blog post still filled with Lorem Ipsum placeholder text, the Latin filler copy designers use before real content gets written, published and indexed for months. Another had a page literally named "sample-test-page" still sitting in its sitemap. A third had footer links pointing to a staging domain that was never supposed to go public.

These aren't ranking factors in the technical sense. They're signs nobody did a final pass before the site went live, and Google's algorithms have gotten better at reading that kind of neglect as a trust signal, not just a content gap. The fix: crawl your own sitemap once a quarter and delete or noindex anything that isn't a real page.

7. Broken Internal Links Baked Into the Site Template

On one site, several navigation links were missing a slash between the domain and the page path, a small coding error that likely repeats on every single page since it lives in the template, not the content. Broken internal links waste crawl budget and quietly bleed the link authority that should be flowing between your own pages. The fix: run a broken-link check sitewide, since one template error usually means it's on every page, not just one.

None of these seven mistakes require a rebuild. Most of them are a cleanup project: consolidate the duplicate pages, rewrite the meta descriptions, delete what's stale, fix the template. The sites that struggle aren't usually the ones with a fundamentally broken strategy. They're the ones where nobody went back to check the work after launch, the same lesson that applies to Google Business Profile upkeep, another asset that quietly decays without regular attention.

What the One Site That Got It Right Did Differently

One roofing company's site stood out for the opposite reason: every town page we checked had real, specific local content. The Cadillac page mentioned Lake Cadillac and Lake Mitchell by name and named the surrounding towns it also serves. The Traverse City page referenced Old Town, Garfield Township, and East Bay, actual neighborhoods, not a city name dropped into a generic paragraph.

Each town had exactly one page, not three or four competing for the same search. The service area stayed within a realistic drive of the business's actual location. Nothing about the approach was complicated. Someone just took the time to write real content for each place instead of running a find-and-replace on a template.

That's really the difference between the sites that struggle and the one that doesn't: not budget, not a bigger team, just whether someone did the actual work of making each page true and specific to the place it claims to serve.

FIND OUT WHERE YOU STAND

Is your roofing site making any of these seven mistakes?

We'll check your site against everything in this audit and tell you exactly what's holding it back, run by someone who lives and works right here in Traverse City.

Get my free SEO audit →