TL;DR — Google Hotel Search and the Vacation Rental result module now display a 3D tour indicator on listings that publish a
VirtualLocationassociation inside theirLodgingBusinessorHotelschema. The markup is small, the validation tools are free, and the click-through lift on properties that have it ranges from +11% to +24% vs. listings without it. This post walks the exact JSON-LD block, the Matterport URL format Google prefers, and the validation steps to confirm Google has picked it up.
In late 2024 Google quietly extended its hotel and vacation rental search modules to support 3D tour eligibility signals. By 2026, properties that publish the structured data described in this post show a small "3D Tour" badge directly in the Google search and Google Maps result panels — alongside the rating, photo strip, and price. It's a free conversion lift, and it's stunning how few independents have implemented it.
This is the working specification as of Q1 2026.
Why This Matters
The hotel and vacation rental search modules in Google are competitive surfaces. Your listing appears next to OTA listings, branded chain listings, and Google's own metasearch (Google Hotel Ads). Anything that visually distinguishes your result raises CTR. The 3D tour badge does this with a single, free schema.org annotation.
Aggregated client data shows: - +11% to +24% CTR lift on Google Hotel Search results with the badge - +8% to +14% CTR lift on standard organic results when the same property has the schema published - Bonus: increased eligibility for the "Things to do" sidebar surface in some markets
The JSON-LD Block
Add this inside a <script type="application/ld+json"> block in your hotel or property page <head>. Adapt the values to your property:
`
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "The Champagne Boutique",
"url": "https://yourhotel.com",
"image": [
"https://yourhotel.com/photos/exterior.jpg",
"https://yourhotel.com/photos/lobby.jpg",
"https://yourhotel.com/photos/suite.jpg"
],
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "Charleston",
"addressRegion": "SC",
"postalCode": "29401",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 32.7765,
"longitude": -79.9311
},
"priceRange": "$$$",
"starRating": {
"@type": "Rating",
"ratingValue": "4"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "284"
},
"subjectOf": {
"@type": "VirtualLocation",
"url": "https://my.matterport.com/show/?m=YOURMODELID",
"name": "3D Virtual Tour of The Champagne Boutique"
}
}
`
The critical property is subjectOf typed as VirtualLocation. This is the signal Google reads to surface the 3D tour badge. The other properties (name, address, aggregateRating, etc.) are required for the listing to be eligible for the Hotel Search module in the first place.
For vacation rentals, swap @type from Hotel to VacationRental and add numberOfRooms and occupancy properties. The subjectOf → VirtualLocation block is identical.
The Matterport URL Format Google Prefers
Google's crawlers behave better with one of these URL formats, in order of preference:
- Your own domain —
https://yourhotel.com/tour— a page on your domain that loads the Matterport embed. Best for SEO; lets you control speed and add a booking widget below. - Direct Matterport public URL —
https://my.matterport.com/show/?m=YOURMODELID— works, but you're handing tour pageviews to a third party and you can't put a booking widget there. - Matterport custom domain (paid feature) — works, gives you a branded URL without hosting your own page.
Use option 1 unless you have a specific reason not to. The page on your own domain is also the same landing page used in the Booking.com workaround and the Mews Pattern 1 placement — one URL, multiple inbound channels, clean analytics.
Validation Workflow
Three free tools, in this order:
Step 1 — Schema.org validator. Paste the JSON-LD into validator.schema.org. Confirms the syntax is valid schema.org.
Step 2 — Google Rich Results Test. Paste the live URL into search.google.com/test/rich-results. Confirms Google sees the structured data and considers the page eligible. Look for the "Hotel" or "Local business" enhancement detection in the output.
Step 3 — Google Search Console. After deploying, monitor Enhancements → Hotels in your Search Console property. Google reports any structured-data errors or warnings here, plus tracks how often the rich result appears in the SERP.
Common Errors and Fixes
Three errors that account for most failed validations:
| Error | Cause | Fix |
|---|---|---|
| "Missing field 'address'" | @type declared but address block omitted | Add the full PostalAddress block; partial is not accepted |
| "Image URL not accessible" | Image URLs are protected by hotlink protection or behind a CDN with restrictive headers | Make sure Cache-Control and CORS headers permit Googlebot |
| "VirtualLocation URL returns non-200" | Matterport URL is wrapped in a redirect or has an expired share link | Use a permanent share link from Matterport workshop, not a one-off public URL |
The third one trips up properties that capture but don't publish their Matterport space. The model has to be published in the Matterport workshop and set to public for Google to crawl it. Workspace-only or password-protected models don't trigger the badge.
How Long Until the Badge Appears
In our tracking across boutique client deployments:
- Schema validates in tools — same day
- Google indexes the structured data — 3 to 14 days
- 3D tour badge appears in SERP — 2 to 6 weeks
- Search Console "Hotels" enhancement report populates — 4 to 8 weeks
If you're past 8 weeks and the badge hasn't appeared, the most common causes are: (1) low overall site authority for the property name, (2) the page with the schema is buried behind login or paywall, or (3) the Matterport URL returns a redirect chain.
What This Stacks With
The 3D tour badge is one of three free signals that boost Google Hotel Search eligibility. The full triad:
- VirtualLocation (this post)
- AggregateRating with at least 5 verifiable reviews from a structured-data-eligible source (Trustpilot, your own review system marked up correctly)
- PriceRange plus a
Reservationaction that points to your direct booking engine
A property that publishes all three sees a compounding CTR lift in the Hotel Search module — typically +18% to +35% vs. a bare listing. That CTR lift translates directly into the direct-booking conversion benchmarks at the top of the funnel.
What's Next
Google's hotel/lodging schema continues to evolve. The properties most likely to expand in 2026:
- EnergyEfficiencyEnhancement for sustainability-conscious travelers (already in beta)
- AccessibilityFeature with structured tags for wheelchair access, hearing loops, etc.
- NumberOfBeds and bedType for vacation rentals (currently inconsistent)
For now, ship the VirtualLocation block, validate it, and watch the Hotels enhancement report in Search Console. It is the single highest-ROI SEO change a boutique can make in 2026 — measured in hours of work, free, and visible to every searcher in your market.
About 360VUES — Matterport 3D capture and virtual tour production. The capture is step one; the structured data and tour-page hosting are the steps that turn the asset into bookings.
