A business with one shop has one address to keep right. A business with eight has eight sets of opening hours, eight phone numbers, eight pages, eight Google profiles, and a manager in each who may or may not tell head office when something changes. Multi location SEO is mostly the work of structuring that mess so every branch is findable, every detail is correct, and no page exists only to catch searches.
This guide is for owners and marketers of businesses with a handful to a few dozen branches, such as clinics, salons, restaurants, shops and service companies with offices. You will decide what counts as a location, choose a page and URL structure, write location pages that are actually different from each other, set up one Google profile per branch, and put a process in place so details stay correct as branches open, move and close. Nothing here promises a map-pack position or any other result.
Short answer: For multi location SEO, give each real, customer-facing branch its own useful page with its own address, phone number and hours, plus exactly one Google Business Profile that links to that page. Avoid near-copy pages for places you do not serve, and keep every detail in one shared source.
Before you begin
Build an inventory first. One row per branch, with these columns: real-world name, full address, main phone, regular and holiday hours, categories, whether customers visit or you travel to them, the manager's name, the page address on your site, Google profile status (none, unverified, verified, duplicate) and who has login access. This sheet becomes your single source of truth in Step 6.
You need access to the website and to the Google account that owns the profiles. Expect a day for a small chain. Do not delete or merge any existing profile until you have recorded who owns it, because removing a profile also removes its content and linked managers.
What counts as a separate location?
Google's Business Profile guidelines draw the line. Read the current text before you act; the points that matter here are:
| Situation | What Google's guidelines say |
|---|---|
| A shop or office customers can visit | Eligible, with one profile per location |
| A business that travels to customers | Eligible as a service-area business, with a profile for the central office, and the address hidden if customers are not served there |
| A virtual office or rented mailbox | Generally not eligible |
| A department with its own public identity | May have its own profile, with a unique name and a different category from the main business |
| A doctor, lawyer or similar practitioner | May have their own profile if reachable at the verified location during stated hours; support staff cannot |
| Several branches in one country | All use the same name and the same primary category, with limited exceptions |
A branch you never staff does not become a location because you give it a page, and a mailbox address can cost you the profile.
How should you structure pages for multi location SEO?
Use one page per real location, reached from a locations index. For URLs, a folder structure keeps everything under one site, which is also easier to maintain; the subdomain versus subfolder guide compares the options.
| Pattern | Example | Notes |
|---|---|---|
| Index plus branch pages | https://example.com/locations/ and https://example.com/locations/exampletown/ |
Clean, easy to link and to list in a sitemap |
| One page with all branches | https://example.com/locations/ only |
Fine for two or three branches, but no room for branch detail |
| Separate sites per branch | https://exampletown.example/ |
Splits effort and links; avoid unless branches are separate brands |
Google's spam policies define doorway abuse as sites or pages created to rank for specific, similar search queries that lead users to intermediate pages that are less useful than the final destination. Its examples include 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 browseable hierarchy. A page for a branch where people can actually visit you, with its own details, is the opposite pattern. A page for each town within driving distance of one office, with the same text and the town name swapped, is much closer to the pattern the policy describes.
Step-by-step instructions
Step 1: Lock the list of locations
Mark each inventory row as a customer-facing branch, service-area business, department or practitioner. Rows that do not qualify get no profile and no location page; cover them on a service-area page that explains what you offer and where you travel.
What success looks like: Every row is classified, and ineligible rows have a plan.
Step 2: Create the locations index and the branch pages
The index lists every branch with its address, phone number and a link. Each branch page gets a unique URL and title; put the town in the title where it helps people tell branches apart.
Link the index from your navigation or footer, and each branch page from the index and from relevant service pages. The internal linking strategy guide shows how to link pages so that none is left without incoming links. List all branch URLs in your sitemap (how to create an XML sitemap).
What success looks like: You can reach every branch page in two clicks from the home page.
Step 3: Make each branch page worth visiting
Copying one template and swapping the town is how thin pages happen. A branch page earns its place with details that exist only for that branch:
- Address, an embedded map or directions, parking and public transport notes.
- Opening hours, phone number and a way to book.
- The services, products or practitioners actually available there.
- Photos taken at that branch.
- Reviews or testimonials from that branch's own customers, shown as visible content.
If two branches offer exactly the same services, write the shared description once on a service page and link to it, rather than duplicating paragraphs on every branch page. The thin and duplicate content guide shows how to spot near-copies.
What success looks like: If you hide the town name, a reader can still tell which branch a page belongs to.
Step 4: Add LocalBusiness markup to every branch page
Mark each branch as its own LocalBusiness, using the most specific type available such as Restaurant or Store, with the address, phone, hours and the page's own URL. Google's documentation recommends this for several locations, and says departments with their own hours or phone numbers can be nested with only the properties that differ. It also notes that review and aggregate rating properties apply to sites that capture reviews of other local businesses, and Google's review snippet page says that pages where the reviewed entity controls the reviews about itself are ineligible for the star review feature. So leave rating markup out of your own branch pages.
{
"@context": "https://schema.org",
"@type": "Store",
"name": "Example Bikes",
"url": "https://example.com/locations/exampletown/",
"telephone": "+44 1632 960123",
"address": {
"@type": "PostalAddress",
"streetAddress": "4 Market Square",
"addressLocality": "Exampletown",
"postalCode": "EX1 3CD",
"addressCountry": "GB"
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "09:00",
"closes": "17:30"
}]
}
The local business schema guide explains hours and departments in full. Crawvix's structured data check reads the JSON-LD on the pages it samples and flags a LocalBusiness, Store or Restaurant block that has no name or address; it does not compare the block with your Google profile.
What success looks like: Each page passes a test and the markup matches the visible text.
Step 5: Set up one Google Business Profile per branch
The guidelines are specific, and they differ from what many chains do:
- One profile per location. Duplicates are not allowed.
- Name: the real-world name, the same across a country's branches, without keywords or location details added.
- Phone: a number that connects to that location, not a central call centre where a local one is possible.
- Website: a URL that represents the individual location. Link the profile to the branch page, not the home page.
- Categories: the fewest that describe the core business.
For ten or more locations of the same business, Google's bulk management lets you add, verify and manage them from a spreadsheet and a business group. Uploading a spreadsheet does not by itself request verification: you finish it under Verifications, then Chain. Service-area businesses are not eligible for bulk verification, duplicate, suspended or disabled profiles do not count toward the minimum, and Google may ask for evidence if your stated chain size differs from the profiles in the account. With fewer than ten locations, verify each profile on its own using the Google Business Profile setup guide. Tag each profile's website link with campaign parameters (see the UTM parameters guide) so analytics can separate visits from each branch.
What success looks like: Each branch has exactly one verified profile whose website link opens that branch's page.
Step 6: Keep one source of truth
Store each branch's details in one place, such as the spreadsheet from the start, and publish from it: location page text, structured data, the profile, and any directory listings. In a CMS, keep the details in fields so templates generate the markup and nobody retypes an address. The NAP citations guide applies the same discipline to listings elsewhere.
Assign an owner to each branch, and require that a move, phone change or rename is reported to the sheet's owner within a week. Google reviews profile edits before they go live, and changing the name or address of a verified profile can require verification again.
What success looks like: A changed opening time is made once and appears on the page, in the markup and in the profile.
Step 7: Handle openings, moves and closures
- Opening: Add the sheet row, publish the page, create the profile and verify it.
- Move: Update the existing profile's address instead of creating a new one, and update the page.
- Temporary closure: Set special hours or mark the profile closed, and say so on the page.
- Permanent closure: Mark the profile closed. On your site, either keep the page with a clear closure notice and links to the nearest branches, or redirect it to the locations index with a 301 redirect. Do not leave a live page with the closed branch's old hours.
What success looks like: No page, profile or markup block describes a branch that has closed.
Step 8: Manage reviews and measurement per branch
Each branch collects its own reviews. Teach managers the rules in the guide to getting Google reviews, because Google can restrict a profile that breaks them. Report website clicks by branch in your analytics (GA4 setup for a small business).
What success looks like: You can compare branches using the same measures, and each manager knows the review rules.
Final verification checklist
- Every branch is classified as a branch, service-area business, department or practitioner.
- Each qualifying branch has one unique, useful page reachable from the locations index.
- No page exists only to funnel visitors or to repeat another page with a town name swapped.
- Each branch page has
LocalBusinessor a more specific type with matching visible details. - Each branch has exactly one Google Business Profile, linked to its branch page.
- Branch names, categories and phone numbers follow Google's rules.
- All branch URLs are in the sitemap.
- A single data source feeds pages, markup and profiles.
- Closed branches are marked closed or redirected.
Common mistakes to avoid
- Making a page for every town in a region. Near-copies with a swapped name resemble the doorway pattern. Build pages for real branches and one service-area page.
- Pointing every profile at the home page. Google's guidelines call for a URL that represents the individual location.
- Using the head office phone for every branch. Use a number that reaches that branch.
- Adding keywords or the town to a profile name. The guidelines forbid extra content in the name.
- Starting a new profile after a move. Update the old one.
- Marking up your own reviews. Pages where the business controls the reviews are ineligible for star results, so skip the rating properties.
- Leaving managers out of the loop. Without a reporting rule the sheet goes stale.
Frequently asked questions
Do I need a separate page for each location?
Yes for each real location customers can visit or contact. A single page with every address in a list is acceptable only for very few branches, because it leaves no room for the details that make each branch useful.
Can I use one phone number for all locations?
Google asks for a number that connects to the individual location and prefers a local number to a central call-centre line where possible. A single shared number is a compromise you should not choose if a local one exists.
How do I show service areas without doorway pages?
Create one service-area page explaining where you work and what you offer. Add pages for specific places only if each has content that is useful to a visitor on its own, such as local projects, different services or different contact details.
Will more location pages improve my local rankings?
Not on their own. Google says local results depend on relevance, distance and prominence, and that you cannot request or pay for a better local ranking. Accurate pages and profiles make you eligible to be found and easier to trust.
Related guides
- Local Business Schema: Mark Up Your Address, Hours and Location
- Google Business Profile Setup: Claim, Verify and Complete Your Listing
- NAP Citations for Local SEO: Audit and Fix Inconsistent Listings
- Local SEO Checklist: Site and Off-Site Tasks for a Local Business
- Thin Content and Duplicate Pages: How to Find and Fix Them
Official references
- https://support.google.com/business/answer/3038177
- https://support.google.com/business/answer/3217744
- https://support.google.com/business/answer/4490296
- https://support.google.com/business/answer/7091
- https://developers.google.com/search/docs/essentials/spam-policies
- https://developers.google.com/search/docs/appearance/structured-data/local-business
- https://developers.google.com/search/docs/appearance/structured-data/review-snippet
Next step: Try the free website sample to see how your own site does on a few of these checks. This guide provides technical information, not a guarantee of rankings, traffic or index inclusion.