SEO Audit: How a National Roofing Company Built 150+ Fake City Pages—and Lost 43% of Its Traffic
A real audit using Ahrefs data, live site analysis, and Google’s Quality Rater Guidelines
Most SEO agencies send monthly reports full of keyword rankings that look impressive but don’t connect to revenue. We audit sites like this one regularly at BlitzMetrics. We’re making it public so business owners can see what a real audit looks like—not the vanity reports most agencies produce. Want us to audit your site? Request a Quick Audit here.
Key Metrics at a Glance
LAPSE ═══════════ –>
The Traffic Collapse: Down 43% in 3 Months
This site’s organic traffic dropped 43% between August and November 2025. The timing aligns exactly with Google’s August 2025 spam update, which specifically targeted scaled content abuse.
| Month | Organic Visits (Est.) | Change |
|---|---|---|
| Jun 2025 | 6,652 | — |
| Jul 2025 | 6,550 | -1.5% |
| Aug 2025 | 6,661 | +1.7% |
| Sep 2025 | 5,196 | -22.0% |
| Oct 2025 | 3,938 | -24.2% |
| Nov 2025 | 3,033 | -23.0% |
| Dec 2025 | 3,077 | +1.5% |
| Jan 2026 | 3,382 | +9.9% |
| Feb 2026 | 3,804 | +12.5% |
| Mar 2026 | 3,770 (est.) | -0.9% |
The traffic has stabilized at this lower level but has not recovered. This is the classic pattern of a scaled content devaluation—Google doesn’t always issue a manual penalty; sometimes it just stops ranking your thin pages.
Organic Traffic: The 43% Collapse
The Core Problem: 150+ Templated City Pages
Google’s spam policies define “scaled content abuse” as generating large numbers of pages primarily to manipulate search rankings rather than to help users. This site has over 150 city/state landing pages that follow an identical template with only the city name swapped in.
What This Site Is Made Of
560+ indexed pages — only 10 are real content
What the City Pages Look Like
We pulled five top city pages and compared them side by side:
| Page | H1 Tag | Unique Local Content? | Verdict |
|---|---|---|---|
| /aurora-co/ | “Aurora Roofers You Can Rely On” | None. No addresses, landmarks, or team names. | CRITICAL |
| /new-york/ | “Trusted Roofing and Storm Repair Services in New York” | Albany address only. No NYC/borough specifics. | CRITICAL |
| /norfolk-va/ | “The First Choice for Superior Norfolk Roofing Services” | Mentions Naval Base—a generic fact. No project details. | CRITICAL |
| /houston-tx/ | “Houston’s Trusted, Award-Winning Family Roofers” | Address + phone only. Zero Houston-specific content. | CRITICAL |
| /phoenix-az/ | “Your Trusted Phoenix Roofing & Restoration Experts” | Address + phone only. No desert climate specifics. | CRITICAL |
Every city page follows the same template:
- Same H2 structure (residential, commercial, storm damage, CTA)
- Same body copy with the city name swapped in
- Same certifications listed (GAF, Owens Corning, CertainTeed)
- Same “family-owned since 2004” messaging
- No real local photos, case studies, team members, or project details
- Embedded JSON-LD schema listing 50–60+ locations on EVERY page
Anatomy of a Fake City Page
Google’s leaked internal system (called “Firefly”) specifically analyzes the ratio of URLs generated versus substantive content produced. A site with 150+ near-identical city pages and 400+ individual review pages—but only 10 blog posts in 6 years—has exactly the profile this system flags.
The 400+ Individual Review Page Problem
This site publishes every customer review as its own standalone page with a unique URL (e.g., /reviews/c1668009-ee8d-4276-...). That’s 400+ individual pages, each containing just a few sentences of testimonial text.
From Google’s perspective, this is thin content at scale: hundreds of low-value pages diluting the site’s overall quality signal. None of the review pages contain project photos, detailed descriptions, or verifiable information. They all contribute to a perfect 5.0 rating across 277 displayed reviews with zero negative feedback—which ironically hurts credibility under Google’s Quality Rater Guidelines because it looks curated rather than authentic.
E-E-A-T Scorecard
Google’s Quality Rater Guidelines require Experience, Expertise, Authoritativeness, and Trustworthiness—especially for YMYL (Your Money or Your Life) topics like roofing, which involves significant financial decisions and home safety.
| Signal | Grade | Evidence |
|---|---|---|
| Experience | D | No before-and-after photos with project narratives. No named team members on city pages. No author attribution anywhere. Gallery images are generic with no project descriptions, locations, or outcomes. |
| Expertise | D+ | The wood shake page lists types without explaining grades, cedar species, or maintenance. Storm damage page mentions materials but no assessment protocols or insurance claim processes. The religious buildings page says “Church Roofs, Synagogue Roofs, Mosque Roofs” with zero explanation of their distinct architectural requirements. |
| Authority | C- | DR 31/100—low for a company claiming nationwide service. 352 referring domains, but 73 links come from blogspot.com. Claims of “Top 50 Roofing Contractor” are unverified—no link to the source publication. |
| Trust | C- | 277 self-hosted reviews with a suspicious perfect 5.0 rating. Location pages for markets where the company may not have permanent local crews. BBB profile shows complaints about contracts and liens against customer properties. |
E-E-A-T Scorecard: How Google Rates Quality
What’s Actually Working
Not everything is broken. A few pages earn real traffic, and they reveal what the strategy should be:
| Page | Top Keyword | Position | Monthly Visits |
|---|---|---|---|
| /aurora-co/ | roofing contractor aurora co | #2 | 408 |
| /littleton-co/ | roofing contractor in littleton | #2 | 348 |
| / (homepage) | [brand name] | #1 | 307 |
| /roof-storm-damage/ | roofing storm damage repair | #5 | 285 |
| /commercial-roofing/religious-buildings/ | church roofing company | #2 | 250 |
| /denver-co/ | roof installation company | #8 | 238 |
The Colorado city pages (Aurora, Littleton, Denver) perform best because that’s likely where the company has real operations and real customer relationships. The further the pages get from actual service areas, the thinner the content gets and the worse it performs. Real presence = real rankings. Fake presence = declining traffic.
Technical SEO Findings
| Check | Status | Details |
|---|---|---|
| HTTPS | PASS | Site loads over HTTPS. No mixed content detected. |
| Robots.txt | FAIL | Fully permissive—allows all crawlers everywhere. No rules to prevent indexing of thin content. |
| Sitemap | WARNING | Sitemap has 1,000+ URLs. Many are thin/templated pages that should not be indexed. |
| Duplicate H1 Tags | FAIL | Homepage has TWO H1 tags. Each page should have exactly one. |
| Meta Descriptions | FAIL | Missing or not rendering on homepage and multiple key pages. |
| Schema Markup | WARNING | LocalBusiness schema lists 50–60 locations on every page. Each page should only have schema for its own location. |
| Index Bloat | CRITICAL | 400+ individual review pages + 150+ templated city pages + paginated review listings all indexed. Most should be noindexed or consolidated. |
| Blog Content | FAIL | 10 blog posts in 6 years. The blog is functionally abandoned. |
| Title Tags | WARNING | City pages use generic titles—no differentiators, no value proposition. |
| Internal Linking | WARNING | City pages don’t interlink with each other or relevant service pages. No topic cluster architecture. |
Competitor Landscape
| Competitor | Shared Keywords | Their Total Keywords | Their Traffic | This Site’s Traffic |
|---|---|---|---|---|
| gaf.com | 417 | 28,100 | 492,579 | 3,770 |
| mightydogroofing.com | 124 | 4,537 | 33,805 | 3,770 |
| premier-roofing.com | 101 | 810 | 11,258 | 3,770 |
| tectaamerica.com | 101 | 1,205 | 14,985 | 3,770 |
| kiddroof.com | 52 | 426 | 6,165 | 3,770 |
Competitor Traffic Comparison (Monthly Organic Visits)
Even mid-size competitors like Mighty Dog Roofing generate nearly 10x this site’s traffic (33,805 vs. 3,770). They have 4,537 ranking keywords vs. 620 here. The gap isn’t about spending more—it’s about having real, differentiated content vs. templated filler.
Rankings ≠ Revenue: The Agency Reporting Problem
This is a pattern we see constantly at BlitzMetrics. An agency sends monthly reports showing:
- 620 keywords ranking in US search results
- Position changes for tracked terms
- Charts showing “growth” based on keyword counts
What the reports don’t show:
- That 88% of those “ranking” keywords are on page 3 or worse—positions that generate zero clicks
- That organic traffic declined 43% while the keyword count stayed stable
- That the templated city pages they built are a Google penalty risk
- That 10 blog posts in 6 years is functionally nonexistent content marketing
- How many leads came from organic search vs. paid vs. referral
- The actual cost-per-lead from SEO compared to other channels
Ranking #45 for “residential roofing services” generates zero clicks. But it shows up in the agency report as evidence the SEO is “working.” This is the fundamental disconnect between rankings-based reporting and revenue-based reporting.
The Fix: Prioritized Action Plan
Recovery Roadmap: Impact vs. Effort
Immediate (This Week)
| Action | Impact | Effort | Why |
|---|---|---|---|
| Noindex all 400+ individual review pages | HIGH | 1 hour | Eliminates 400+ thin pages from Google’s index instantly. |
| Fix duplicate H1 on homepage | MEDIUM | 15 min | Homepage is the #1 page. Basic on-page hygiene. |
| Add meta descriptions to top 10 pages | MEDIUM | 1 hour | Improves click-through rates from search results. |
| Fix schema to show 1 location per page | HIGH | 2 hours | 50+ locations on every page looks spammy to Google. |
This Quarter
| Action | Impact | Effort | Why |
|---|---|---|---|
| Rewrite top 5 city pages with real local content | HIGH | 1 week | Real photos, named crew, local project case studies, climate-specific advice. |
| Consolidate or remove city pages where you don’t operate | CRITICAL | 2 weeks | If there’s no local crew, there shouldn’t be a local page. |
| Publish 4 real blog posts per month | HIGH | Ongoing | Real expertise: cost guides, material comparisons, insurance process walkthroughs. |
| Add author bios and team profiles | MEDIUM | 3 days | Critical EEAT signal. Named experts build trust. |
| Create before/after project galleries with narratives | HIGH | Ongoing | Real experience demonstrated—the #1 EEAT signal. |
This Year (Strategic)
- Implement revenue-tied reporting. Every SEO report should show: organic visits → form submissions → booked jobs → revenue. If the agency can’t provide this, they’re not doing real SEO.
- Build topic cluster content. Create pillar pages for storm damage, commercial roofing, and residential replacement—with supporting blog content that interlinks.
- Earn real backlinks. DR 31 is low. Links from industry publications, local news, and trade organizations build real authority—not blogspot.com.
Want Us to Audit Your Site?
We do this for roofing companies, home services, law firms, medical practices—anyone who suspects their SEO agency is playing keep-away with results. Our Quick Audit uses the same Ahrefs data, Google Quality Rater analysis, and EEAT scoring you just read—applied to your site in 48 hours.
No keyword-count vanity reports. Just the truth about what’s working, what’s broken, and exactly how to fix it.
