Templated Location Pages vs Custom Content: Where Google Draws the Doorway Line for Your City Pages
Many local SEO packages sell you one page per city in your service area, and often it is the same page with the city name swapped. Google's own spam rules call that a doorway page, and a site full of them can see most of those pages ignored, which means you paid for pages that never bring a call. This post gives you a five-minute test to check your own city pages, shows what custom pages did for a company across 18 locations, and explains what to do with the templated pages you already have.
Most local SEO packages sell the same page fifty times:
"[Service] in [City]. We fix [appliances] in [City]. Call us in [City]."
The pitch is coverage. One page per city, every city in the service area, delivered in a week. The problem is that Google has a written policy for exactly this pattern, and the policy does not call it a location page.
What does Google call a templated city page?
Google calls it doorway abuse, meaning pages that exist only to catch a search and pass the visitor somewhere else. The spam policy defines it as pages "created to rank for specific, similar search queries" that "lead users to intermediate pages that aren't as useful as the final destination." Two of the four examples in the policy describe the city-swap package directly: "pages targeted at specific regions or cities that funnel users to one page" and "substantially similar pages that are closer to search results than a clearly defined, browseable hierarchy."
Read that second example again. The test is not whether a page mentions a city. The test is whether the page would still be different if you deleted the city name from it.
That is the whole line: a location page is allowed, but a location page that only exists to hold a city name is a doorway.
How do you tell a templated page from a custom one?
Open two of your own location pages side by side and run five checks. It takes five minutes and needs no tools.
- Delete the place name from both. Read what is left. If the two pages are now the same page, they are templated. Swapping "Mesa" for "Tempe" is not a difference Google counts.
- Look for a fact that is only true in one place. A drive time from the nearest technician, the neighborhoods actually covered, the housing stock that drives the common repairs, a local permit rule. One real local fact per page is the minimum. Zero means template.
- Check what the page answers. A custom page answers a question someone in that area asks, in that area's terms. A template answers nothing; it only claims you are there.
- Count the internal links (links to other pages on your own site) that go somewhere useful. A templated page links to the contact form. A page in a real hierarchy links up to its city hub and down to the service and ZIP pages under it, so a reader can keep going.
- Ask whether you would send a customer to it. If the honest answer is "no, I'd send them to the homepage," Google is going to reach the same conclusion.
| Check | Templated page | Custom page |
|---|---|---|
| Remove the city name | Identical to the next page | Still a distinct page |
| Local facts | None | At least one per page, verifiable |
| Question answered | None | A question people in that area ask |
| Internal links | Contact form only | Hub above, services and ZIPs below |
| Would you send a customer there | No | Yes |
What did custom location content do for a multi-location account?
For a multi-location appliance repair client across 18 locations, I built three kinds of pages and none of them came from a city-swap template:
City hubs written from scratch. Each one structured to hand the reader down to the service and ZIP pages underneath it, which is the "clearly defined, browseable hierarchy" the doorway policy contrasts itself with.
ZIP pages with local context. These were not name swaps but pages covering the neighborhoods served, service radius, the landmarks people actually use for directions. A ZIP page was only built where the ZIP was a real unit of demand; where one city equals one ZIP, the city page is the page.
Question-led articles. Built from the People Also Ask questions Google already shows for the services, answered directly, then linked into the location pages that sell the job. The method is written up separately in the PAA strategy post.
Every page started from a brief written by a person: what question it answers, what geography it covers, what the reader should know at the end. AI drafted from the brief, and every draft was read and corrected, and when the drafts drifted toward filler the brief was fixed and the page redone. That review step is the difference between scaled content and scaled spam, and it is the step a fifty-cities-in-a-week package cannot afford.
The measured result

Figures from the Search Console API, data through 19 September 2026:
| Metric | September 2025 | August 2026 |
|---|---|---|
| Monthly impressions | 6,119 | 260,233 |
| Monthly clicks | 388 | 1,465 |
| Average position | 16.2 | 9.0 |
| Pages earning impressions (28 days) | 27 | 1,174 |
Of the 1,173 URLs in the sitemap (the list of pages a site gives Google), URL Inspection, Google's page-by-page index check, reported 1,103 indexed, 94%. The full build and its numbers are in the local SEO case study; what that traffic did and did not prove about booked jobs is in the attribution gap piece.
The indexing figure is the one that matters for this argument. A doorway network does not get 94% of its pages indexed. Google crawls the first few, recognises the pattern, and parks the rest under "Crawled, currently not indexed." Custom pages are the reason the count kept climbing instead of stalling.
Why does average CTR fall when custom content works?
Average CTR (click-through rate, the share of people who see your listing and click it) falls because the page count grows faster than the positions do. An account with little visibility only appears for queries where it already ranks well, often branded ones, and those convert to clicks at a high rate. As new pages start appearing for hundreds of new queries, most of them first show up on page two, where almost nobody clicks. Total clicks rise while the average CTR falls.
| Scenario | Impressions | Clicks | CTR |
|---|---|---|---|
| Small, focused visibility | 1,000 | 50 | 5% |
| Broad, growing visibility | 10,000 | 200 | 2% |
The illustration above is arithmetic, not client data. Judge the strategy on clicks and booked jobs, not on the average CTR line.
Why does templated content fail in AI search too?
An AI answer engine (ChatGPT, Google's AI Overviews and similar tools) picking a page to cite needs a passage that answers the question on its own. A template has nothing to lift: "We fix refrigerators in [City]" answers no question anyone typed. A custom page that answers "how much does refrigerator repair cost" with a range, what moves the price, and a short FAQ is the kind of passage that gets quoted.
| Content type | Citation potential | Reason |
|---|---|---|
| Template city page (name swap) | Very low | Nothing unique to extract |
| Generic service page | Low | Too broad for a specific answer |
| Custom local page with specifics | Medium to high | Extractable answers, local facts |
| Question-led article with a direct answer | High | Built to answer what people ask |
Rebuilding pages so AI engines can quote them is its own job with its own criteria. The process is on GEO services.
Should you delete the templated pages you already have?
Not blindly. First pull each location page's clicks and impressions (times it was shown in search) from Search Console for the last 16 months.
- Pages with real impressions: keep the URL and rewrite the body into a custom page. The URL already has history.
- Pages with nothing, in a city you actually serve: rewrite, or merge into the city hub if the city is too small to carry its own page.
- Pages with nothing, in places you do not serve: remove them and redirect to the nearest real hub. They were only ever there to hold a name.
Before you publish anything new, check that two of your pages are not chasing the same query. Two near-identical location pages compete with each other, which is the subject of the keyword cannibalization tool post.
What to do with this
Open two of your city pages side by side and delete the city name from both. If what is left is the same page, you are paying for templates. Do not delete them in a hurry: keep and rewrite the ones that already get impressions, merge the ones in small cities into a city hub, and remove only the pages for places you do not serve. When you buy new location pages, ask for at least one real local fact per page and a clear link from each city hub down to its service pages.
If you are paying for city pages and not sure which side of the line they are on, the $149 local visibility report answers that from the outside, without access to your accounts. Or send me the site.
Related:
- Internal Linking Case Study: From 64 to 1,440 Pages and 4x the Organic Clicks
- PAA Box: 64 Local Articles Built From People Also Ask, Zero Backlinks
- Google's March 2026 Update and AI Content: What the Doomers Got Wrong
- From 50 Clicks to 1,105 a Month: A Cross-Niche SEO Case Study
- Google AI Overviews: What Home Service Businesses Need to Know in 2026
