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

      Virtual Tour Stack

      Virtual tour pages with TouristTrip + VideoObject context, FAQs, and breadcrumb navigation.

      Open generatorValidate in Rich Results Test

      When to use this stack

      • Virtual destination or attraction tours with narrated video
      • Property or campus tours with a stop-by-stop itinerary
      • Pages where FAQs clarify access, duration, and viewing requirements

      What's included

      • Tourist Trip
        Open generator

        Describes the tour itinerary, stops, and provider.

      • Video Object
        Open generator

        Represents the virtual tour video asset.

      • Frequently Asked Questions
        Open generator

        Answers access, device, and runtime questions.

      • Breadcrumb
        Open generator

        Provides navigation context for the virtual tour page.

      Required properties (stack union)

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

      contentUrl
      description
      itemListElement[].name
      itinerary.itemListElement[].item.name
      mainEntity[].@type=Question
      mainEntity[].acceptedAnswer.text
      name
      thumbnailUrl
      uploadDate
      url

      Recommended properties (stack union)

      duration
      embedUrl
      itemListElement[].item
      itinerary.itemListElement[].item.url
      mainEntity[].acceptedAnswer.text
      mainEntity[].author.name
      mainEntity[].name
      offers.url
      provider.name
      publisher.name
      touristType

      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": "TouristTrip",
          "@id": "https://www.example.com/tours/old-town#trip",
          "name": "Old Town Virtual Walking Tour",
          "description": "A 360-degree walking tour through historic Old Town with narrated stops.",
          "url": "https://www.example.com/tours/old-town",
          "touristType": "Walking tour",
          "provider": { "@type": "Organization", "name": "Heritage City Tourism" },
          "itinerary": {
            "@type": "ItemList",
            "itemListElement": [
              {
                "@type": "ListItem",
                "position": 1,
                "item": {
                  "@type": "TouristAttraction",
                  "name": "Clocktower Plaza",
                  "url": "https://www.example.com/tours/old-town#clocktower"
                }
              },
              {
                "@type": "ListItem",
                "position": 2,
                "item": {
                  "@type": "TouristAttraction",
                  "name": "River Market",
                  "url": "https://www.example.com/tours/old-town#market"
                }
              },
              {
                "@type": "ListItem",
                "position": 3,
                "item": {
                  "@type": "TouristAttraction",
                  "name": "Founders Park",
                  "url": "https://www.example.com/tours/old-town#park"
                }
              }
            ]
          }
        },
        {
          "@context": "https://schema.org",
          "@type": "VideoObject",
          "@id": "https://www.example.com/tours/old-town#video",
          "name": "Old Town Virtual Walking Tour Video",
          "description": "Six-minute 360-degree virtual tour with historical commentary.",
          "thumbnailUrl": "https://www.example.com/images/old-town-tour-thumbnail.webp",
          "uploadDate": "2025-03-12",
          "contentUrl": "https://www.example.com/videos/old-town-tour.mp4",
          "embedUrl": "https://www.example.com/tours/old-town#video",
          "duration": "PT6M30S",
          "publisher": { "@type": "Organization", "name": "Heritage City Tourism" }
        },
        {
          "@context": "https://schema.org",
          "@type": "FAQPage",
          "mainEntity": [
            {
              "@type": "Question",
              "name": "Do I need a VR headset?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "No. The tour works in any modern browser, and VR is optional."
              }
            },
            {
              "@type": "Question",
              "name": "How long is the virtual tour?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "The main tour video is about 6 minutes, plus extra stop-by-stop clips."
              }
            },
            {
              "@type": "Question",
              "name": "Is the tour free to access?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes. The tour is free to view; optional donations are listed on the page."
              }
            }
          ]
        },
        {
          "@context": "https://schema.org",
          "@type": "BreadcrumbList",
          "itemListElement": [
            { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" },
            { "@type": "ListItem", "position": 2, "name": "Tours", "item": "https://www.example.com/tours" },
            { "@type": "ListItem", "position": 3, "name": "Old Town Virtual Tour", "item": "https://www.example.com/tours/old-town" }
          ]
        }
      ]

      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 the VideoObject match the on-page player?

      Yes. The video URL, thumbnail, and duration should reflect the primary tour video embedded on the page.

      How do I represent multiple tour versions?

      Add separate TouristTrip entries or separate pages for each version (day/night, seasonal, or language).

      References