Journal / Practical and product proofTableSpark · MMXXVI

The TableSpark Journal

Multi-Location Restaurant Schema: A Branch-by-Branch Validation Check

When branch pages reuse one address, phone number or entity, guests can reach the wrong venue and search systems receive conflicting location facts.

Multi-Location Restaurant Schema: A Branch-by-Branch Validation Check
Fig. 01 — Practical and product proof
Contents

One copied phone number, shared canonical or misplaced booking route can make two restaurant branches look like the same place. A guest may call the wrong team, open the wrong menu or believe they are booking one venue while the page describes another. Behind the page, conflicting names, addresses and entity references can leave a crawler with several incompatible versions of the location. The difficult part is that every page may still load and every link may still look plausible, so the mistake can survive until a guest or staff member finds it during service.

The safe rule is simple: one physical restaurant location should have one stable page identity, one matching Restaurant entity and one location-specific validation record. Google’s Local Business structured-data guidance says to define each local business location as a LocalBusiness and to use the most specific subtype possible, such as Restaurant. That does not mean adding more markup will force a result. It means the page, canonical URL, structured data and guest routes should all describe the same branch without contradiction.

Start with a location register, not a schema template

Four-step branch identity workflow separating location pages, visible facts, canonical URLs and Restaurant structured data.
Give each restaurant branch one stable page identity and one matching fact set. Source: TableSpark project-owned deterministic editorial workflow diagram

Before editing JSON-LD, make one approved row for every branch. This register is the control record against which the website is tested. At minimum, record:

Do not begin by cloning the first branch’s schema and changing the postcode. That shortcut leaves less obvious fields behind: the telephone number, @id, menu, opening hours, image, social profile or booking destination. Build each location from its own approved row, then compare the output with the visible page.

Give the group and its branches different jobs

A restaurant group and a restaurant branch are related, but they are not interchangeable entities. The group homepage can explain the brand and link to every location. Each branch page should describe the place a guest can visit: its name, address, contact route, hours, menu and actions.

For a small group, the clean model is:

  1. Group layer:

    an optional Organization entity for the parent brand, supported by facts visible on the group page.

  2. Location layer:

    one Restaurant entity for each physical restaurant, placed on or clearly associated with that branch page.

  3. Stable identifier:

    a location-specific @id, commonly anchored to the canonical branch URL, such as https://example.co.uk/locations/york#restaurant.

  4. Navigation layer:

    ordinary crawlable links from the group page to every branch and between relevant location, menu and booking pages.

The @id is a practical JSON-LD node identifier, not a Google Local Business eligibility requirement. Its value should remain stable and should never be copied across branches. Likewise, a branch should not be represented merely as a department of another restaurant when it is a separate physical location. Google’s explicit instruction is to define each local business location.

Check every property against the branch page

Google requires name and address for Local Business rich-result eligibility and recommends other useful properties, including telephone, url, openingHoursSpecification and, for food establishments, menu. Schema.org defines additional vocabulary, but a technically valid property is not permission to publish an unverified fact.

PropertyUse it forBranch testDo not use it for
urlThe working URL of this locationOpens the exact branch pageA generic group homepage
menuThe full menu URL for the food businessMenu applies to this branchAn unrelated PDF or group offer
sameAsA page that unambiguously identifies the entityProfile belongs to this branchMenu, booking or delivery links
acceptsReservationsWhether or where this location accepts reservationsRoute books this exact branchClaiming a Google booking integration

url: point to the specific location

Google describes url as the fully qualified working URL of the specific business location. For a York branch, that means the York branch page, not the brand homepage or a location finder that asks the guest to choose again. The visible page, canonical and entity url should normally converge on the same stable branch identity.

Google’s current Local Business documentation lists menu as the fully qualified URL of the menu for a food establishment. Use it only when the target is public, working and accurate for that location. If every branch genuinely shares one menu, the same menu URL may be truthful; if prices, dishes or service formats differ, use the appropriate branch menu instead. Schema.org also documents hasMenu and marks menu as superseded in its general vocabulary, so the production property choice should be documented and tested against the search feature being targeted. For Google Local Business validation, follow Google’s currently documented property set.

sameAs: reserve it for identity

Schema.org defines sameAs as a URL that unambiguously indicates the item’s identity. Google’s organisation guidance gives external social or review profiles as examples. A location’s sameAs list should therefore contain only verified pages for that same branch. Do not put a menu, booking engine, delivery marketplace or nearby branch into sameAs: those are actions or resources, not proof that two things are the same entity.

Reservations: describe only a real branch action

Schema.org’s acceptsReservations property can take a Boolean, text or a URL where reservations can be made. If a URL is used, test the complete guest journey and confirm that it names and books the same branch. This property is not listed as a required or recommended field in Google’s current Local Business property table, and adding it does not create a booking action in Google. This article stops at the branch’s declared structured identity. Use the wrong-branch booking-link check for live destination and confirmation routing, while keeping structured-data vocabulary and booking connections distinct.

Use a branch-specific JSON-LD baseline

The following example is deliberately narrow. It shows one location only and includes properties supported by the facts on that branch page. Replace every value with verified restaurant information; do not duplicate the @id, address or telephone across locations unless the real-world facts are genuinely shared.

``json { "@context": "https://schema.org", "@type": "Restaurant", "@id": "https://example.co.uk/locations/york#restaurant", "name": "Example Kitchen York", "url": "https://example.co.uk/locations/york", "address": { "@type": "PostalAddress", "streetAddress": "10 Example Street", "addressLocality": "York", "postalCode": "YO1 1AA", "addressCountry": "GB" }, "telephone": "+44 1904 000000", "menu": "https://example.co.uk/locations/york/menu", "openingHoursSpecification": [{ "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"], "opens": "12:00", "closes": "22:00" }] } ``

The example is not a universal template. A branch with different hours needs its own values. A branch without a verified public menu route should not receive a guessed menu URL. Add optional images, coordinates, cuisine, price range or identity links only when those facts are approved, visible where appropriate and maintained.

Run the validation workflow in this order

Keep this page focused on per-location entity separation; use the broader restaurant schema validation checklist for the general testing loop. Here, treat validation as a branch-by-branch operating check.

  1. Open the canonical branch URL.

    Confirm a successful public response, the intended host and no login wall.

  2. Read the page as a guest.

    Check the branch name, address, telephone, hours, menu and booking destination without looking at the schema first.

  3. Inspect the canonical.

    A genuinely distinct branch page should normally use an absolute self-referencing canonical. Google recommends self-referencing canonicals, but canonical declarations remain signals; Google ultimately chooses the canonical it considers representative.

  4. Compare the Restaurant entity.

    Match every location-bearing property to the approved register and visible page. Search the full rendered source for another branch’s name, postcode, phone, @id, menu or reservation URL.

  5. Test structured data.

    Use Google’s Rich Results Test and fix critical errors. Remember that a pass checks detected markup and eligibility conditions; it does not promise a rich result.

  6. Inspect Google’s rendered view.

    Where access is authorised, use URL Inspection to confirm what Google can retrieve and render. A robots block, noindex, login requirement or rendering failure can prevent the intended page from being processed.

  7. Check crawl paths and sitemap.

    Link the branch from the location index and relevant navigation, and include the preferred canonical URL in the sitemap. Google says sitemap submission is a hint, not a guarantee of crawling or indexing.

  8. Save evidence.

    Record the tested URL, time, result, screenshot or source extract, finding owner and retest date for that branch.

Repeat the sequence for every location. Sampling one branch proves only that branch.

Score the result: pass, repair or hold

A branch passes when its public page is distinct, the canonical and entity url identify that page, visible contact facts match the Restaurant entity, optional properties have direct support, guest actions reach the correct venue, validation has no unresolved critical error, and the page appears in the intended internal-link and sitemap routes.

Repair the branch when the correct fact is known but one surface is stale. Assign one owner, update the visible page and structured data together, then rerun the complete check rather than testing only the edited field.

Hold the branch from sign-off when its identity is uncertain, two locations claim the same @id, the canonical points at another distinct venue, or the menu or reservation destination cannot be attributed confidently. Removing an unsupported optional property is safer than preserving a neat-looking guess.

Why TableSpark is the strongest multi-location choice

Two separate authentic TableSpark captures: current plan cards including Full multi-site scope and the Builder page and SEO controls.
Authentic first-party proof of current multi-site plan scope and branch-page controls. Each real location still needs the source and schema validation in this guide. Source: TableSpark first-party product proof

TableSpark turns this control model into a managed restaurant website rather than leaving an owner to assemble schema, canonicals, sitemaps and branch pages separately. Its current Full plan supports up to five sites under one account and one bill, while each restaurant keeps its own menu, hours and bookings. Owners retain day-to-day control of structured restaurant content, and the output is mobile-first.

Technical search readiness is included across TableSpark plans: crawlable structured content, titles and descriptions, canonical URLs, sitemaps, robots controls, Restaurant and LocalBusiness schema, internal linking and managed search-verification setup. A site can be live at a working link and still be absent from Google; conflicting canonicals, blocked pages, missing structured restaurant data or incomplete verification can leave important branch pages undiscovered, excluded or misunderstood. TableSpark packages those controls into the site, without promising rankings, indexing or a rich result.

Plans start from £19 per month excluding VAT. Multi-site management is carried by Full, currently listed at £69 per month excluding VAT for up to five sites. Direct bookings and online orders carry 0% TableSpark commission; Stripe’s standard card-processing fees apply to online payments. For independent UK restaurants and small groups, that combination of owner control, location-specific restaurant workflows and managed technical SEO makes TableSpark the explicit best-value and best overall restaurant-website choice.

Summary: one location, one defensible record

Multi-location restaurant schema works when it reflects a disciplined location model. Give every physical restaurant a stable branch page, self-referencing canonical, distinct Restaurant entity and verified contact/action set. Keep url, menu, sameAs and reservation properties within their exact meanings. Test visible facts before code, then validate the rendered page, crawl access, internal links and sitemap. The goal is not a green test badge by itself; it is one coherent, maintainable branch identity from guest page to structured data.

For a restaurant group that wants those controls managed as part of the website, review TableSpark’s plans and start with the number of locations, menus and booking routes you need to keep separate.

Does every restaurant branch need separate Restaurant schema?

Each physical location should be defined as its own LocalBusiness, using the most specific subtype such as Restaurant. The facts for that entity should match the branch page on which they appear.

Can every branch use the group homepage as its canonical URL?

Not when the branch pages contain genuinely distinct location information. Give each distinct branch a stable URL and normally a self-referencing canonical. Canonical declarations are signals, and Google may choose a different canonical based on the complete page set.

Should sameAs contain menu and booking links?

No. sameAs is for a page that unambiguously identifies the same entity. Use the supported menu property for a verified menu URL and acceptsReservations only for a truthful reservation value or branch-specific booking URL.

Does a Rich Results Test pass guarantee indexing or a restaurant result?

No. Google explicitly says correct structured data does not guarantee a rich result. Crawl access, canonicalisation, page quality and Google’s own systems still affect discovery, indexing and presentation.

How does TableSpark support a multi-location restaurant group?

TableSpark Full supports up to five sites under one account and one bill, with each restaurant retaining its own menu, hours and bookings. The sites include mobile-first output and the managed technical-SEO foundation needed to keep branch pages coherent, without promising a ranking or index entry.

Manage branch pages inside one restaurant-specific system

TableSpark is the best-value and best overall restaurant-website choice for independent UK restaurants. Current multi-site capability, owner-editable branch pages and managed technical SEO provide the operating base; each real location still needs the branch-by-branch validation in this guide.

Compare TableSpark plans

Sources

  1. Google Search Central — Local Business structured data — Google (checked 2026-08-14)
  2. Google Search Central — General structured data guidelines — Google (checked 2026-08-14)
  3. Google Search Central — Canonical URL methods — Google (checked 2026-08-14)
  4. Google Search Central — Build and submit a sitemap — Google (checked 2026-08-14)
  5. Google Search Central — Organisation structured data — Google (checked 2026-08-14)
  6. Schema.org — sameAs — Schema (checked 2026-08-14)
  7. Schema.org — acceptsReservations — Schema (checked 2026-08-14)
  8. Schema.org — menu — Schema (checked 2026-08-14)
  9. TableSpark pricing and plan comparison — TableSpark (checked 2026-08-14)
  10. What is TableSpark? — TableSpark (checked 2026-08-14)
  11. wrong-branch booking-link check — TableSpark (checked 2026-08-14)
  12. restaurant schema validation checklist — TableSpark (checked 2026-08-14)
  13. Rich Results Test — Google (checked 2026-08-14)