Cookies & analytics

    We use cookies for analytics and to serve ads. Accept to enable Google Analytics and AdSense. You can decline to stay opt-out.

    SwiftSchema Logo

    SwiftSchema

    Intuitive Schema Generation at Your Fingertips

    AboutLearnContact
      Stack

      Multi-Location Local Stack

      HQ + branch pages with organization identity, local locations, reviews, FAQs, and breadcrumb context.

      Open generatorValidate in Rich Results Test

      When to use this stack

      • Company pages listing multiple local branches
      • HQ pages that need org identity plus location context
      • Pages where FAQs cover service areas, hours, and contact

      What's included

      Required properties (stack union)

      Ensure every applicable required property is present in your implementation. Nested props reference their parent objects (for example, `offers.priceCurrency`).

      address.addressCountry
      address.addressLocality
      address.addressRegion
      address.streetAddress
      author.name
      itemListElement[].name
      itemReviewed.@id
      logo
      mainEntity[].@type=Question
      mainEntity[].acceptedAnswer.text
      name
      reviewBody
      reviewRating.ratingValue
      telephone
      url

      Recommended properties (stack union)

      contactPoint.contactType
      contactPoint.telephone
      datePublished
      geo.latitude
      geo.longitude
      image
      itemListElement[].item
      mainEntity[].acceptedAnswer.text
      mainEntity[].author.name
      mainEntity[].name
      name
      openingHours
      priceRange
      reviewRating.bestRating
      sameAs[]

      Combined JSON-LD

      Paste as a single script tag. Keep product details, offer data, shipping/returns, and FAQ answers in sync with the page.

      Validate
      [
        {
          "@context": "https://schema.org",
          "@type": "Organization",
          "@id": "https://www.example.com/#org",
          "name": "BrightCare Clinics",
          "url": "https://www.example.com",
          "logo": "https://www.example.com/images/logo-120x60.png",
          "sameAs": [
            "https://www.facebook.com/brightcare",
            "https://www.linkedin.com/company/brightcare"
          ]
        },
        {
          "@context": "https://schema.org",
          "@type": "LocalBusiness",
          "@id": "https://www.example.com/locations/downtown#location",
          "name": "BrightCare Clinic — Downtown",
          "url": "https://www.example.com/locations/downtown",
          "telephone": "+1-512-555-0101",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "500 Main St",
            "addressLocality": "Austin",
            "addressRegion": "TX",
            "postalCode": "78701",
            "addressCountry": "US"
          },
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 30.2672,
            "longitude": -97.7431
          },
          "openingHours": "Mo-Fr 08:00-18:00",
          "priceRange": "$$"
        },
        {
          "@context": "https://schema.org",
          "@type": "Review",
          "@id": "https://www.example.com/reviews/brightcare-1#review",
          "name": "Great experience at the downtown clinic",
          "reviewBody": "Friendly staff and quick check-in. Doctor was thorough and answered all questions.",
          "datePublished": "2026-02-19",
          "reviewRating": {
            "@type": "Rating",
            "ratingValue": 5,
            "bestRating": 5
          },
          "author": { "@type": "Person", "name": "Pat R." },
          "itemReviewed": { "@id": "https://www.example.com/locations/downtown#location" }
        },
        {
          "@context": "https://schema.org",
          "@type": "FAQPage",
          "mainEntity": [
            {
              "@type": "Question",
              "name": "Do all locations offer the same services?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Most services are available at every clinic. Check each location page for specific offerings."
              }
            },
            {
              "@type": "Question",
              "name": "Can I book online?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes. Book through each location page; phone scheduling is also available."
              }
            }
          ]
        },
        {
          "@context": "https://schema.org",
          "@type": "BreadcrumbList",
          "itemListElement": [
            { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" },
            { "@type": "ListItem", "position": 2, "name": "Locations", "item": "https://www.example.com/locations" },
            { "@type": "ListItem", "position": 3, "name": "Downtown", "item": "https://www.example.com/locations/downtown" }
          ]
        }
      ]

      Implementation steps

      1. Start from your live product detail page content; ensure titles, prices, and availability match the page.
      2. Embed one JSON-LD script in the head or just before the closing body tag using the combined example as a template.
      3. Fill shipping details for each region you serve and keep them aligned with on-page shipping tables.
      4. Attach your canonical MerchantReturnPolicy URL and keep the policy text in sync with Merchant Center.
      5. Add 3–6 FAQs that address purchase blockers (shipping, returns, compatibility) and keep answers consistent with visible content.
      6. Validate in the Rich Results Test and revalidate after price/availability/policy changes.

      Common errors and fixes

      FAQs

      Should I add multiple LocalBusiness objects?

      Yes if you list multiple locations on one page. Ensure each has unique @id/URL and correct NAP.

      Do I need Organization for every location page?

      Include the Organization for brand identity; each location gets its own LocalBusiness entry.

      References