SEO Audit: How a National Roofing Company Built 150+ Fake City Pages — and Lost 43% of Its Traffic

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

BlitzMetrics · March 27, 2026 · 12 min read

Why We’re Publishing This

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

31
Domain Rating (out of 100)
620
Organic Keywords (US)
3,770
Monthly Organic Visits (down from 6,661)
-43%
Traffic Decline Since Aug 2025
150+
Templated City Pages
400+
Individual Review Pages (Thin Content)
352
Referring Domains
10
Blog Posts in 6 Years

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

7,000 6,000 5,000 4,000 3,000 6,661 PEAK 3,033 Google Spam Update 3,770 Jun Jul Aug Sep Oct Nov Dec Jan Mar -43%

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

560+ indexed pages 400+ Review Pages (71%) 150+ City Pages (27%) 10 Blog Posts (2%) 98% thin/templated 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

infinityroofer.com/phoenix-az/ Phoenix Roofing & Restoration Experts Residential Roofing Commercial Roofing Storm Damage Get a Free Estimate! JSON-LD: 50+ locations listed GAF | Owens Corning | CertainTeed City name swapped in Identical copy on all 150+ pages Same H2s every page 50+ locations in schema (!) No local photos No case studies No named team members No climate- specific advice

Google’s Firefly System Detects This

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

Experience D No project photos or named team Expertise D+ Generic content, no depth Authority C- DR 31, blogspot links Trust C- Perfect 5.0 looks curated Overall: D+ — Falls well below Google’s quality threshold for YMYL content

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 Pattern

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)

This Site 3,770

kiddroof.com 6,165

premier-roofing.com 11,258

tectaamerica.com 14,985

mightydogroofing.com 33,805 (9x more)

gaf.com 492,579

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

EFFORT → IMPACT → QUICK WINS BIG PROJECTS FILL-INS TIME SINKS

Noindex 400+ review pages

Fix schema 1 loc/page

Fix H1 & meta desc

Rewrite top 5 city pages w/ real content

Remove fake city pages

4 blog posts /month

Add meta descriptions

Author bios & team pages


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.

Request Your Quick Audit →

Dennis Yu
Dennis Yu
Dennis Yu is the CEO of Local Service Spotlight, a platform that amplifies the reputations of contractors and local service businesses using the Content Factory process. He is a former search engine engineer who has spent a billion dollars on Google and Facebook ads for Nike, Quiznos, Ashley Furniture, Red Bull, State Farm, and other brands. Dennis has achieved 25% of his goal of creating a million digital marketing jobs by partnering with universities, professional organizations, and agencies. Through Local Service Spotlight, he teaches the Dollar a Day strategy and Content Factory training to help local service businesses enhance their existing local reputation and make the phone ring. Dennis coaches young adult agency owners serving plumbers, AC technicians, landscapers, roofers, electricians, and believes there should be a standard in measuring local marketing efforts, much like doctors and plumbers must be certified.