Every agency that works with a multi-location client eventually faces the same request: "We serve 47 cities. Can we get a page for each one?" The honest answer is maybe 12 of them deserve a page, and only if you do the work.
The gap between location pages that rank for years and location pages that get deindexed in a core update isn't technical. It's whether the page has a reason to exist beyond ranking. This guide covers the location pages SEO process we use with agency teams — qualification, content ratios, templates, schema, QA, and when to kill pages that aren't earning their keep.
What Google actually penalizes
Two separate policies get conflated here, and knowing the difference changes how you build.
Doorway pages are pages created to rank for near-identical queries that then funnel every visitor to the same destination. The classic tell: a user lands on /plumber-fresno, finds no Fresno-specific information, and the only real action is a form that goes to the same central inbox as every other page. The page is a toll booth, not a destination.
Scaled content abuse (added to Google's spam policies in March 2024) is broader. It targets generating many pages primarily to manipulate rankings, regardless of whether a human or an AI wrote them. This is what catches the "spin 200 city pages from one template" approach — even when each page technically has unique sentences.
The practical implication: uniqueness at the sentence level is not the bar. Usefulness at the page level is. A page can be 100% unique text and still be spam if nobody would find it valuable without a search engine sending them there.
The qualification test: should this page exist?
Before you write anything, run each proposed location through three questions. If you can't answer at least two with specifics, don't build the page.
- Is there a real-world footprint? An address, a staffed office, a service van routed there weekly, a crew that's completed jobs there, a licensed practitioner. "We would accept a client from there" doesn't count.
- Is there enough search demand to justify the maintenance? We use a rough floor of 50 monthly searches across the location-modified keyword cluster for metro pages, and 20 for suburb pages inside a cluster you already dominate. Below that, fold the city into a regional page.
- Can you say three things about this location that aren't true of the others? Local pricing differences, permit requirements, climate-driven service nuances, neighborhoods served, a named project, a local partner, drive-time coverage. Three specifics is the minimum viable differentiation.
For a client with 47 service areas, this typically qualifies 10-15 for standalone pages. The rest belong on a single regional coverage page with a list — which, incidentally, ranks fine for long-tail "do you serve X" queries and costs you almost nothing to maintain.
Prioritize before you produce
Build in waves, not all at once. Launching 40 near-identical pages in a week is a pattern; launching 8 strong pages a month is a publishing schedule.
Rank candidate locations by: existing Google Business Profile presence (a verified listing with reviews dramatically raises the ceiling), revenue per job in that market, competitor page quality, and how much proof material the client can actually supply. That last one is the usual bottleneck — a page is only as good as the photos, job data, and staff quotes you can extract from the client.
If you're managing this across dozens of markets, our multi-location local SEO playbook covers the GBP, citation, and reporting side that location pages depend on.
The 70/30 rule for page content
Here's a working ratio that has held up well: at least 60-70% of the visible body content on a location page should be unique to that location. The remaining 30% can be shared — your process explanation, guarantees, FAQ about the service itself, trust badges.
Most failed location pages invert this: 85% shared boilerplate, 15% city name swaps. The fix isn't writing more generic filler. It's collecting better raw material.
Unique content blocks that actually carry weight
- A named local project or case snippet. "Replaced 2,400 sq ft of hail-damaged shingles on a 1960s ranch in the Edgewater neighborhood, October 2024, insurance claim handled start to finish." Two sentences of this outperform 300 words of city trivia.
- Original photos from that location. Job sites, the storefront, the local team. Don't bother geotagging EXIF data — Google strips it. The value is that the images are genuinely unique and sit on a page about that place.
- Named staff who serve that market, with a one-line quote. This is also your strongest trust signal.
- Location-specific service nuance. Permit timelines, HOA requirements, soil type, water hardness, local code, seasonal patterns. A pest control page for Phoenix should read differently from Portland because the pests are different.
- Coverage specifics. Neighborhoods, zip codes, drive-time boundaries, response windows. "We reach most of the 80211 and 80212 zips within 40 minutes" is useful information.
- Local pricing or availability if it differs. Even a range builds credibility.
- Reviews from customers in that city, pulled from the matching GBP listing rather than a global feed.
Blocks that add nothing
Cut these — they're the fingerprints of templated location pages: Wikipedia-sourced city history, population statistics, lists of local landmarks with no connection to the service, weather averages, embedded maps of the whole metro, and "Looking for [service] in [city]? You've come to the right place!" opening paragraphs.
Build a template with real variable slots
Templates are fine. Lazy templates are the problem. Design yours so the required inputs force specificity:
- H1: Service + City, matched to actual search language (check whether people search "roofing contractor Boulder" or "roofers in Boulder").
- Opening 2-3 sentences: must name a neighborhood, a local condition, or a year the business started serving that area.
- Proof block: 1-2 local projects with specifics. Required field — no page publishes without it.
- Services offered here, with any local deviations called out.
- Who serves this area: names, photos, coverage radius.
- Local reviews: minimum three, city-matched.
- Shared process/guarantee section. This is your 30%.
- FAQ: at least two questions genuinely specific to that market.
- Contact: local phone number if one exists, local address if one exists, clear next step.
Treat "required field" literally. The fastest way to prevent doorway drift is to make the production workflow refuse to ship a page with empty proof slots — the same way you'd gate any deliverable. Agencies running this in a phased project structure with proof requirements catch

Nick Quirk

