Location pages for local service businesses: the line between useful and doorway
· updated October 6, 2026
A location page earns its place when the thing it describes is genuinely different in that city — the travel radius, the pricing, the people who serve it. If the only difference is the city name, Google treats the whole set as doorway pages, and the penalty lands on the entire domain, not just those pages.
We built a booking site for a private hibachi chef service that operates across 7 states and 31 cities. Every one of those cities needed a page, because that is how people search for this service — they search for the city they live in. The question was how to do that without producing 31 near-identical pages.
What actually differs between cities
Before writing a single page, we listed what genuinely changes from one city to the next. If a field does not change, it does not belong in the per-city content — it belongs on the parent page, written once.
| Changes per city | Does not change |
|---|---|
| Which chefs cover it | How the booking flow works |
| Travel radius and any travel fee | What is included in a booking |
| Local venue and permit constraints | The menu |
| Lead time in practice | Cancellation terms |
The right-hand column is the doorway trap. A page assembled mostly from the right-hand column, with the city name swapped in, is the exact shape Google penalises — and it is also the shape you get by default if nobody stops to make this list first.
The test we use before publishing
- Cover the city name in the draft. Read it next to another city page. If you cannot tell them apart, it is one page, not two.
- Does the page answer the question that brought someone there, or does it hand them off to another page to find out?
- Is there something on this page that could only have been written by someone who has actually served that city?
The third one is the one that fails most often, and it is the one that cannot be automated. Somebody who knows the business has to supply the local detail — a generator can lay out the page, but it cannot know that one county requires a permit for open flame.
In this guide
- How many location pages to build: filtering a long list down to 31 citiesThe count follows delivery capacity, not keyword lists. The three filters used, and what happens when the number exceeds what the team can serve.
- Booking by resource: a fully booked day should be a waitlist, not a wallRedrawing the calendar per service so that full slots capture demand instead of losing it, for businesses where people, rooms and equipment each have their own schedule.
- Who answers an enquiry: routing as a business rule, not a contact listWhat actually decides ownership of an enquiry, and why writing the rule into the page means a new hire does not have to ask anyone.
We build this to order
WordPress development for the part no plugin doesCustom WordPress work for businesses whose requirement stopped being a plugin: rule layers, calculators, portals, and the functionality that is specific to how your company actually operates.About how we work →