A location page earns visibility by being genuinely local, useful and actionable
Multi-location SEO comes down to three connected jobs: one accurate Google Business Profile per real location, one location page per profile that carries facts unique to that place, and a site structure that links a locations hub to each city and each city to the services delivered there. Get those right and every location can compete in its own local results.
This guide sets out what Google’s own documentation says, a template for what each location page must hold, the linking pattern, schema for each location, and a self-check you can run on any page before it goes live.
What Google says about doorway pages and scaled location content
Google treats near-identical city pages as spam when they exist to rank rather than to help. Its spam policies define doorway abuse as sites or 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 Google’s listed examples describe the classic multi-location mistake almost word for word:
- “Having multiple domain names or pages targeted at specific regions or cities that funnel users to one page”
- “Creating substantially similar pages that are closer to search results than a clearly defined, browseable hierarchy”
The same page lists scaled content abuse, including “Using generative AI tools or other similar tools to generate many pages without adding value for users”. Producing a hundred city pages with a writing tool and swapping the town name is exactly that.
| Signal | Legitimate location page | Doorway pattern |
|---|---|---|
| Reason to exist | A real branch, team or service area customers can use | A place name with search volume |
| Content | Address, hours, team, services and proof specific to the place | The same copy with the town name swapped |
| Where it leads | Booking, call or directions for that location | A generic contact page shared by every city |
| Structure | Part of a browseable hub that visitors can navigate | Orphan pages reachable only from search or a footer list |
| Removal test | Customers of that location would miss it | Nobody would notice it had gone |
The removal test is the quickest one to apply. If deleting a page would inconvenience no real customer, it is not helping anyone.
Decide which locations deserve a page
Create a page when there is real demand, operational coverage and enough unique information to help a buyer. We cover this on our multi-location SEO page. A location name alone is not a content strategy.
Prioritise areas using search demand, revenue potential, capacity, competition and proximity. Avoid doorway pages created only to capture every place-name.
Service-area businesses, such as trades and mobile services, face a sharper version of the question. A page for every town in the service radius is the pattern Google names. A better structure is one page per base the team actually works from, listing the towns it covers, plus separate pages only for areas where there is something distinct to say: a dedicated team, different services or local projects you can show.
- 01 · PRESENCEIs there a branch, team or regular service in this place? If no: no page.
- 02 · DEMANDDo customers search for or travel to this place for what you sell? If no: list it on the nearest location page instead.
- 03 · UNIQUE FACTSCan you fill the template below with facts no other page has? If no: consolidate.
- 04 · OWNERSHIPWill someone keep hours, team and offers current? If no: wait until they will.
- 05 · BUILDAll yes: build the page and link its Business Profile to it.
Connect Google Business Profiles and the website
Each eligible location gets one Business Profile, and each profile should point to the most relevant location page. Categories, services, hours and contact details should align with the website, while local posts and review responses keep information current.
Google’s guidelines for representing your business set the rules for chains and multi-site businesses:
- One profile per location: “Do not create more than one page for each location of your business, either in a single account or multiple accounts.”
- One name: “All business locations within the same country must have the same name for all locations.”
- One shared primary category: “All locations of a business must share the one category that best represents the business.”
- Local contact details: provide a phone number or website that represents the individual location, and “Use a local phone number instead of a central call center helpline number whenever possible.”
- Service-area businesses: “If you’re a service-area business, you should hide your business address from customers.”
- Departments: “Publicly-facing departments that operate as distinct entities should have their own page.”
For ten or more locations, Google offers bulk verification, which requires “10 or more profiles from the same business”. Agencies managing several businesses in one account cannot use it.
Google’s explanation of local ranking names three factors: relevance, distance and prominence. Prominence is “based on info like how many websites link to your business and how many reviews you have”, and “There’s no way to request or pay for a better local ranking on Google.” The website’s role is to feed relevance and prominence for each location, which a shared generic page cannot do.
The location-page template: what each page must hold that others do not
A location page is thin when it could be pasted onto another city’s URL without anyone noticing. The template below separates the shared parts, which can be identical everywhere, from the parts that must be unique to each page.
| Element | Unique to this location? | What good looks like | Thin if… |
|---|---|---|---|
| Name, address, phone | Yes | Matches the Business Profile exactly, with a local number | A central number or no address |
| Opening hours and holiday changes | Yes | The same hours as the profile, updated for closures | “Contact us for hours” |
| Services offered here | Yes | Only services this location delivers, with local notes | The full company list copied |
| Team | Yes | Named lead or team photo, with real roles | Stock photography |
| Getting there | Yes | Parking, transport, access, an embedded map | Missing |
| Local proof | Yes | Reviews, projects or customer stories from this area | Company-wide testimonials only |
| Local FAQs | Yes | Questions this branch actually receives | Generic FAQs repeated on every page |
| Booking or enquiry | Yes | Routes to this location’s calendar, phone or inbox | One generic form |
| Brand promise, method, policies | No | Short, consistent, linked to the main pages | Repeated at length on every page |
A useful rule of thumb: most of what a visitor reads above the fold should be in the “Yes” rows. If the shared material dominates, the page reads as a template, and both people and search engines treat it that way.
Give every location a distinct purpose
The template sets the minimum. The core offer may be consistent everywhere, but the evidence should be local: authentic team details, facilities, service-area notes, photographs, reviews and local FAQs that a buyer can verify.
Write for the person deciding whether this specific location can solve the problem. If the answer is identical everywhere, consolidate rather than duplicate.
For a worked example of discovery and booking planned together, see our location-led case study.
Internal linking for locations: hub, city, service-in-city
Use a clear hub for all locations and build service-location pages only where demand and content justify them. Breadcrumbs and contextual links should help visitors move between a service, nearby location and proof.
A disciplined local SEO structure prevents cannibalisation and focuses authority on pages that can win. It is also what Google’s doorway example contrasts with: “a clearly defined, browseable hierarchy”.
- LEVEL 1 · HUBThe locations page lists every location and links down to each city page and each service page.
- LEVEL 2 · CITYThe Leeds page links up to the hub, across to nearby locations, and down to services offered there.
- LEVEL 3 · SERVICE IN CITYEmergency repairs in Leeds exists only where demand and unique content justify it, and links up to its city and the main service page.
| Page | Links up to | Links across to | Links down to |
|---|---|---|---|
| Locations hub | Home | Main service pages | Every city page |
| City page | Hub (breadcrumb and body) | Two or three nearest locations | Service-in-city pages, if any |
| Service-in-city | City page and the main service page | Same service in nearby cities, sparingly | Booking for this location |
| Main service page | Home or services hub | Related services | The locations hub, and key cities |
The main service page owns the national version of the keyword, such as “emergency repairs”. A service-in-city page targets only the local version and links back to the owner, so the two never compete. Avoid footer lists of every city: they add links without helping anyone navigate.
LocalBusiness schema for each location
Each location page should carry its own LocalBusiness structured data describing that one location. Google’s local business documentation says to “Define each local business location as a LocalBusiness type”, lists name and address as required, recommends properties including geo, openingHoursSpecification, telephone, url and department, and advises to “Use the most specific LocalBusiness sub-type possible”. The url should be “The fully-qualified URL of the specific business location.”
{
"@context": "https://schema.org",
"@type": "Dentist",
"@id": "https://example.com/locations/leeds/#location",
"name": "Example Dental Leeds",
"url": "https://example.com/locations/leeds/",
"telephone": "+44 113 000 0000",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 Example Street",
"addressLocality": "Leeds",
"postalCode": "LS1 0AA",
"addressCountry": "GB"
},
"geo": {"@type": "GeoCoordinates", "latitude": 53.80, "longitude": -1.55},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "08:30", "closes": "17:30"
}],
"parentOrganization": {"@id": "https://example.com/#organization"}
}Illustrative example with placeholder details. Replace every value with the location’s real data.
Three rules keep it honest. Mark up only what the page shows: Google’s structured data guidelines say “Don’t mark up content that is not visible to readers of the page.” Use one block per location page, not a list of every branch on every page. And keep the values identical to the Business Profile, so the name, address, phone and hours agree everywhere Google looks.
Make booking and enquiry frictionless
Show the correct phone number, availability, directions and booking action prominently. Mobile users should not need to hunt through generic navigation to act.
Use tracked CTAs for calls, directions, bookings and forms. If the page promises local relevance but routes everyone to a generic form, valuable context is lost.
Measure local outcomes, not rankings alone
Track profile interactions, location-page visits, calls, direction requests, bookings, valid enquiries and revenue. Segment performance by location so operational issues do not look like marketing failures.
Rankings are diagnostic. The business result is a qualified local action that can be fulfilled profitably.
Tag the website link in each Business Profile with campaign parameters naming the location, so profile visits show up separately in analytics. Compare locations against each other each month: a branch with strong visibility and weak bookings usually has a page or phone-handling problem, not a search problem. Local businesses in health and wellness face extra rules on what they can claim; our guide to local and AI search for clinics covers them.
The thin-page self-check
Run this on one location page at a time. Tick each statement that is true of the page as it stands today. Nothing you tick is sent anywhere.
Location score 0 / 17
Tick what is true today. If you are not sure, leave it unticked.
The first two statements carry the most weight because they are the doorway test in practice. A page that fails either is thin however polished the rest looks.
Govern expansion and updates
Create a launch checklist for unique content, profile alignment, schema, internal links and conversion tracking. If a partner will run it, our questions to ask an SEO agency help you choose one. Assign responsibility for hours, staff, closures, reviews and service changes.
Expand after the first group proves its value. If an agency is doing the work, our guides to the first 90 days with an SEO agency and hiring an India-based marketing agency show what to expect. A smaller set of maintained location journeys is stronger than hundreds of stale pages.
When a location closes or moves, update the Business Profile first, then redirect or rewrite the page the same day. A page advertising a closed branch costs trust with every visitor who arrives at a locked door.
Questions owners ask about multi-location SEO.
Do I need a separate page for every location?
You need one page for each location that has its own Business Profile, team or service. You do not need pages for every town you could serve; Google’s spam policies treat city pages that funnel to one place as doorway abuse.
Can location pages share content?
Yes, for the brand promise, method and policies. The address, hours, services, team, proof and booking route must be unique, and should make up most of what a visitor reads first.
Should every location have its own Google Business Profile?
Every eligible location, yes, and only one each. Google’s guidelines say not to create more than one profile for each location, and all locations in a country must use the same business name.
Should each location page have its own schema?
Yes. Google says to define each location as a LocalBusiness type, with the url of that specific location, and to mark up only content visible on the page.
What about service-area businesses without a shopfront?
Google’s guidelines say service-area businesses should hide their address on the Business Profile. On the website, build pages around the bases your team works from and list the areas each one covers.
