One Brand, Many Branches, Different Local Services
Local SEO for franchises: what belongs on a market page, a service page, and where the two combine, without building doorway pages.
Branches differ, templates do not, and that gap is where local SEO for franchises turns into doorway pages. Three page types close it, and one test decides which of them a branch has earned.
Head office sees one company with fifteen addresses. Search sees fifteen local businesses that happen to share a logo, and it ranks each one against a different set of competitors in a different city.
Reading the brand that second way changes the first question you ask about the site. Instead of asking which city-and-service keyword combinations deserve a page, ask which branch-and-service pairs can say something locally true that the brand pages have not already said.
Page type follows local proof. Every combination page built ahead of that proof is a doorway page with a tidier URL. This article, fourth in a six-part local SEO series, gives you the test that tells the two apart.
Key takeaways
- A multi-branch brand needs three page types, not one template: a market page per branch, a service page per offering, and a market-plus-service page only where the pair earns it.
- Local proof decides which combinations get a URL: local pricing, the crew, photos from that city, and reviews naming that service in that market.
- A market page lists only the services that branch actually delivers, and carries the address, hours, local team, and that branch’s own LocalBusiness markup.
- A service page is brand-level, carries no address and no LocalBusiness markup, and links out only to markets that genuinely offer it.
- When a branch does not offer a service, leave it off entirely: no page, no placeholder, and no note about asking for availability.
Fifteen Branches Are Fifteen Local Search Problems, Not One
Local SEO for franchises and multi-branch brands is the work of ranking each branch in its own map pack and its own local organic results, using a page structure that matches what that branch actually sells. It is a per-location problem solved with a site-wide system. That system has three page types and one rule for choosing between them.
Distance is one of the three signals Google names for local ranking, alongside relevance and prominence. A single page cannot be close to fifteen places at once, which is why geo-grid rank tracking exists at all: the same query returns a different result a few streets away.
Branches are also not copies of each other, and a site-wide template quietly erases that. Yext’s local pages resources come at it from the other side: a location page is generated from that location’s own record, never from a brand-level one.
- Denver runs gutter cleaning and holiday lighting year round, while Tucson skips lighting and sells solar panel cleaning instead.
- Each branch competes against a different local field, so one brand page can rank well in one city and nowhere in the next.
- A single shared service list published across every branch is a factual error repeated once per location.
The one-location version of this problem is the subject of Local SEO for a Business With a Single Location. Multiply it by fifteen and the hard part stops being the profile and starts being the site.
Local SEO for Franchises Is a Page-Type Decision, Not a Keyword Decision
The obvious way to plan a multi-branch site is to take the service list, take the city list, and multiply. Fifteen branches and eight services produce 120 possible URLs before a single one of them has anything to say.
That grid is a keyword map, not a site plan.
It answers a question about search volume when the question that decides indexing is about substance. HubSpot’s local SEO guide starts from the same place, and its worked example is a chain whose every website link points at a location page carrying that branch’s own hours, reviews, address, and number.
What the Keyword Grid Cannot Tell You
- Volume tells you the query exists: it does not tell you whether this branch can answer it better than a brand-level page already does.
- Proof tells you the page will hold up: local pricing, the crew who does the work, photos from jobs in that city, and reviews naming the service are what a combination page is made of.
- Coverage tells you the page is honest: a branch that does not offer the service has nothing to publish, whatever the keyword tool reports.
Volume decides what you would like to rank for. Proof decides what you are allowed to build, and swapping the second question for the first is the whole move.
Proof, Not Volume: The Driver That Decides Which Page Gets Built
Local proof is anything on a page that could only have come from that branch. It is why a reader in Tucson believes the page was written for Tucson, and why a crawler sees a distinct document instead of a variable substitution.
The location record itself is the unit of trust, and the same logic holds on the website. Yoast’s Local SEO tooling gives every branch its own page with its own address, hours, and map for exactly that reason.
Four Kinds of Local Proof Worth Publishing
- Pricing that reflects what this branch charges, including local minimums or travel fees.
- Named crew or team detail for the people who actually do the work in that market.
- Before-and-after photos from jobs completed in that city, rather than stock library images.
- Reviews that mention the service and the city, drawn from that branch’s own profile.
Anything a head office writer could produce from a spreadsheet is brand content, and brand content belongs on the service page.
Proof is also the honest ceiling on how many pages a brand can support. Three page types fall out of it, and each one owns a different job.
Three Page Types and What Each One Owns
Market pages, service pages, and market-plus-service pages between them cover every local query a multi-branch brand receives. Each answers a different question, and none should rank for the query another one owns.
The nesting is not cosmetic. A combination page sits under its market rather than under its service, because the local proof is the primary asset and the service is the modifier on top of it.
What the Market Page Carries
A market page carries everything true about the branch and nothing true only of the brand: address, hours, local team, local reviews and photos, and the services that branch actually delivers.
It is the only one of the three that should carry a Business Profile association, since a profile represents one physical location rather than a company. The markup follows the same rule: each market page gets its own LocalBusiness block with that branch’s real address and service list, never a shared block with the city swapped into a template variable.
Keeping that block consistent with the branch’s off-site records is the citation problem in another form, since a citation is defined by its data rather than by its directory, and holding that data steady across every platform at once is the whole point of listings management at scale. I made the listing-level version of that argument in Local Citations: Consistency Beats Volume Every Time.
A market page also needs a real answer above its list of services, for the same reason category pages need an answer above the grid.
What the Service Page Carries
- Brand-level method and standards: what the service is, how the brand delivers it, the equipment standard, and the guarantee, written once instead of fifteen times.
- No address and no LocalBusiness markup: a service page represents no single location, so it should never be the page a Business Profile links out to.
- Outbound links to real coverage only: it lists the markets that genuinely offer the service, and omits the ones that do not.
Brand-level content is where the templating question bites, because the system has to build a location page from a location record and skip the combination page when the service is missing. I compared what the main platforms can do natively in WordPress vs Shopify vs Wix vs Squarespace, Compared. Conditional generation is the matcher expressed in code, and it is easier to trust once the matcher has been run by hand.
Running the Matcher on One Brand, Two Cities, Eight Services
Take a window washing brand with fifteen branches and eight services across the group. Run every branch-and-service pair through three questions in order, and stop at the first no.
The questions, asked in order, with a stop at the first no
- Does this branch actually offer the service? If not, the pair ends here: no page, no placeholder, no coverage listing.
- Does the market page already say everything true about it? If yes, the service belongs on that page’s list and nowhere else.
- Can the branch supply pricing, crew, photos, or reviews specific to that service in that city? If yes, the combination page has earned a URL.
- Does the branch’s own profile agree? The services listed on it should match the site, because both describe the same location, and keeping those two records in step is most of what listings work at scale involves.
Denver offers window washing, gutter cleaning, and holiday lighting, with three years of local photos and reviews naming all three. Tucson offers window washing and solar panel cleaning, has local proof for the solar work, and has nothing local to say about window washing yet.
What the matcher leaves unbuilt
Denver ends up with three combination pages, Tucson with one, and five of the eight services never reach a URL in either city.
Across the group the honest count lands far below 120, and that gap is the reason to run the test rather than the multiplication. Tooling built for multi-location work, such as Birdeye’s multi-location platform, assumes the same thing: coverage is an inventory, not a grid.
Run the matcher on your own locations I take your live location and service pages, run every branch-and-service pair through the three questions above, and hand back a verdict per URL: keep, merge, or do not build. You also get the build order for the pages that are missing. Book a free diagnosis
Doorway Pages Are the Failure Mode This Test Exists to Catch
A market-plus-service page that repeats the market page and the service page with the city name swapped is a doorway page. Google’s spam policies name the pattern directly: pages built to rank for a city-and-keyword combination that funnel visitors into the same content underneath.
The matcher in the previous section is the whole defence, and it runs before publication rather than after a manual action.
Three Versions of the Same Mistake
- Publishing a combination page for a service the branch does not offer misrepresents coverage, which is the worst version of the pattern.
- Publishing one with a caveat such as ask about availability does the same thing in softer wording.
- Publishing nine thin variants to fill out a grid spends crawl capacity a mid-size site was never granted generously.
Crawl capacity is the quieter cost, and I covered where it actually binds in Crawl Budget and Indexation for Small Sites. Thin variants blur measurement too, since tracking local SEO across multiple cities already means watching each market as its own target.
None of this shows up as a penalty on day one. It shows up as a set of pages that never rank, which is why How to Tell If Your Local SEO Is Actually Working is the next thing to read.
What Good Looks Like: Linking the Brand Layer to the Local Layer
Internal linking here has one job: move a crawler and a reader from any service page to every market that offers it, and from any market page to every service that branch delivers. Nothing links to a combination that has not been built.
- Service page down to markets: an availability list near the foot of the page, pointing at every market that genuinely offers the service.
- Market page up to services: links to the brand-level service page for each service the branch delivers, plus any combination page beneath it.
- Breadcrumbs that match the URL: Home, Locations, Denver, Window Washing, so the trail agrees with the nesting instead of implying the service is primary.
This is a two-hub structure rather than the single hub a topic cluster usually describes: the service page is a topical hub across markets, and the market page is a geographic hub across services. I set out the general shape in Topic Clusters and Pillar Pages: How They Work and the mechanics in Internal Linking: The Most Underrated SEO Lever.
Good, in this structure, is unglamorous. Every branch has one market page backed by a real address and a real service list, every service has one brand page, and each combination page that exists can name a price, a crew, a photo set, or a review the other two do not carry.
Measured properly, that structure shows each market moving on its own, which is why rank tracking by market beats one blended number, and why citation records get audited branch by branch.
A brand that can name what each branch sells, and prove it on the page that says so, has already solved most of what multi-location local search asks of it.
Frequently Asked Questions
Should each branch have its own page, or one page for the whole brand?
Each branch needs its own market page. A single brand-wide page cannot carry one specific address, one set of hours, a local team, or the exact service list that branch delivers, and it cannot compete for a hyper-local query. Brand-wide material belongs on service pages instead.
What is a doorway page, and how do I avoid creating one with many locations?
A doorway page ranks for a city-and-keyword combination while offering nothing the parent pages did not already say. Avoid it with one test before publishing: a market-plus-service page must add local pricing, crew, photos, or reviews the market page and the service page do not carry.
How should I handle a service one branch offers and another does not?
Leave the service off the non-offering branch entirely. It stays off that market page’s list, no combination URL is created for it, and the service page omits that branch from its coverage list. Add it only once the branch genuinely offers the service and can prove it locally.
Does a city-based or service-based URL structure work better for a multi-branch site?
Both, nested rather than run as two flat lists. Market pages live under a locations path, service pages under a services path, and any combination page nests beneath its market, so the local proof reads as primary and the service reads as the modifier on top of it.
Can linking between location pages and service pages look manipulative to Google?
Not when every link reflects a real relationship. A service page should link to the markets that actually offer it, and a market page to the services it actually delivers. Risk comes from linking to combinations that do not exist or overstating coverage, not from accurate linking.
Which page type should carry the LocalBusiness markup and the Business Profile link?
The market page, and only the market page. It represents one physical location, so it carries that branch’s own LocalBusiness block with its real address and service list, and it is the page that branch’s Business Profile should link to. Service pages carry neither.
Continue Reading
More From This Series
- Local SEO for a Business With a Single Location
- A Google Business Profile That Earns the Map Pack
- Local Citations: Consistency Beats Volume Every Time
- How to Ask for Reviews Without Sounding Desperate
- How to Tell If Your Local SEO Is Actually Working
More from TDM Insights
- Topic Clusters and Pillar Pages: How They Work
- Internal Linking: The Most Underrated SEO Lever
- Crawl Budget and Indexation for Small Sites
- WordPress vs Shopify vs Wix vs Squarespace, Compared
- Why Category Pages Need an Answer Above the Grid
Explore TDM Insights Topics