Skip to content Skip to sidebar Skip to footer
Sherpera
  • Home
  • *Unforgettable*
  • UHX Igniters
    • UHX Guest-Centric AI
    • UHX Team-Centric AI
    • UHX Agentic Commerce
    • UHX Visibility
  • Expertise
  • Thinking
  • Work
Book AppointmentLet's Talk
Sherpera
Sherpera
Sherpera Close
  • Home
  • Unforgettable Mobile
  • UHX Igniters
    • UHX Visibility
  • Thinking
  • Work
linkedinx-twitter-brands-solid-fullfacebookinstagram
Have a Project?
info@website.com
Want to Work with Me?
Send Brief
Want to Buy Illustrations?
Go to Shop
AI Visibility

Implementing Schema.org for Luxury Resorts: The Complete Technical Guide

LinkedinFacebookWhatsappRedditShare-emailCopy URL to clipboard

Your property has world-class amenities, Michelin-starred dining, and exceptional service. But when AI engines search for luxury resorts, they can’t find you.

The problem isn’t your content. It’s how your content is structured.

AI engines like ChatGPT, Claude, and Perplexity often use machine-readable data in specific formats. Schema.org provides the vocabulary. JSON-LD provides the format. Together, they make your property discoverable, understandable, and recommendable to AI.

This guide shows you exactly how to implement schema.org markup for luxury hospitality properties.

Why Schema.org Matters for AI Discoverability

Traditional web content is written for humans. Paragraphs describe your spa. Photos show your accommodations. Reviews praise your service.

AI engines can process this content, but they can’t trust it. Is that “luxury spa” actually a spa? Does “ocean view” mean beachfront or distant glimpse? Are those reviews verified?

Schema.org solves this by providing explicit, structured information in standardized vocabulary that machines understand and trust.

What schema.org does:

  • Identifies what things ARE (this is a resort, this is a restaurant, this is a review)
  • Describes attributes explicitly (5-star rating, 250 rooms, oceanfront location)
  • Establishes relationships (this restaurant is part of this resort)
  • Provides proof signals (verified reviews, awards, certifications)

When you implement schema.org properly, AI engines don’t guess about your property. They know.

The Core Schema Types for Luxury Resorts

Schema.org offers hundreds of types. Multi-property luxury resort groups need to focus on nine core schemas that work together, starting with the parent organization.

1. Organization Schema

The foundation for multi-property resort groups. This represents your parent company or brand, with individual properties linking back to it.

Essential properties:

  • @type: Organization
  • @id: Unique identifier (typically your homepage URL)
  • name: Company/brand name
  • description: Brand description
  • url: Company website
  • logo: Brand logo as ImageObject
  • sameAs: Social media profiles (array)

Recommended properties:

  • foundingDate: When company was founded
  • numberOfEmployees: Company size
  • address: Corporate headquarters address
  • contactPoint: Customer service contact information
  • award: Brand-level awards and recognition

Example for multi-property resort group:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://www.grandviewresorts.com",
  "name": "Grandview Luxury Resorts",
  "description": "A collection of luxury oceanfront resorts offering world-class hospitality, dining, and wellness experiences across premier destinations.",
  "url": "https://www.grandviewresorts.com",
  "logo": {
    "@type": "ImageObject",
    "contentUrl": "https://www.grandviewresorts.com/images/logo.png",
    "width": 400,
    "height": 100
  },
  "foundingDate": "1985",
  "sameAs": [
    "https://www.facebook.com/grandviewresorts",
    "https://www.instagram.com/grandviewresorts",
    "https://www.linkedin.com/company/grandviewresorts"
  ],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "500 Executive Plaza",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94104",
    "addressCountry": "US"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1-800-555-0100",
    "contactType": "customer service",
    "availableLanguage": ["English", "Spanish", "French"]
  }
}

Why this matters for multi-property groups:

Each individual resort property will reference this Organization using parentOrganization, creating a clear brand hierarchy that AI engines understand. This helps with brand recognition and ensures all properties benefit from brand-level authority and awards.

2. Resort Schema

Individual property markup. Each resort in your portfolio gets its own schema, always linked to the parent Organization.

Essential properties:

  • @type: Resort
  • @id: Stable URL identifier for this specific property
  • name: Property name
  • description: Property description
  • address: Full postal address
  • telephone: Property contact number
  • url: Property website
  • parentOrganization: Link to parent Organization (critical for multi-property groups)

Recommended properties:

  • image: Property photos as ImageObject array
  • logo: Property logo as ImageObject
  • sameAs: Social media and authoritative profiles
  • geo: Geographic coordinates
  • hasMap: Link to map
  • priceRange: Indicative pricing (e.g., “$$$”)
  • starRating: Official star rating
  • numberOfRooms: Total room count
  • amenityFeature: Simple property features (WiFi, pool, parking, etc.)
  • containsPlace: Major venues with their own entities (restaurants, spas, golf courses, rooms)
  • checkinTime: Standard check-in time
  • checkoutTime: Standard check-out time
  • petsAllowed: Pet policy
  • smokingAllowed: Smoking policy
  • availableLanguage: Languages spoken at property
  • paymentAccepted: Payment methods
  • currenciesAccepted: Accepted currencies
  • contactPoint: Array of contact points for different departments

Important distinction:

  • Use amenityFeature for simple features that don’t have their own entities (WiFi, pool, fitness center, parking)
  • Use containsPlace for major venues that have their own full schema markup (restaurants, spas, golf courses)
  • Don’t list the same venue in both places

Example structure with all recommended properties:

{
  "@context": "https://schema.org",
  "@type": "Resort",
  "@id": "https://www.grandviewresorts.com/carmel",
  "name": "Grandview Resort Carmel",
  "description": "Luxury oceanfront resort in Carmel offering world-class dining, spa services, and championship golf with stunning Pacific Ocean views.",
  "url": "https://www.grandviewresorts.com/carmel",
  "sameAs": [
    "https://www.facebook.com/grandviewcarmel",
    "https://www.instagram.com/grandviewcarmel",
    "https://maps.google.com/?cid=1234567890"
  ],
  "image": [
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/property-aerial.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "Aerial view of Grandview Resort Carmel oceanfront property"
    },
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/lobby.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "Grand lobby with ocean views"
    }
  ],
  "logo": {
    "@type": "ImageObject",
    "contentUrl": "https://www.grandviewresorts.com/images/carmel-logo.png",
    "width": 400,
    "height": 100
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "36.5553",
    "longitude": "-121.9233"
  },
  "hasMap": "https://www.google.com/maps/place/Carmel-by-the-Sea,+CA",
  "parentOrganization": {
    "@id": "https://www.grandviewresorts.com"
  },
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Coastal Highway",
    "addressLocality": "Carmel",
    "addressRegion": "CA",
    "postalCode": "93923",
    "addressCountry": "US"
  },
  "telephone": "+1-831-555-0100",
  "numberOfRooms": 250,
  "priceRange": "$$$",
  "starRating": {
    "@type": "Rating",
    "ratingValue": "5"
  },
  "checkinTime": "16:00",
  "checkoutTime": "11:00",
  "petsAllowed": true,
  "smokingAllowed": false,
  "paymentAccepted": ["Cash", "Credit Card", "Debit Card"],
  "currenciesAccepted": "USD",
  "availableLanguage": ["English", "Spanish", "French"],
  "contactPoint": [
    {
      "@type": "ContactPoint",
      "contactType": "reservations",
      "telephone": "+1-831-555-0100",
      "email": "reservations@grandviewcarmel.com",
      "availableLanguage": ["English", "Spanish", "French"]
    },
    {
      "@type": "ContactPoint",
      "contactType": "weddings",
      "telephone": "+1-831-555-0125",
      "email": "weddings@grandviewcarmel.com",
      "availableLanguage": ["English", "Spanish"]
    },
    {
      "@type": "ContactPoint",
      "contactType": "spa",
      "telephone": "+1-831-555-0150",
      "email": "spa@grandviewcarmel.com",
      "availableLanguage": ["English", "Spanish", "French"]
    },
    {
      "@type": "ContactPoint",
      "contactType": "golf",
      "telephone": "+1-831-555-0175",
      "email": "golf@grandviewcarmel.com",
      "availableLanguage": ["English"]
    }
  ],
  "amenityFeature": [
    {
      "@type": "LocationFeatureSpecification",
      "name": "Swimming Pool",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Beach Access",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Fitness Center",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Free WiFi",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Valet Parking",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Concierge Service",
      "value": true
    }
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "1247",
    "bestRating": "5",
    "worstRating": "1"
  },
  "containsPlace": [
    {"@id": "https://www.grandviewresorts.com/carmel/rooms/ocean-view-suite"},
    {"@id": "https://www.grandviewresorts.com/carmel/rooms/deluxe-king"},
    {"@id": "https://www.grandviewresorts.com/carmel/dining/coastal-kitchen"},
    {"@id": "https://www.grandviewresorts.com/carmel/spa"},
    {"@id": "https://www.grandviewresorts.com/carmel/golf"}
  ]
}

Why these additional properties matter for AI engines:

  • @id: Provides stable identifier for entity relationships across your schema graph
  • sameAs: Links to authoritative profiles (Wikipedia, social media, Google Business) that AI engines already trust
  • image as ImageObject: Provides width, height, and caption so AI engines can select appropriate images and understand their content
  • geo + hasMap: Enables location-based queries and map integration in AI responses
  • contactPoint array: Lets AI engines provide specific contact information for different departments (weddings, spa, golf)
  • paymentAccepted & currenciesAccepted: Answers common transactional questions
  • logo as ImageObject: Provides proper brand imagery with dimensions

Critical for multi-property groups:

The parentOrganization property creates the relationship between your individual properties and your brand. The containsPlace array lists all venues, rooms, and facilities contained within the resort, creating bidirectional relationships with their containedInPlace properties.

This bidirectional approach enables:

  • Brand-level authority flowing to individual properties
  • Clear organizational structure for AI engines
  • Complete property hierarchy understanding
  • Consolidated brand presence across all properties
  • Shared awards and recognition at brand level
  • AI engines understanding the full scope of what each property contains

3. HotelRoom Schema

For individual accommodations. Critical for properties wanting to show up in room-specific searches and enable transactional markup.

Essential properties:

  • @type: ["HotelRoom", "Product"] (Multi-Typed Entity pattern)
  • @id: Stable URL identifier for this room type
  • name: Room type name
  • description: Room description
  • occupancy: Guest capacity
  • bed: Bed configuration
  • floorSize: Room size with proper unit code
  • amenityFeature: Room-specific amenities
  • offers: Pricing and availability
  • containedInPlace: Reference to parent resort

Recommended properties:

  • image: Array of ImageObject showing the room
  • identifier: Internal ID for PMS mapping
  • sku: SKU for inventory systems
  • additionalProperty: Internal facets safe to expose publicly

Example with complete properties:

{
  "@context": "https://schema.org",
  "@type": ["HotelRoom", "Product"],
  "@id": "https://www.grandviewresorts.com/carmel/rooms/ocean-view-suite",
  "name": "Ocean View Suite",
  "identifier": "OVS-001",
  "sku": "CARMEL-OVS",
  "description": "Luxurious 850 sq ft suite with panoramic ocean views, separate living area, and private balcony",
  "image": [
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/rooms/ocean-view-suite-living.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "Ocean View Suite living area with floor-to-ceiling windows"
    },
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/rooms/ocean-view-suite-bedroom.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "King bedroom with ocean views and private balcony"
    },
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/rooms/ocean-view-suite-bathroom.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "Spa-inspired marble bathroom with soaking tub"
    }
  ],
  "occupancy": {
    "@type": "QuantitativeValue",
    "maxValue": "4",
    "unitText": "persons"
  },
  "bed": {
    "@type": "BedDetails",
    "numberOfBeds": "1",
    "typeOfBed": "King"
  },
  "floorSize": {
    "@type": "QuantitativeValue",
    "value": "850",
    "unitCode": "FTK"
  },
  "additionalProperty": [
    {
      "@type": "PropertyValue",
      "name": "View Type",
      "value": "Ocean Front"
    },
    {
      "@type": "PropertyValue",
      "name": "Building",
      "value": "Main Tower"
    },
    {
      "@type": "PropertyValue",
      "name": "Floor Level",
      "value": "High Floor"
    },
    {
      "@type": "PropertyValue",
      "name": "Accessible",
      "value": false
    }
  ],
  "amenityFeature": [
    {
      "@type": "LocationFeatureSpecification",
      "name": "Ocean View",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Private Balcony",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Separate Living Area",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Soaking Tub",
      "value": true
    }
  ],
  "offers": {
    "@type": "Offer",
    "price": "650",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://www.grandviewresorts.com/carmel/rooms/ocean-view-suite/book"
  },
  "containedInPlace": {
    "@id": "https://www.grandviewresorts.com/carmel"
  }
}

Technical notes:

HotelRoom Multi-Typed Entity (MTE) Pattern:
Schema.org’s documentation shows that when you want to place offers on a HotelRoom, you should declare it as both HotelRoom and Product using the Multi-Typed Entity pattern: "@type": ["HotelRoom", "Product"]. This is the standard approach for transactional markup on accommodations. Alternatively, you can publish a separate Offer entity with itemOffered pointing to the HotelRoom (without multi-typing the room).

Floor Size Unit Code:
unitCode: "FTK" is the UN/CEFACT Common Code for square feet. Using unitCode instead of unitText with the proper standardized code is the recommended approach. See the UN/CEFACT code list for other unit codes (e.g., “MTK” for square meters).

Identifier and SKU:
The identifier and sku properties help map schema entities to your PMS or channel manager for inventory management and availability tracking.

Additional Property:
additionalProperty as PropertyValue lets you include internal facets (view codes, building names, floor levels, accessibility features) that are useful for operations and guest selection but safe to expose publicly.

4. Restaurant Schema

For each dining venue at your property. This is critical for properties with notable restaurants.

Essential properties:

  • @type: Restaurant
  • @id: Stable URL identifier
  • name: Restaurant name
  • servesCuisine: Cuisine type (array)
  • priceRange: Price indicator
  • hasMenu: Link to menu (or Menu schema)
  • acceptsReservations: Boolean
  • containedInPlace: Reference to parent resort

Recommended properties:

  • image: Array of ImageObject
  • sameAs: Authoritative profiles
  • potentialAction: ReserveAction for booking
  • openingHoursSpecification: Operating hours
  • award: Awards and recognition
  • aggregateRating: Review ratings

For Michelin or award-winning restaurants:

{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "@id": "https://www.grandviewresorts.com/carmel/dining/coastal-kitchen",
  "name": "Coastal Kitchen",
  "description": "Michelin-starred oceanfront restaurant featuring contemporary American cuisine and the finest local seafood",
  "url": "https://www.grandviewresorts.com/carmel/dining/coastal-kitchen",
  "servesCuisine": ["Contemporary American", "Seafood", "California Cuisine"],
  "priceRange": "$$$$",
  "acceptsReservations": true,
  "hasMenu": "https://www.grandviewresorts.com/carmel/dining/coastal-kitchen/menu",
  "image": [
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/coastal-kitchen-dining.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "Ocean-view dining room at Coastal Kitchen"
    },
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/coastal-kitchen-dish.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "Signature seared scallops with citrus beurre blanc"
    }
  ],
  "sameAs": [
    "https://www.instagram.com/coastalkitchencarmel",
    "https://guide.michelin.com/us/coastal-kitchen-carmel"
  ],
  "potentialAction": {
    "@type": "ReserveAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "https://www.grandviewresorts.com/carmel/dining/coastal-kitchen/reserve",
      "actionPlatform": [
        "http://schema.org/DesktopWebPlatform",
        "http://schema.org/MobileWebPlatform"
      ]
    },
    "result": {
      "@type": "Reservation",
      "name": "Dining Reservation"
    }
  },
  "award": [
    "Michelin One Star",
    "James Beard Award Semifinalist"
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "324"
  },
  "containedInPlace": {
    "@id": "https://www.grandviewresorts.com/carmel"
  }
}

Why ReserveAction matters:
The potentialAction with ReserveAction tells AI engines where and how guests can make reservations. This enables conversational booking recommendations and direct deep-linking to your reservation system from AI-powered assistants.

5. DaySpa Schema

For spa and wellness facilities at your property. Critical for properties with destination spas or award-winning wellness programs.

Essential properties:

  • @type: DaySpa (or HealthAndBeautyBusiness)
  • @id: Stable URL identifier
  • name: Spa name
  • description: Spa description and services
  • priceRange: Indicative pricing
  • amenityFeature: Spa amenities and services
  • openingHoursSpecification: Operating hours with DayOfWeek IRIs
  • containedInPlace: Link to parent resort

Recommended properties:

  • image: Array of ImageObject
  • hasOfferCatalog: Treatment menu with pricing
  • availableLanguage: Languages spoken
  • award: Awards and recognition
  • aggregateRating: Review ratings

For award-winning spas:

{
  "@context": "https://schema.org",
  "@type": "DaySpa",
  "@id": "https://www.grandviewresorts.com/carmel/spa",
  "name": "The Serenity Spa",
  "description": "20,000 sq ft destination spa featuring signature treatments, thermal circuit, and ocean-view relaxation areas",
  "url": "https://www.grandviewresorts.com/carmel/spa",
  "priceRange": "$$$$",
  "image": [
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/spa-relaxation-room.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "Ocean-view relaxation lounge"
    },
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/spa-treatment-room.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "Private treatment suite with ocean views"
    }
  ],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Coastal Highway",
    "addressLocality": "Carmel",
    "addressRegion": "CA",
    "postalCode": "93923",
    "addressCountry": "US"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "https://schema.org/Monday",
        "https://schema.org/Tuesday",
        "https://schema.org/Wednesday",
        "https://schema.org/Thursday",
        "https://schema.org/Friday",
        "https://schema.org/Saturday",
        "https://schema.org/Sunday"
      ],
      "opens": "08:00",
      "closes": "20:00"
    }
  ],
  "telephone": "+1-831-555-0150",
  "availableLanguage": ["English", "Spanish", "French"],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Spa Treatment Menu",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Signature Ocean Stone Massage",
          "description": "90-minute hot stone massage using locally sourced ocean stones"
        },
        "price": "295",
        "priceCurrency": "USD"
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Serenity Facial",
          "description": "60-minute customized facial treatment"
        },
        "price": "225",
        "priceCurrency": "USD"
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Couples Massage",
          "description": "90-minute massage for two in private suite"
        },
        "price": "550",
        "priceCurrency": "USD"
      }
    ]
  },
  "amenityFeature": [
    {
      "@type": "LocationFeatureSpecification",
      "name": "Massage Services",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Facial Treatments",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Thermal Circuit",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Couples Suites",
      "value": true
    }
  ],
  "award": [
    "Forbes Five-Star Spa",
    "Conde Nast Best Destination Spa"
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.9",
    "reviewCount": "567"
  },
  "containedInPlace": {
    "@id": "https://www.grandviewresorts.com/carmel"
  }
}

Why hasOfferCatalog matters:
When you explicitly structure your treatment menu as Services within an OfferCatalog, AI engines can answer specific pricing questions (“How much is a massage at Grandview Spa?”) and recommend specific treatments conversationally.

6. GolfCourse Schema

For properties with golf facilities. Essential for golf resort properties and luxury resorts with championship courses.

Essential properties:

  • @type: GolfCourse (or SportsActivityLocation)
  • @id: Stable URL identifier
  • name: Course name
  • description: Course details and designer
  • address: Course location
  • telephone: Course contact
  • url: Course website
  • amenityFeature: Course features and facilities
  • containedInPlace: Reference to parent resort

Recommended properties:

  • image: Array of ImageObject
  • sameAs: Authoritative profiles
  • openingHoursSpecification: Operating hours with DayOfWeek IRIs
  • offers: Tee time pricing
  • award: Awards and recognition

For championship courses:

{
  "@context": "https://schema.org",
  "@type": "GolfCourse",
  "@id": "https://www.grandviewresorts.com/carmel/golf",
  "name": "Oceanview Championship Course",
  "description": "Award-winning 18-hole championship course designed by Jack Nicklaus, featuring dramatic ocean views and challenging coastal terrain",
  "url": "https://www.grandviewresorts.com/carmel/golf",
  "image": [
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/golf-signature-hole.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "Signature 7th hole with ocean views"
    },
    {
      "@type": "ImageObject",
      "contentUrl": "https://www.grandviewresorts.com/images/golf-clubhouse.jpg",
      "width": 2000,
      "height": 1333,
      "caption": "Oceanview clubhouse and pro shop"
    }
  ],
  "sameAs": [
    "https://www.instagram.com/oceanviewgolfcarmel",
    "https://www.golfdigest.com/courses/oceanview-championship"
  ],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Coastal Highway",
    "addressLocality": "Carmel",
    "addressRegion": "CA",
    "postalCode": "93923",
    "addressCountry": "US"
  },
  "telephone": "+1-831-555-0175",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "https://schema.org/Monday",
        "https://schema.org/Tuesday",
        "https://schema.org/Wednesday",
        "https://schema.org/Thursday",
        "https://schema.org/Friday",
        "https://schema.org/Saturday",
        "https://schema.org/Sunday"
      ],
      "opens": "06:00",
      "closes": "19:00"
    }
  ],
  "amenityFeature": [
    {
      "@type": "LocationFeatureSpecification",
      "name": "Number of Holes",
      "value": "18"
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Par",
      "value": "72"
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Yardage",
      "value": "7200"
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Driving Range",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Putting Green",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Caddie Service",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Club Rental",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "GPS Carts",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Pro Shop",
      "value": true
    }
  ],
  "offers": {
    "@type": "Offer",
    "name": "Tee Time",
    "description": "Championship course tee time with cart",
    "price": "295",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://www.grandviewresorts.com/carmel/golf/tee-times"
  },
  "award": [
    "Golf Digest Top 100 Courses",
    "Golf Magazine Top Courses You Can Play"
  ],
  "containedInPlace": {
    "@id": "https://www.grandviewresorts.com/carmel"
  }
}

For golf tournaments, use SportsEvent:

{
  "@context": "https://schema.org",
  "@type": "SportsEvent",
  "@id": "https://www.grandviewresorts.com/carmel/golf/tournaments/summer-invitational-2024",
  "name": "Oceanview Summer Invitational",
  "description": "Annual championship tournament featuring top amateur golfers",
  "startDate": "2024-07-15T07:00:00-07:00",
  "endDate": "2024-07-17T18:00:00-07:00",
  "location": {
    "@id": "https://www.grandviewresorts.com/carmel/golf"
  },
  "sport": "Golf",
  "competitor": [
    {
      "@type": "Person",
      "name": "Tournament Field"
    }
  ],
  "offers": {
    "@type": "Offer",
    "name": "Tournament Entry",
    "price": "450",
    "priceCurrency": "USD",
    "url": "https://www.grandviewresorts.com/carmel/golf/tournaments/summer-invitational-2024/register"
  }
}

7. Event Schema

For activities, classes, and experiences offered at your property.

Essential properties:

  • @type: Event (or specific subtypes like SportsEvent, MusicEvent, Festival)
  • name: Event name
  • description: Event description
  • startDate: Start date and time
  • endDate: End date and time (if applicable)
  • location: Event location
  • offers: Pricing and availability

Example for resort activity:

{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Sunset Yoga on the Beach",
  "description": "Guided vinyasa flow yoga class on the beach, suitable for all levels",
  "startDate": "2024-03-15T18:00:00-08:00",
  "endDate": "2024-03-15T19:00:00-08:00",
  "location": {
    "@type": "Place",
    "name": "North Beach",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "123 Coastal Highway",
      "addressLocality": "Carmel",
      "addressRegion": "CA",
      "postalCode": "93923",
      "addressCountry": "US"
    }
  },
  "offers": {
    "@type": "Offer",
    "price": "25",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://www.grandviewresorts.com/carmel/activities/sunset-yoga"
  },
  "organizer": {
    "@id": "https://www.grandviewresorts.com/carmel"
  }
}

8. Review Schema

For guest reviews and ratings. Critical for establishing trust and proof signals.

Essential properties:

  • @type: Review
  • author: Reviewer information
  • reviewRating: Star rating
  • reviewBody: Review text
  • datePublished: Review date

Aggregate ratings:

{
  "@type": "Resort",
  "name": "Grandview Resort Carmel",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "1247",
    "bestRating": "5",
    "worstRating": "1"
  }
}

Individual review example:

{
  "@type": "Review",
  "author": {
    "@type": "Person",
    "name": "Sarah M."
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "5",
    "bestRating": "5"
  },
  "reviewBody": "Absolutely stunning property with impeccable service. The spa was world-class and the oceanfront dining exceeded all expectations.",
  "datePublished": "2024-02-15"
}

9. Offer Schema

For packages, specials, and promotional offerings.

Essential properties:

  • @type: Offer
  • name: Offer name
  • description: Offer details
  • price: Price
  • priceCurrency: Currency code
  • availability: Stock status
  • validFrom: Start date
  • validThrough: End date
  • url: Booking URL

Recommended properties:

  • availabilityStarts: Precise start datetime
  • availabilityEnds: Precise end datetime
  • inventoryLevel: Available quantity
  • eligibleCustomerType: Customer segmentation
  • category: Offer categorization

Example package offer:

{
  "@context": "https://schema.org",
  "@type": "Offer",
  "name": "Romance Package",
  "description": "Two nights accommodation in Ocean View Suite, couples spa treatment, champagne and chocolate-covered strawberries, and dinner for two at Coastal Kitchen",
  "price": "1500",
  "priceCurrency": "USD",
  "availability": "https://schema.org/LimitedAvailability",
  "inventoryLevel": {
    "@type": "QuantitativeValue",
    "value": "15"
  },
  "availabilityStarts": "2024-02-01T00:00:00-08:00",
  "availabilityEnds": "2024-04-30T23:59:59-07:00",
  "validFrom": "2024-02-01",
  "validThrough": "2024-04-30",
  "url": "https://www.grandviewresorts.com/carmel/packages/romance/book",
  "eligibleCustomerType": "Public",
  "category": "Romance",
  "itemOffered": {
    "@type": "Product",
    "name": "Romance Package",
    "description": "Includes accommodation, spa treatment, dining, and romantic amenities"
  }
}

Why these properties matter:

  • inventoryLevel: Shows AI engines when availability is limited, creating urgency
  • availabilityStarts/Ends: More precise than validFrom/Through for time-sensitive offers
  • eligibleCustomerType: Lets you segment offers (members vs public, corporate vs leisure)
  • category: Helps AI engines understand offer type for better recommendations

Advanced Implementation Strategies

Once you have basic schema working, these advanced strategies improve AI discoverability.

Multi-Property Group Considerations

For resort groups with multiple properties, strategic schema implementation creates brand-level authority while maintaining property-level distinctiveness.

Centralized Brand Management:

Organization Schema Deployment:

  • Single Organization schema on corporate website
  • Each property references via parentOrganization
  • Consistent brand messaging across all properties
  • Centralized social media and brand assets
  • Shared awards and recognition at brand level

Example structure:

// On corporate site: grandviewresorts.com
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://www.grandviewresorts.com",
  "name": "Grandview Luxury Resorts"
}

// On property site: grandviewresorts.com/carmel
{
  "@context": "https://schema.org",
  "@type": "Resort",
  "@id": "https://www.grandviewresorts.com/carmel",
  "name": "Grandview Resort Carmel",
  "parentOrganization": {
    "@id": "https://www.grandviewresorts.com"
  },
  "containsPlace": [
    {"@id": "https://www.grandviewresorts.com/carmel/rooms/ocean-view-suite"},
    {"@id": "https://www.grandviewresorts.com/carmel/dining/coastal-kitchen"},
    {"@id": "https://www.grandviewresorts.com/carmel/spa"}
  ]
}

// Room entity
{
  "@context": "https://schema.org",
  "@type": ["HotelRoom", "Product"],
  "@id": "https://www.grandviewresorts.com/carmel/rooms/ocean-view-suite",
  "name": "Ocean View Suite",
  "containedInPlace": {
    "@id": "https://www.grandviewresorts.com/carmel"
  }
}

Bidirectional relationships:
The Resort lists venues in containsPlace, and each venue references back with containedInPlace. This bidirectional pattern helps AI engines fully understand your property structure.

Consistency vs. Differentiation:

What should be consistent across properties:

  • Brand-level messaging and positioning
  • Schema structure and property usage
  • Award presentation format
  • Image quality standards
  • Technical implementation patterns

What should be property-specific:

  • Individual property descriptions and unique selling points
  • Property-specific amenities and services
  • Local awards and recognition
  • Geographic and neighborhood context
  • Property-level pricing and availability

Implementation Approaches:

Centralized Management:

  • Schema templates managed at brand level
  • Property teams populate with local data
  • CMS integration ensures consistency
  • Automated validation across all properties
  • Best for: Groups with 5+ properties, strong central IT

Distributed with Guidelines:

  • Brand provides schema standards and examples
  • Properties implement independently
  • Periodic audits ensure compliance
  • Best for: Groups with 2-4 properties, property-level IT autonomy

Hybrid Approach:

  • Organization and brand-level schemas centrally managed
  • Property-specific schemas managed locally within templates
  • Best for: Most multi-property luxury resort groups

Technical Considerations:

URL Structure:

  • Corporate site: grandviewresorts.com (Organization schema)
  • Property pages: grandviewresorts.com/carmel, grandviewresorts.com/napa (Resort schemas)
  • OR property subdomains: carmel.grandviewresorts.com (Resort schemas)
  • Ensure @id values are absolute URLs pointing to canonical pages

Data Synchronization:

  • Brand-level data (Organization) updates propagate to all properties
  • Property-level data (Resort, amenities) updates independently
  • Shared services (spas, restaurants) may have schema on multiple property pages

Measurement and Optimization:

  • Track AI visibility for brand name vs. individual property names
  • Monitor which properties appear for category searches
  • Identify visibility gaps across portfolio
  • Share successful optimizations across properties

Dynamic Data Integration

Pull real-time data into your schema.

What to make dynamic:

  • Availability (in stock, sold out, limited availability)
  • Pricing (current rates, packages, specials)
  • Events (upcoming activities and experiences)
  • Reviews (latest aggregated ratings)

How to implement:

  • API integration between booking system and website
  • Scheduled updates (hourly or daily)
  • Cache management for performance
  • Fallback to static data if dynamic fails

Seasonal and Event-Based Schema

Adjust schema for seasonal offerings and special events.

Examples:

  • Ski season: Emphasize mountain access, ski-in/ski-out, equipment rental
  • Summer: Highlight beach access, water sports, outdoor dining
  • Holiday seasons: Feature special menus, decorations, packages
  • Local events: Wine harvest, festivals, tournaments

Multi-Language Implementation

International luxury properties need schema in multiple languages.

Implementation approach:

  • Use availableLanguage on Hotel/LodgingBusiness for languages spoken at property
  • Use inLanguage on WebPage or CreativeWork for the language of specific content
  • Separate schema for each language version of your website
  • Ensure consistency across languages
  • Test in regional AI engines

Important distinction:

  • availableLanguage = Languages your staff speaks and can serve guests in
  • inLanguage = Language a specific piece of content (webpage, document) is written in

Local Business Optimization

For properties with strong local presence.

Additional schemas to implement:

  • LocalBusiness (broader than Hotel)
  • Organization (corporate structure)
  • Place (geographic and landmark information)
  • TouristAttraction (if applicable)

Measuring Success

Schema implementation should drive measurable outcomes.

Technical Metrics

Track these indicators:

  • Pages with valid schema (percentage)
  • Schema coverage across content types
  • Validation errors resolved
  • Implementation consistency score

Visibility Metrics

AI engine appearance tracking:

  • Query categories where you appear
  • Ranking position in AI recommendations
  • Competitors appearing vs. you
  • Information accuracy in AI responses

Business Metrics

Ultimate measures of success:

  • Direct booking traffic from AI referrals
  • Conversion rate on AI-driven visits
  • Revenue attributed to AI channels
  • Brand search volume (awareness indicator)

Your Implementation Roadmap

Here’s how to approach schema implementation strategically.

Phase 1: Foundation (Week 1-2)

For multi-property groups, implement Organization schema first:

  • Brand/company information on corporate site
  • Logo and brand assets as ImageObject
  • Contact information
  • Social media profiles
  • Brand-level awards

Implement core Resort schema for each property:

  • Property information with all recommended properties
  • Contact details and contactPoint array
  • Geographic coordinates (geo, hasMap)
  • Images as ImageObject arrays
  • Basic amenities
  • Location data
  • Pricing indication
  • parentOrganization link to brand Organization

Validate and test:

  • Run through Schema Markup Validator
  • Fix all errors
  • Deploy to production

Phase 2: Depth (Week 3-4)

Add detailed schemas:

  • Restaurant schema with potentialAction for reservations
  • HotelRoom schema with MTE pattern, proper unitCode, images, identifier
  • DaySpa schema with hasOfferCatalog and proper DayOfWeek IRIs
  • GolfCourse schema with offers and openingHours
  • Activities and events
  • Offer schema for packages with inventoryLevel

Establish relationships:

  • Link each Resort to parent Organization via parentOrganization
  • Connect places with containedInPlace (rooms, restaurants, spas, golf courses within resort)
  • Use containsPlace from resort to contained venues
  • Link related offerings
  • Ensure all entities have explicit @id properties

Phase 3: Proof Signals (Week 5-6)

Implement trust indicators:

  • AggregateRating from multiple sources
  • Award and certification markup
  • Featured reviews
  • Media mentions
  • sameAs links to authoritative profiles

Phase 4: Automation (Week 7-8)

Connect to dynamic data:

  • Availability integration
  • Pricing updates
  • Event calendar
  • Review aggregation

Phase 5: Optimization (Ongoing)

Continuous improvement:

  • Monitor AI engine appearances
  • Test new query patterns
  • Expand schema coverage
  • Update for seasonal offerings
  • Track and refine based on results

When to Get Expert Help

Schema implementation looks straightforward but has complexity that trips up many properties.

You need expert help when:

  • You have multiple properties needing consistency
  • Your CMS doesn’t support structured data well
  • You need dynamic data integration
  • You want to avoid months of trial and error
  • You need to prove ROI quickly
  • You’re unsure about technical patterns like MTE, proper unit codes, or relationship properties

The Visibility Igniter includes complete schema.org implementation as part of the 90-day quick wins, with strategic guidance on what to implement first for maximum AI discoverability.

The Foundation for Everything Else

Schema.org implementation for AI visibility creates the foundation for conversational commerce, personalization, and multi-channel distribution.

When you structure your content properly:

  • AI engines can discover and recommend you
  • Conversational booking becomes possible
  • Content distributes correctly across channels
  • Personalization systems can leverage structured data
  • Future AI platforms can integrate easily

You’re not just improving visibility. You’re building the strategic content architecture that enables modern hospitality technology.

Next Steps

Schema.org implementation is technical work with strategic impact. You can tackle it yourself with this guide, or accelerate with expert guidance.

Ready to make your property discoverable to AI engines?

The Visibility Igniter includes comprehensive schema.org implementation, AI visibility assessment, and 90-day transformation roadmap.

Your content exists. Make sure AI engines can find it.

UHX Visibility
Make your site visible

UHX Visibility Igniter

Learn About the Igniter

FAQs

How long does schema.org implementation take?
Basic implementation takes 1-2 weeks. Complete implementation with all recommended properties, proper ImageObject patterns, correct DayOfWeek IRIs, and dynamic data integration takes 6-8 weeks. The Visibility Igniter delivers foundational schema in 90 days along with broader visibility strategy.
Do I need to hire a developer?
For manual JSON-LD implementation, no. For CMS integration, dynamic data, and ensuring all technical details are correct (proper unit codes, DayOfWeek IRIs, ImageObject patterns), yes. The technical complexity depends on your desired approach and existing infrastructure.
Will schema.org implementation guarantee AI visibility?
No single factor guarantees visibility. Schema.org is necessary but not sufficient. You also need quality content, proof signals, intent alignment, and competitive positioning. The Visibility Igniter addresses all factors strategically.
Which schema.org properties are most important?
For luxury resorts: @id, name, description, address, image (as ImageObject), geo, hasMap, amenityFeature, priceRange, starRating, aggregateRating, award, and proper relationships (containsPlace/containedInPlace). For rooms: the HotelRoom + Product MTE pattern with proper Offer structure, correct unitCode for floorSize, and ImageObject arrays. These provide the core information AI engines need to understand and recommend your property.
How often should I update my schema markup?
Static information (property description, amenities) updates when things change. Dynamic information (availability, pricing, events) should update as frequently as your data allows. Aim for real-time or daily updates for transactional data.
Can I use schema.org plugins instead of manual implementation?
Plugins provide basic markup but rarely achieve the depth and accuracy luxury properties need. They often miss critical technical patterns like the HotelRoom MTE requirement, proper DayOfWeek IRIs, ImageObject implementation, and correct unit codes. Custom implementation typically delivers better AI visibility results.
What is the Multi-Typed Entity (MTE) pattern?
The MTE pattern is Schema.org's standard approach for certain entities (like HotelRoom) that need to be marked as multiple types simultaneously. For rooms with pricing, the typical approach is to declare them as both HotelRoom AND Product: "@type": ["HotelRoom", "Product"], which allows you to place offers directly on the room entity. This enables proper transactional schema that AI engines and booking systems can process. Alternatively, you can publish a separate Offer with itemOffered pointing to the HotelRoom.
Is it important to use enumerations and standardized codes, like UN/CEFACT, rather than strings in JSON-LD?
Yes. Standardized enumerations and codes provide unambiguous, machine-readable data that AI engines can interpret consistently. Examples include using Schema.org IRIs for days of the week (https://schema.org/Monday) and UN/CEFACT codes for measurements (FTK for square feet). Plain text strings can be ambiguous and may not work well internationally, while standard codes ensure consistent interpretation across all systems.
LinkedinFacebookWhatsappRedditShare-emailCopy URL to clipboard
Tags: UHX Visibility
LinkedinFacebookWhatsappRedditShare-emailCopy URL to clipboard

"Thinking" Delivered

Get weekly deliveries of all that Sherpera is sharing.

  • Should be Empty:

You May Also Like

How the Visibility Igniter Makes Your Property Discoverable to AI Engines
AI Visibility
AI Visibility Igniter: Make Your Property Discoverable to AI Engines
Sherpera
Office

United States —
3 Forester Ave, Suite 35
Warwick, NY 10990

team@sherpera.com

(845) 697-1996

Links
  • Home
  • Unforgettable
  • UHX Igniters
  • Expertise
  • Thinking
  • Work
  • Contact Us
Get in Touch
linkedinx-twitter-brands-solid-fullfacebookinstagram

Sherpera Consulting © 2026. All Rights Reserved.

Sherpera
  • Home
  • Unforgettable
  • UHX Igniters
    • UHX Visibility
  • Thinking
  • Work
linkedinx-twitter-brands-solid-fullfacebookinstagram

Book a Consultation

Let's Create "Unforgettable"