A roofing company owner opens Google Search Console and sees the same picture he saw last week. His Mission District page pulls steady traffic. His Sunset page pulls nothing. His Bernal Heights page pulls nothing.
He has fourteen neighborhood pages on the site. One of them works.
This is the service-area page problem, and it's the most common trap in local SEO. A business builds a page per neighborhood, per suburb, per zip code, expecting each one to rank in its slice of the map. Most of them never do. The pages load fine, look reasonable, and get filtered out of local results without anyone noticing.
The reasons stop being mysterious once you break them into cases.
The Doorway Page That Got Flagged
The most common version of this trap is the one Google explicitly warns against. A shop spins up twenty near-identical pages, one for each neighborhood it wants to rank in, changes the city name in the H1, swaps a photo, and calls it a strategy. Google has a name for this pattern, and it isn't a compliment.
The official spam policies call out pages built primarily to rank for similar queries and funnel visitors toward one destination, with pages targeted at specific regions or cities listed as a textbook example. If your Sunset page and your Richmond page look nearly identical, differ only in city name, and route every call-to-action to the same contact form, you're describing the pattern Google's classifier is trained to find. Rankings don't so much drop as never arrive.
The Page With No Address in the City It Names
Local pack rankings lean heavily on proximity. A plumber headquartered in San Francisco's SoMa can build a beautiful page called "Plumbing in Daly City," but with no physical presence in Daly City, no address, no verified profile, nothing tying the business to that ground, the pack for Daly City queries will usually surface businesses that have one.
Content can't fix a geography problem. Be honest about your true service radius and invest the pages where you can win.
The Orphan Page Nobody Links To
A page that no other page on your site links to is a page Google has good reason to distrust. It looks like something built for the crawler rather than the visitor, a page that exists because a template spat it out and not because the site's own architecture treats it as important. Orphan location pages are one of the classic tells.
The fix is unglamorous but effective:
- Link from the main services page. Every neighborhood page should be reachable in one click from a parent "Areas We Serve" hub, not buried in a sitemap.
- Cross-link nearby areas. A Noe Valley page can link to Bernal Heights and Glen Park. This reflects how the city works and gives crawlers a sensible path.
- Cite the pages in blog content. When you publish a case study or a job walkthrough, link the neighborhood page it happened in. Editorial internal links carry more weight than nav links.
The Page Says Nothing a Local Would Recognize
Copy that could apply to any city in America will rank in none of them. A page for the Marina that skips Marina-specific building stock, the reality of stucco on sand, the district's flood history, or the particular pain of parking a service van on Chestnut Street reads like it was generated from a template, because it was. Search engines have gotten good at noticing.
Skip the keyword stuffing with neighborhood names and write pages that a person who lives there would nod at. Reference the housing eras. Name the cross streets.
Talk about the jobs you've done nearby, with photos that show recognizable backdrops. Local specificity is the one thing a national competitor cannot fake, and it's the strongest signal you can send that the page belongs where it claims to belong.
Build Fewer Pages, and Make Each One Earn Its Place
The instinct to blanket a metro with one page per zip code comes from a reasonable place. You want to show up wherever someone might search. The execution is where it falls apart. A short set of substantive pages, each tied to a real service area, each linked from the rest of the site, and each written like a human who knows the neighborhood will out-perform forty thin ones almost every time.
For businesses working through this in a dense, competitive metro, the practical playbook is the boring one: audit what you have, cut the pages that duplicate each other, invest in the handful that map to places you can genuinely service, and treat each page as a small landing site of its own.
There's a useful set of SEO tips from a SEO tips from a San Francisco agency agency that walks through the setup fundamentals worth doing before you publish another neighborhood page. And for the underlying question of why your pages rank in one part of town and not the next, BrightLocal's explainer on how Google weighs proximity, relevance, and prominence is worth an hour.
The roofer with fourteen pages doesn't need a fifteenth. He needs to delete ten, rewrite three, and link them properly. That's usually the whole job.