City Pages

Why Your City Pages Don't Rank (And How to Fix Them)

The #1 reason contractor city pages don't rank is duplicate content โ€” the same text repeated across 15 pages with only the city name swapped. Google detects it, ignores it, or actively filters it. Here's what actually needs to be unique, and what you can reuse.

๐Ÿ“… February 2026ยท 7 min read

The Duplicate Content Problem

Here's what most contractor city pages look like under the hood:

"Looking for a reliable HVAC contractor in [CITY]? Smith HVAC has been serving [CITY] homeowners for over 15 years. Our expert technicians provide AC repair, furnace installation, and maintenance in [CITY] and surrounding areas. Call us today for same-day service in [CITY]!"

Identical across 15 pages, with only the city name token swapped. Google's duplicate content algorithm identifies these as near-duplicate pages and either doesn't index them or consolidates them into a single page (usually your homepage), stripping away the ranking benefit of the city-specific page entirely.

This is why contractors sometimes say "we built city pages and they didn't do anything." The pages exist, but they're effectively invisible to Google.

What Google Actually Wants

Google's stated goal is to show users the most relevant result for their specific query. When someone in Chandler searches "HVAC contractor Chandler," Google wants to show them a page that is genuinely about HVAC service in Chandler โ€” not a generic HVAC page that happens to mention Chandler once.

Genuine local relevance can't be faked with a city name token. It has to come from content that is actually specific to that location. The test is simple: if you removed every mention of the city name, would the content still clearly be about serving that specific location? If the answer is no, the page isn't locally relevant enough to rank.

The 5 Elements That Must Be Unique Per City

1. The Core Body Content

At minimum, 200โ€“300 words of body content that is genuinely written for that city. This means referencing the community specifically. For an HVAC company, this might include:

  • The local climate and how it affects HVAC needs (extreme summer heat in Phoenix, cold winters in Denver, high humidity in Houston)
  • Common housing stock in that area (1970s tract homes with original ductwork vs. new construction vs. historic downtown apartments)
  • Local permit requirements for HVAC replacement
  • Specific neighborhoods in that city that you serve
  • How long your company has been serving that city specifically

None of this content can be reused across cities โ€” it's inherently city-specific. That's the point.

2. The H1 and Page Title

Your H1 should follow the pattern "[Trade] [City]" or "[Trade] in [City]" โ€” for example, "HVAC Contractor Chandler AZ" or "Air Conditioning Repair in Chandler." This is the primary keyword signal on the page. The page title (the `<title>` tag) should match or closely parallel the H1.

3. The URL

Clean, city-specific URL structure: /hvac-contractor-chandler/ or /chandler-hvac/. Not /service-area?city=chandler, not /locations/page-23. The URL is a ranking signal โ€” make it readable and keyword-relevant.

4. The Meta Description

The meta description doesn't directly affect ranking, but it affects click-through rate from search results โ€” which does affect ranking indirectly. Write a unique meta description for each city page that references the city name and a specific service or value proposition. "Same-day HVAC repair in Chandler, AZ. Licensed Chandler AC and furnace technicians โ€” call for same-day service." This is far more clickable than a generic description.

5. The Schema Markup

LocalBusiness schema on each city page should specify that city's location, not just your headquarters. Use the areaServed property to name the city. This is often overlooked but it directly signals to Google's structured data parser that this page is specifically about serving that city.

What You CAN Reuse Across City Pages

You don't have to reinvent everything. These elements can be templated:

  • Service list sections: The list of services you offer is the same in every city โ€” reuse it.
  • Testimonial or review sections: Customer reviews can appear on all pages (they're real social proof, not manufactured content).
  • CTA sections: Your "call now" section, form, and CTAs are identical across pages.
  • About section: Your company background and credentials are the same everywhere.
  • FAQ structure: You can use similar FAQ questions, but ideally vary answers slightly to include city-specific context ("In Scottsdale, the most common AC problem we see is..." vs. "In Tempe, we frequently service...").

The rule of thumb: if a human reader would learn something city-specific from the content, it needs to be unique. If the content would be identical regardless of which city page they're on, templating it is fine.

How Much Unique Content Is Enough?

There's no official word count from Google, and word count alone doesn't determine ranking. But based on what we observe: city pages with fewer than 300 words of genuinely unique content rarely rank well. Pages with 500โ€“700 words of unique local content, combined with correct technical implementation (URL, H1, schema), rank reliably in most mid-competition markets within 60โ€“90 days of publication.

In highly competitive markets (major metro areas, HVAC/plumbing/roofing), aim for 700โ€“1,000 words of unique content per city page, with more specific local references.

A Quick City Page Audit

To check if your current city pages have a duplicate content problem, paste the body text of two different city pages into a text comparison tool. If they're more than 70% identical (excluding the city name), they have a duplicate content problem. Fix: rewrite the unique sections for each city with genuinely local content.

For a full city page strategy for your trade and service area, see our service area pages service.

FAQ

City Page Questions

Well-built pages with unique content typically get indexed within 1โ€“2 weeks. Ranking in the top 5 for the target keyword usually takes 60โ€“90 days in medium-competition markets. In high-competition markets (major metro areas, competitive trades), allow 90โ€“150 days for top-3 positions. The ranking speed depends heavily on how many competing pages target the exact same keyword โ€” less competition means faster movement.
Yes โ€” the vast majority of service area pages are built for cities without a physical office there. This is standard local SEO practice for service businesses. The page establishes your relevance for that city in organic results. For Map Pack specifically, having a page in that city doesn't make you appear in the Map Pack there (that requires a physical location or GBP service area setting), but it does get you into the organic results below the map โ€” which still drives significant call volume.

City Page Audit

We'll check if your current city pages have duplicate content issues and show you which cities you're invisible in.

Free Audit

Key Takeaways

  • Duplicate body content = pages don't rank
  • 300โ€“700 words unique per city
  • H1 + URL must include city name
  • LocalBusiness schema with areaServed
  • 60โ€“90 days to top rankings

Related Posts

โ†’ 7 Map Pack Ranking Factors in 2026 โ†’ NAP Consistency Guide โ†’ Case Study: 1 to 14 Cities

Are Your City Pages Ranking?

Free coverage audit โ€” we'll check your city pages for duplicate content and show which cities you're losing calls from.