Every local business with more than one service and more than one service city eventually faces the same content-architecture question: do we build a page for each service-in-each-city — and if we do, at what point does “helpful local landing page” become the thing Google’s spam documentation calls a doorway page? The anxiety is earned. The web is littered with the failure mode: five hundred pages generated from one template, identical but for a city token swapped into the H1 (“Water Heater Repair in {City} — Fast & Affordable!”), each thin, none useful, collectively a quality liability that modern spam systems and core updates have gotten very good at devaluing wholesale.
But the correct conclusion is not “never build local pages.” The searcher typing “water heater repair frisco” has a genuinely local question — who serves here, how fast, at what cost, with what proof — and a page that actually answers it is not a doorway; it’s the destination. The entire distinction, in Google’s own framing and in ranking practice, comes down to one test: does the page exist to serve the user who lands on it, or only to intercept a query and funnel them somewhere else? Doorway pages fail users identically to each other; good local pages succeed for users differently in each place — because places differ, and honest pages reflect that.
This guide is the construction manual for the second kind: the decision framework for which pages deserve to exist at all (coverage math, not ego), the anatomy of a local service page with real local substance — and where that substance actually comes from when you’re a service business without a storefront in each town — the template-versus-content distinction that lets you scale structure without cloning content, the internal linking and indexation architecture, the phased build order, and the audit that tells you whether pages you already have are helping or hurting.
The doorway line isn’t about having many local pages — it’s about whether each page serves the user who lands on it or merely intercepts a query. Build only pages you can make genuinely local: the test is “if we deleted the city name, could a reader still tell which area this page is about?” Real local substance comes from operations, not adjectives: jobs completed there (photos, brief case notes), reviews from that area, response-time realities from your base, neighborhoods served, area-specific technical details (permits, water, soil, housing stock) where they genuinely differ, and the local team. Template the structure, never the content — consistent anatomy across pages, unique substance within each. Scale by phases: service pages first, then top cities by revenue, expanding only as operational evidence accumulates. Wire pages into the site (hub-and-spoke from service pages, footer restraint), keep thin pages out of the index until they’re real, and audit annually: pages with no impressions, no conversions, and no unique substance get consolidated, not multiplied.
The Line: Google’s Definition, Operationalized
Google’s spam policies describe doorway pages as pages created to rank for specific, similar queries that funnel users to the same destination without providing distinct value — intermediaries that are “not as useful as the final target.” Operationalize that into three tests any page must pass:
- The destination test: is this page itself the useful answer — can the visitor evaluate, trust, and contact you from here — or does it exist to bounce them to a generic form or the homepage? A local page that is merely a wrapper around “call now” is a doorway with paragraphs.
- The deletion test: remove the city name everywhere it appears. Can a reader still tell which area the page is about — from the jobs shown, the reviews quoted, the neighborhoods named, the specifics discussed? If the page becomes geographically anonymous, it was a token-swap.
- The sibling test: put two of your city pages side by side. If the differences are only the tokens (city name, maybe a landmark someone Googled), they will rise and fall together as a pattern — and pattern is exactly what algorithmic quality evaluation detects. Pages that differ because the places differ pass; pages that differ by find-and-replace don’t.
Note what the line is not: quantity. A fifty-location business can have fifty excellent location pages; a five-city business can have five doorways. The multi-city architecture scales precisely because each page carries its market’s reality — scale is a property of the system, not a violation.
Which Pages Deserve to Exist: The Coverage Math
The page matrix (services × cities) grows quadratically; your operational evidence doesn’t. Decide by demand and substance, not symmetry:
- Service pages come first, unconditionally. One definitive page per major service — process, pricing approach, proof, FAQs, conversion path — targeting the service+“near me”+implicit-local query family. These carry most local organic value for most businesses, and they’re buildable entirely from expertise you already have.
- City pages for cities that earn them: meaningful search demand (service+city queries with volume), meaningful revenue share or strategic priority, and — the gating factor — enough operational evidence (completed jobs, local reviews) to make the page true. Most service businesses have 3–8 such cities, not thirty.
- Service×city pages only at the intersections that justify them: your highest-value service in your highest-value cities, where query volume is real and the evidence specific (water heater jobs in Frisco, not just jobs and Frisco separately). This is the tier where doorway sprawl breeds — hold it to intersections you can substantiate.
- Everything else routes to the parent: a suburb without page-worthy evidence gets covered by the nearest real city page (which can name it in its neighborhoods-served section) — honest partial coverage beats a hollow dedicated page.
Before writing any city page, pull the operational inventory for that city: completed jobs (with photos your crews already took), reviews mentioning it, and anything area-specific your team knows from working there. Rank candidate cities by evidence depth, not by population or keyword volume — the page you can substantiate today will rank and convert; the page you’d have to pad will do neither and taints the pattern. This also creates the virtuous loop: instruct crews to photograph jobs and note addresses’ cities systematically, and every quarter of operations funds the next page. Content strategy for local pages is mostly evidence logistics.
The Anatomy of a Local Page That Isn’t a Doorway
Structure can (and should) be consistent across pages — that’s a template. Content within it must come from the place — that’s the substance. The working anatomy:
| Section | Templated structure | Local substance (unique per page) |
|---|---|---|
| Hero | Service + area headline, primary CTA, trust markers | Real coverage claim (response time from your base to this area), area-specific proof point |
| Proof of work | “Recent jobs” module | Photos and 2–3 sentence case notes from jobs in this city — the single strongest anti-doorway element |
| Local reviews | Review module | Reviews from customers in this area (your geo-mention review nudge feeds this) |
| Area specifics | “What’s different here” block | Only where genuinely true: permit/code notes, housing-stock patterns (slab foundations, aging mains, hard water), HOA realities, seasonal quirks — earned expertise, never invented color |
| Coverage | Neighborhoods-served list, map | The actual neighborhoods, honestly bounded |
| Service detail | Condensed service explanation linking to the full service page | Any city-specific service nuance; otherwise keep brief — depth lives on the service page |
| FAQ | FAQ module + schema | Mix: 2–3 genuinely local questions (permits here? response time here?) with service questions |
| Conversion | Form/call/booking block | Local phone presentation, scheduling realities for the area |
What has no place in the anatomy: paragraphs about the city’s history and population (relevance theater that helps no visitor), invented “local” color scraped from Wikipedia, and keyword-density padding. If a section can’t be filled honestly for a given city yet, ship the page without it — or don’t ship the page yet.
Wiring: Internal Links, Indexation, and Schema
- Hub-and-spoke linking: service pages link to their city variants and vice versa; city pages link to sibling services offered there; the location/areas hub lists all city pages. Contextual links from relevant blog content (a post about water heater codes linking to the Frisco page) beat sitewide footer link-walls — keep footer geo-links to a restrained top tier, not a fifty-city carpet that itself reads as doorway signage.
- Indexation discipline: every indexed local page should be one you’d defend in a quality review. Pages still thin while evidence accumulates either stay unpublished or carry noindex until real — a small honest indexed set outperforms a large mixed one, because quality evaluation is increasingly sitewide-pattern-aware.
- Schema: Service schema on service pages; LocalBusiness with
areaServedat the site level (per the SAB configuration); FAQ schema where FAQs are real. Don’t fabricate a LocalBusiness-per-city with fake addresses — schema claims are claims. - The profile connection: your Google Business Profile’s linked landing page should corroborate its primary category story — usually the main service or location page, not a generic homepage; the pack and the pages are one system.
Discovering fifty token-swap pages in your own site, the tempting fix is cosmetic — sprinkle each with a unique paragraph and call it remediated. That treats the tell, not the pattern: fifty pages with one unique paragraph atop identical bodies still fail the sibling test. The honest remediation: rank the set by evidence and performance (impressions, conversions, substantiable content), rebuild the defensible few into real pages per the anatomy above, and consolidate the rest — 301 each thin page to its nearest real parent (the city page to the region hub, the service×city page to the service page), updating internal links accordingly. Expect consolidation to feel like shrinking and perform like growth: fewer, denser pages routinely recover visibility the sprawl was suppressing. And resequence the build: pages return only as evidence funds them.
The Phased Build Order
- Phase 1 — the service foundation: definitive pages for every major service. This alone captures most implicit-local demand and gives every future city page a depth-parent to link to.
- Phase 2 — the evidence-rich cities: your top 3–5 by revenue and substantiation, built to full anatomy. Baseline their target queries before launch; judge at 60–90 days.
- Phase 3 — earned expansion: additional cities as the operational evidence accumulates (the crew-photo loop), plus service×city intersections only where both demand and specificity exist.
- Phase 4 — maintenance as content strategy: quarterly enrichment of live pages (new jobs, fresh reviews, updated specifics) — a local page is an evidence feed, not a launch artifact; recency of proof is itself persuasive and differentiating.
5 Common Local-Page Mistakes
- Symmetry worship. Building the full services×cities matrix because the spreadsheet had a grid — coverage math says most cells shouldn’t exist.
- City-color padding. Population stats and founded-in-1887 paragraphs as “localization” — relevance theater that fails the destination test.
- Templated testimonials. The same three reviews on every city page — worse than none; local proof modules must be locally sourced.
- Footer link carpets. Fifty geo-links sitewide as “internal linking” — a doorway signature that also dilutes the links that matter.
- Launch-and-abandon. Pages frozen at publish while competitors’ evidence feeds refresh — the maintenance phase is where local pages win or rot.
Frequently Asked Questions
How many city pages is 'too many' before Google sees them as doorways?
There is no number — the doorway judgment is about pattern and value, not count. Directory sites and genuinely multi-location brands run thousands of location pages that rank durably because each carries its location’s reality; a five-page set of token-swaps is already a doorway pattern at five. The functional ceiling for your business is your evidence supply: you can support exactly as many pages as you can make pass the deletion test (city name removed, area still identifiable from content) and keep enriched over time. For most single-market service businesses that’s a handful of city pages plus the service foundation — and the honest tell that you’ve exceeded your ceiling isn’t a penalty notice, it’s the quieter signature: new pages that never earn impressions, a set that rises and falls together in core updates, and internal reluctance to show a given page to an actual customer from that city. Build to the evidence, expand as operations fund it, and the count takes care of itself.
My competitors rank with obvious template pages. Why shouldn't I just do the same?
Three reasons, in ascending importance. Survivorship: you’re seeing the template farms that currently rank, not the ones that got devalued — and the visible winners often have compensating strengths (domain authority, review mass, brand search) carrying pages that would sink your newer site; copying the weakest part of a strong competitor imports the liability without the ballast. Trajectory: quality systems have moved consistently against scaled thin content for years — core updates and spam policies (including scaled-content abuse) keep raising the floor, and a strategy that requires enforcement to stay lazy is a strategy with an expiration date you don’t control. Opportunity: their template pages are your opening — a searcher choosing between their token-swap and your page showing actual jobs on their street, reviews from their neighbors, and honest response times isn’t a close call, which means the evidence-based page converts better even at equal rankings and usually outranks them for the queries that pay. The competitor’s shortcut is an argument for building the real thing faster, not for joining them at the bottom of the next update’s casualty list.
What do I do for cities where I want business but haven't done jobs yet?
Don’t fake the evidence — sequence around its absence. The honest coverage stack for an aspirational city: name it in the neighborhoods/areas-served section of the nearest real city page (partial, truthful coverage that captures some long-tail demand); target it with paid channels (Search geo-targeting, LSA service-area settings) where evidence isn’t a prerequisite the way it is organically; and let the resulting jobs fund the page — a quarter of operations in a new area typically produces the photos, case notes, and first local reviews that make a real page buildable. If strategic priority demands a page sooner, build the honest minimum viable version: real coverage logistics (response times from your base), the service depth inherited from parent pages, whatever genuinely area-relevant expertise you have (codes, housing stock — only if true), and a transparent framing (‘now serving [city]’) — then enrich aggressively as evidence arrives, and hold it out of the index only if even that minimum can’t be met honestly. What kills sites is not the thin-but-true new-market page; it’s manufacturing fake local proof — stock photos as ‘our work,’ invented testimonials — which converts a content gap into a trust violation.
Should service+city combination pages exist, or just services and cities separately?
Reserve the combination tier for intersections that clear two bars simultaneously: real query demand for the specific pair (people actually search ‘water heater replacement frisco’ at volume — check, don’t assume) and evidence specific to the pair (water heater jobs in Frisco, not water heater jobs generally plus Frisco jobs generally). Where both hold — typically your one or two flagship services in your two or three strongest cities — the combination page is your highest-intent organic asset and worth full construction. Where either bar fails, the parent pages cover the query adequately: a strong service page plus a strong city page jointly satisfy most pair queries through normal relevance, and the internal linking between them (city page’s service list → service pages; service page’s areas module → city pages) tells both users and crawlers the pair is served. The failure mode to avoid is the full matrix build — eight services times ten cities as eighty pages — because the evidence supply can’t possibly fill it, and the sixty hollow cells drag the twenty real ones down as a sitewide pattern. Matrix thinking plans coverage; evidence thinking builds pages.
How do I know if my existing local pages are helping or hurting?
Run the annual audit on three axes per page. Performance: impressions and clicks for its target queries (Search Console, filtered by page), conversions attributed to it, and trend direction — a page with zero impressions after six months isn’t neutral; it’s dead weight in your quality pattern. Substance: the deletion and sibling tests applied cold, ideally by someone who didn’t write the pages — does each survive the city name’s removal, and do siblings differ in content or only tokens? Pattern health: does the set move together in algorithm updates (a template-farm signature) or independently on individual merit? Then act by quadrant: strong performance + real substance → enrich on the quarterly cycle; weak performance + real substance → diagnose reach (internal links, indexation, cannibalization with the service page) before touching content; strong performance + thin substance → the risky quadrant — rebuild toward the anatomy while rankings still fund the effort; weak + thin → consolidate via 301 to the nearest real parent. The audit’s meta-finding matters most: if most pages land in the thin column, the fix is the build-system (evidence logistics, phased order), not fifty individual page edits.
City pages that actually earn their rankings?
We’ll audit your existing local pages against the doorway tests, run the coverage math on which pages should exist, and build the evidence-based versions — anatomy, linking, and the operational content loop that keeps them fed.
Get a Local Content Audit Explore Maps Optimization