Skip to content

Lesson 2 of 2

Scaling location pages

A template that stays useful at ten or fifty locations, and the duplicate-content trap to avoid.

5 min readIntermediateUpdated 2026-08-22

A gym chain with forty sites has forty location pages, each the same page with the town name and phone number swapped. Search Console shows most of them as "Crawled, currently not indexed", and the rest rank for nothing. A template is the right way to build location pages at scale; what separates one that works from one that fails is whether it's a container for facts true of one branch or a disguise for a single page.

Why swapped-city pages disappear

Google's documentation on consolidating duplicate URLs explains the mechanism: when pages are substantially the same, it picks one as the canonical and folds the rest into it. There is no duplicate-content penalty; the pages simply stop existing as far as Search is concerned, and the one Google keeps isn't necessarily the one you'd choose.

Past a point it becomes a spam problem. Google's spam policies define doorway abuse as pages created to rank for specific, similar searches that lead people to an intermediate page less useful than the final destination; the examples include pages targeted at specific regions or cities that funnel visitors to one place. The same document describes scaled content abuse: many pages generated mainly to manipulate rankings rather than to help anyone. Forty near-identical town pages pushing visitors to one booking form are the pattern both policies describe.

The test: a location page has to be the destination, useful to someone who already knows the brand and wants this branch. If a visitor learns nothing from your Croydon page that your Bromley page didn't already say, Google won't either.

Design the template as fields, not paragraphs

Build the template from what differs between branches: every field should be one that would be wrong if you copied it to another branch.

  • The branch's name, address, phone and hours, as text, matching its Business Profile exactly.
  • Directions from the way people actually arrive: the car park, the bus stop, the station exit.
  • The services offered at this branch, rarely the full brand list; a gym without a pool shouldn't have a pool section.
  • Photos of this building and the people who work in it, not the brand's stock set.
  • Reviews from this branch's own profile, quoted with the reviewer's first name and the date.
  • The nearby areas this branch serves, in a sentence, so surrounding towns don't need pages of their own.
  • One hand-written paragraph about the branch: when it opened, what it's known for, what's near it.

Shared content such as the brand promise can appear on every page, kept short and below the branch-specific content so the first screen belongs to the branch.

Then make the labels distinct: a title tag and main heading naming the service and the place ("Gym in Croydon", then the brand), and a meta description written for that branch. Location pages without the spam covers what makes one page convincing.

Make every page findable and tell Google what it is

A location page nothing links to is invisible, and store locators are the usual culprit: one that works only through a search box or a JavaScript map gives Google no links to follow. Build a plain /locations/ hub with an HTML link to every branch, grouped by region if the list is long, and keep it in the main navigation.

Then check the plumbing on each page.

  1. A consistent URL pattern such as /locations/croydon/, with every page in your XML sitemap.
  2. A canonical tag pointing to itself; a template that canonicalises every branch to the hub undoes everything above.
  3. LocalBusiness structured data carrying that branch's name, address, phone, hours and coordinates. Local business is in Google's rich-result gallery, and LocalBusiness schema covers the markup.
  4. Links between each branch page and the service pages for what it offers.
  5. The branch's Business Profile website field pointing at this page, as set up in One profile per location.

Ten locations versus fifty

At ten locations, one person can write every page by hand from a visit or a phone call. At fifty, nobody can, so the template needs a data source: a spreadsheet or CMS fields holding every branch-level fact, maintained by whoever maintains the Business Profiles, so the two never drift apart.

The hand-written paragraph survives the scale-up if you make it a form: ask each branch manager what the branch is known for, the easiest way to get there, and what's changed this year. Their answers do more for the page than anything a template can generate, because they're the one part that couldn't be written from head office.

Resist pages for towns you serve without a branch; that's the doorway pattern again. Name those areas on the nearest branch's page, and build a separate page only where you can say something specific and true.

When a branch closes, redirect its page to the nearest branch or the hub; when it moves, update the page the same day as the profile, because matching details are what the whole structure depends on.

What to take away

  • Google folds near-identical pages into one and drops the rest; there is no penalty, the pages just stop existing in Search.
  • Pages that differ only by a town name and funnel visitors to the same place match Google's documented doorway and scaled-content spam patterns.
  • A template scales when every field is a fact that would be wrong for another branch: address, hours, services, people, photos, reviews, directions and one hand-written paragraph.
  • Every page needs an HTML link from a hub, a sitemap entry, a self-referencing canonical, LocalBusiness markup, and its Business Profile pointing at it.

Next

With profiles and pages in place for every branch, the last chapter turns to proof, starting with Tracking calls, directions and clicks.

Free tools this lesson uses

Saved in this browser only.

Chapter 9: Run local SEO across multiple locations

All 10 chapters