Reference
The visitor economy, in schema.
A plain-English reference to every schema.org type glassmark checks for, organised by the kind of business it applies to. Use this document in conversations with operators who are new to the concept. It's designed to be shareable with non-technical readers.
What a schema is, in one paragraph
A schema is a hidden label, like the care label sewn inside a jumper.
When you buy a jumper you can look at it, feel it, and figure out that it's wool. But the little label inside tells you for certain: 100% merino wool, made in Scotland, wash at 30 degrees. The label isn't really there for you. It's there for the washing machine, the shop assistant, the dry cleaner, anyone who needs to handle the jumper without having to guess what it is.
A website schema does exactly the same job. Your website has photos, words, and prices that humans can read perfectly well. A schema is a hidden label you add to the page that spells out, in a format machines can read instantly: "this is a holiday cottage business, we're in St Austell, we take dogs, we cost £800 to £2,400 a week, we have a pool".
The human visitor never sees the label. The AI agent reads it in a fraction of a second and knows exactly what your business is without having to guess. And that last word, guess, is the whole reason this matters. Language models like ChatGPT, Claude, Perplexity, and Gemini are getting smarter week by week, but they're only as accurate as the information they can find. When your business is clearly labelled, the AI reads you instantly and describes you exactly as you'd want to be described. When the information is fragmented, buried in photographs, or locked inside a booking widget the machine can't reach, the AI has no choice but to fall back on guesswork. And guesswork is where the errors creep in: wrong opening hours, wrong prices, missed features, sometimes even the wrong town. That's the moment a traveller says "but the AI told me you were open on Sundays" or "I thought you took dogs". Schema is how you stop the AI from having to guess. It's the difference between being found accurately and being mis-described to the very people who were trying to book with you.
How an AI agent reads your website
Before we get into which schemas to use, it helps to understand how an AI agent actually reads your site. When an agent lands on your page looking for data, it does not sit and scroll. It runs down a ladder of checks, from cheapest to most expensive. The further down that ladder it has to go, the more likely it is to give up and recommend a competitor whose information is easier to read.
Each step down this ladder is roughly an order of magnitude more expensive and more fragile than the one above it. An llms.txt fetch is a few KB of text. JSON-LD parsing is one HTTP request plus a tiny read. Scraping semantic HTML needs selectors that break the moment your theme updates. Rendering JavaScript pulls in a headless browser, burns several seconds per page, and is the first thing agents skip when they are rate-limited or on a budget.
The bottom line. Most visitor economy websites today sit at step five. Moving your site up to step two, with valid JSON-LD in the head of every important page, is the single highest-impact change you can make for AI discoverability. Everything else in this document is a variation on that one idea.
The ladder above is not glassmark's invention. It reflects established web standards and the documented behaviour of AI systems. You can verify each layer for yourself using the references below.
Schema.org. The structured-data vocabulary used in the JSON-LD layer. Founded and backed by Google, Microsoft, Yahoo, and Yandex jointly. Every visitor economy type glassmark checks for (LodgingBusiness, Restaurant, TouristAttraction, and so on) is defined here. See schema.org.
Google's structured data documentation. Google explicitly recommends JSON-LD as the preferred format for structured data and treats it as a primary signal for understanding a page. This is the same layer as step two in the diagram. See developers.google.com/search.
The llms.txt specification. Proposed by Jeremy Howard at Answer.AI in late 2024 and maintained at llmstxt.org. The clearest sign that the standard has weight: Anthropic, the company behind Claude, publishes its own developer documentation in llms.txt format at docs.anthropic.com/llms.txt and docs.anthropic.com/llms-full.txt. When the company building one of the major AI labs uses a standard for its own documentation, that is a meaningful signal of where the industry is heading.
WordLift's Agentic AI Audit. An independent commercial tool that audits websites against the same machine-readability layers shown in the diagram, scoring each layer separately. It is the closest thing to a third-party validation of the same model glassmark uses. See wordlift.io/ai-audit.
One honest caveat. No major AI lab has published a single document saying "our agents read websites in exactly this order". The ladder is a synthesis of the standards above, the way AI search systems are documented to behave, and the practical economics of web data extraction. The cost of each layer rises by roughly an order of magnitude as you move down. You should be sceptical of anyone, glassmark included, who claims more certainty than that. What is verifiable is that JSON-LD is the format Google explicitly recommends, llms.txt is the format Anthropic uses for its own docs, and websites that fail at every layer are demonstrably harder for AI systems to read accurately.
How the schemas fit together
Schemas are organised as a family tree. There are broad parent types like LodgingBusiness and specific child types like BedAndBreakfast that inherit from them. A good website uses the most specific type that fits the business, then layers supporting schemas on top to fill in the details.
For example, a cafe in Padstow might use CafeOrCoffeeShop as its main type, then layer on OpeningHoursSpecification to say when it's open, Menu to describe what it serves, PostalAddress for the location, and AggregateRating for its Google reviews. All of those schemas work together to give the AI agent a complete picture.
This document groups schemas by visitor economy segment, then lists the supporting schemas that can layer on top of any of them.
Accommodation
The parent type is LodgingBusiness. Use the most specific child type that fits. Every accommodation should also include PostalAddress, GeoCoordinates, and Offer schemas for pricing.
The broadest accommodation type. Use this only if none of the more specific types below fit, or as a fallback.
Use when: the business doesn't fit neatly into hotel, B&B, holiday let, campsite, or hostel.
Includes hotels of any size, from a boutique coastal inn to a 500-room chain property. Should carry starRating if star-rated, plus amenity details.
Use when: there's a reception desk, numbered rooms, and guests check in and out.
Specifically for B&Bs and guest houses. Smaller and more personal than a hotel, usually owner-run.
Use when: the business is primarily a B&B or small guest house with breakfast included.
Holiday cottages, apartments for short-term rental, self-catering lodges. Bosinver's individual cottages would each be a VacationRental.
Use when: guests have the whole property to themselves and self-cater.
Typically includes a hotel or lodges plus facilities like pools, restaurants, spa, activities. Think of a golf resort or an all-inclusive country estate.
Use when: the business is more than just a place to sleep and includes significant onsite facilities as part of the experience.
Covers tent pitches, touring caravan pitches, static caravan parks, glamping sites, and yurts. Should declare facilities like electricity, showers, shop, and pets allowed.
Use when: the business offers pitches or static units in an outdoor setting.
Youth hostels, backpacker hostels, bunkhouse accommodation.
Use when: beds are sold per person rather than per room, and facilities are shared.
Less common in the UK but common internationally. Use if the business describes itself as a motel or inn with roadside access.
Use when: the business is explicitly positioned as a motel or roadside inn.
Food and drink
The parent type is FoodEstablishment. Every food and drink business should also carry OpeningHoursSpecification, servesCuisine, and ideally a Menu schema layered on top.
Covers everything from a village bistro to a fine dining destination. Should declare cuisine type, price range, whether bookings are accepted, and menu.
Use when: the primary purpose is serving meals to sit-down customers.
Includes independent coffee shops, tea rooms, and cafes serving light meals. Menu should focus on drinks and light bites rather than full meals.
Use when: the business is primarily about coffee, tea, or casual daytime food.
Traditional pubs, gastropubs, wine bars, cocktail bars. If the business is primarily a pub that also serves food, use this; if it's primarily a restaurant that happens to have a bar, use Restaurant.
Use when: the drinks offer is a core part of the identity of the business.
Takeaways, chip shops, counter-service food businesses where you order at a till.
Use when: customers order at a counter and the food is prepared quickly.
Independent bakeries, pasty shops, patisseries. Can overlap with cafe if the bakery also has seating.
Use when: baking and selling baked goods is the main business.
Independent ice cream parlours, gelaterias, seasonal kiosks.
Use when: ice cream is the core product, not a side offer.
Wineries offering tastings, tours, and onsite purchase. Relevant for vineyards in Cornwall, Devon, Kent, and the growing English wine scene.
Use when: visitors can tour, taste, and buy wine at the place of production.
Craft breweries, microbreweries, brewery taprooms. If the venue primarily sells drinks to walk-in customers, also consider BarOrPub.
Use when: brewing is core to the visitor experience.
Gin distilleries, whisky distilleries, rum producers. Often paired with tours and tastings.
Use when: the distillery itself is a visitor experience.
Attractions
The broadest parent is TouristAttraction. Most specific attractions have their own type, so use the most specific one that fits. Attractions should carry opening hours, admission prices, and accessibility information.
The fallback type for attractions that don't fit the more specific types below. Should almost always be replaced by something more specific if possible.
Use when: nothing more specific applies.
National museums, local history museums, maritime museums, specialist collections. Should declare opening hours, admission charges, and accessibility.
Use when: the attraction is built around curated collections or exhibits.
Tate St Ives would be primarily an ArtGallery (or Museum). Independent commercial galleries also fit here.
Use when: the attraction is primarily about displaying art.
Covers everything from a small family theme park to a major attraction.
Use when: rides and attractions are the main draw.
Self-explanatory, but worth having its own type because of the specific expectations visitors have.
Use when: the attraction's primary focus is marine and freshwater life.
Includes wildlife parks and farm attractions if animals are the primary draw.
Use when: the business is primarily about visitors seeing animals.
National Trust properties, formal gardens, country parks, botanic gardens.
Use when: the attraction is primarily an outdoor green space visitors walk through.
Most beaches won't have their own website, but a DMO or visitor authority listing beaches should mark each one up as a Beach with coordinates, facilities, and dog policy.
Use when: listing individual beaches on a destination or tourism information site.
For heritage attractions like English Heritage and National Trust properties where the building itself is the draw.
Use when: the building or structure is the primary reason people visit.
Many historic churches and cathedrals are significant visitor attractions. Use Church specifically, or PlaceOfWorship as a more general type.
Use when: the place is open to visitors as a religious or heritage attraction.
Activities, sport, and wellness
The parent is SportsActivityLocation for anything active. Wellness businesses use HealthAndBeautyBusiness or its children.
A generic fallback for activity operators that don't have a more specific type. Should declare the activities on offer, booking path, and any required equipment.
Use when: activity operators (surf schools, climbing centres, kayak hire) don't have a more specific type.
Should declare course details like number of holes, green fees, tee-time booking URL, and dress code.
Use when: the business is primarily a golf course, whether members-only or pay and play.
Limited relevance in the UK but included for completeness.
Use when: scoring international visitor economy sites.
For tennis venues offering court hire, lessons, or membership.
Use when: tennis is the primary activity on offer.
Relevant for fitness businesses that also serve visitors (e.g. hotel gyms open to pay-per-use guests).
Use when: the primary offer is fitness facilities.
Independent day spas or spa facilities within hotels. Should list treatments as Service entries.
Use when: spa treatments are the main business.
The parent type for beauty salons, holistic therapy businesses, and wellness retreats.
Use when: the business is wellness-focused but isn't specifically a day spa.
Events
The parent type is Event. Every event should carry startDate, endDate, location, and offers with ticket information.
The fallback type for events that don't fit a more specific category.
Use when: no more specific event type applies.
Food festivals, music festivals, literary festivals, seasonal celebrations. St Ives Food and Drink Festival would use this type.
Use when: the event runs across multiple days with multiple activities.
Single performances or tours. Should link to the performer and venue.
Use when: the event is primarily a music performance.
Professional and amateur theatre productions.
Use when: the event is a staged performance.
Smaller than a festival, typically a single sitting or workshop.
Use when: the event is specifically about food or drink.
Temporary art exhibitions, trade shows, heritage exhibitions.
Use when: the event runs for a fixed window and visitors drop in rather than attend at a set time.
Races, matches, tournaments, sporting championships.
Use when: the event is a scheduled sporting occasion.
Venues
Venue types describe places where events happen. Often paired with Event entries to tell an AI agent both where something is and what's happening there.
The generic fallback for venues that don't fit a more specific type.
Use when: the business primarily hires out space for events.
Concert halls, music pubs with dedicated stages, independent music venues.
Use when: live music is the venue's primary purpose.
Traditional theatres, studio theatres, open-air theatres like the Minack.
Use when: the venue is primarily for theatrical performances.
For the larger end of the venue scale.
Use when: the venue is significant in scale and hosts large events.
Destinations and tourism authorities
These schemas apply to DMOs, tourism associations, and authorities over a place rather than a single bookable business.
Used by DMOs to declare their authority over a named place. St Ives as a destination would be a TouristDestination, with SITA as the Organization publishing information about it.
Use when: the subject is a place or region rather than a single business.
For the TIC itself as a bookable or walk-in service.
Use when: the entity is a physical visitor information centre.
Any business, association, or charity. DMOs typically use Organization for themselves and TouristDestination for the place they represent.
Use when: declaring the publisher of a site, particularly for tourism authorities.
The most generic place type. Used as a building block inside other schemas (a restaurant has a Place as its location, for example).
Use when: marking up sub-areas of a destination (neighbourhoods, districts, bays).
Used inside address or location schemas to name the town or city. Helps AI agents associate a business with a specific place.
Use when: explicitly naming a town or city in structured data.
Supporting schemas
These schemas don't describe a business on their own; they describe pieces of information that layer on top of a business schema. A good accommodation or restaurant entry will use several of these together.
Essential for every business. Should be nested inside the main business schema.
Use when: always, for any business with a physical location.
Complements PostalAddress by giving machines exact coordinates. Critical for appearing in location-based queries.
Use when: always, for any business with a physical location.
Used to declare "reservations phone", "customer service phone", "general email". More structured than just listing a phone number.
Use when: the business has multiple contact points for different purposes.
Should handle regular hours, seasonal variations, and bank holidays. One of the highest-value schemas for visitor economy businesses because opening hours are one of the most common questions travellers ask AI agents.
Use when: always, for any business with visiting hours.
Used to declare pricing, from a simple price range to specific packages with dates. Essential for appearing in "under £X" style queries.
Use when: declaring any specific prices or packages.
Summarises all reviews into a single number and count. Pulls weight in AI recommendations because it's a clean social proof signal.
Use when: the business has a meaningful body of reviews to average.
Individual reviews from guests, customers, or publications. Can be layered alongside AggregateRating to show both the average and standout examples.
Use when: highlighting specific testimonials or press reviews.
Industry awards, tourism body recognition, press awards. Bosinver's Gold Award for Best Self Catering in Cornwall would be marked up here.
Use when: the business has awards or accreditations worth declaring.
Converts an FAQ page into machine-readable question-answer pairs. One of the highest-leverage schemas because AI travel planners directly extract answers from it.
Use when: the business has a dedicated FAQ page.
Breaks a menu down into MenuSection and MenuItem entries. Lets AI agents answer "do they serve vegan food" or "what's on the menu" directly.
Use when: the business is a food and drink venue with a published menu.
Tells machines "here's the URL where reservations can be made". Used instead of or alongside a visible booking widget.
Use when: the business takes bookings, especially if the booking flow is off-domain.
Used to mark up images with context an AI can read. More structured than just placing an image tag on the page.
Use when: key images need context for AI agents to understand what they show.
Used by DMOs to declare "here are our member businesses in this category" as a structured list rather than a visual grid.
Use when: a page presents a ranked or curated list that AI agents should read as a list.
A worked example: a cafe with everything
To make all of this concrete, here's what a fully marked-up independent cafe in Padstow would actually look like in code, and how to add it to the major website platforms. The cafe below is fictional (The Harbour Bean) but every field is realistic, and the code is valid JSON-LD that you could adapt for any real cafe in a few minutes.
The schemas in use
This example combines ten different schema pieces working together. The main type is CafeOrCoffeeShop. Nested inside are PostalAddress, GeoCoordinates, OpeningHoursSpecification (twice, for weekdays and weekends), and AggregateRating. Layered on top are servesCuisine to declare what's served, priceRange for a rough price band, acceptsReservations for whether bookings are taken, and menu pointing at the online menu URL. None of these show up on the visible page. They all sit inside a hidden label in the page's head section.
The hidden label, in full
This is exactly what the code looks like. Copy it, adapt the fields to your own business, and add it to your website using the instructions below.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CafeOrCoffeeShop",
"name": "The Harbour Bean",
"url": "https://theharbourbean.co.uk",
"telephone": "+441841123456",
"email": "hello@theharbourbean.co.uk",
"image": "https://theharbourbean.co.uk/images/front.jpg",
"priceRange": "££",
"servesCuisine": ["Coffee", "Vegan", "Brunch"],
"acceptsReservations": true,
"menu": "https://theharbourbean.co.uk/menu",
"address": {
"@type": "PostalAddress",
"streetAddress": "3 Harbour Front",
"addressLocality": "Padstow",
"addressRegion": "Cornwall",
"postalCode": "PL28 8BY",
"addressCountry": "GB"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 50.5418,
"longitude": -4.9383
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "16:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday", "Sunday"],
"opens": "09:00",
"closes": "17:00"
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "247"
}
}
</script>That whole block goes inside the <head> section of your website. The <head> is the invisible top of every web page where the browser and search engines look for instructions about the page. Humans never see it. Machines always do.
How to add schema to your website
Every major website platform has a way to add custom code to the <head> of your pages. Below are the step-by-step paths for the five most common platforms. All of them are copy-and-paste operations. If you've ever pasted a Google Analytics code or a Facebook pixel into your website settings before, this is exactly the same kind of task.
WordPress doesn't have a single universal way to inject head code, so the easiest approach is to install a free plugin that does it for you.
- In your WordPress dashboard, go to Plugins and click Add New
- Search for "WPCode" (also known as "Insert Headers and Footers" by WPBeginner)
- Click Install Now, then Activate
- Go to Code Snippets > Header & Footer in your sidebar
- Paste the full
<script>...</script>block into the "Header" field - Click Save Changes
Squarespace makes this very straightforward if you're on the Business plan or higher.
- From your Squarespace dashboard, click Settings
- Scroll to Advanced, then click Code Injection
- Paste the full
<script>...</script>block into the Header field - Click Save
For schema that should only apply to one specific page (like a menu schema on your menu page), open that page in the editor, click the gear icon, choose Advanced, and paste into "Page Header Code Injection" instead.
Wix handles custom code through its Marketing Tools section.
- From your Wix dashboard, click Settings in the left sidebar
- Scroll down to Advanced, then click Custom Code
- Click the "+ Add Custom Code" button
- Paste the full
<script>...</script>block into the code area - Give it a name like "Business schema"
- Set "Add Code to Pages" to All Pages (or choose specific pages if preferred)
- Set "Place Code in" to Head
- Click Apply
Shopify requires editing a theme file directly, so this one needs a touch more care. Duplicate your theme first so you have a safe backup to revert to if anything goes wrong.
- From your Shopify admin, go to Online Store, then Themes
- On your current theme, click Actions > Duplicate (this creates a safety copy)
- On the duplicate, click Actions > Edit code
- In the Layout folder on the left, open
theme.liquid - Use Ctrl-F (or Cmd-F on Mac) to search for
</head> - Paste the full
<script>...</script>block on the line immediately above</head> - Click Save
- Preview the duplicate theme, then publish it if everything looks right
Webflow has a clean built-in interface for adding head code site-wide or per page.
- From your Webflow Designer, click the gear icon to open Project Settings
- Click the Custom Code tab
- Scroll to the Head Code field
- Paste the full
<script>...</script>block - Click Save Changes
- Publish your site for the changes to go live
For schema that should only apply to a single page, open that page's Page Settings and use the "Inside <head> tag" field instead.
Using a different platform? If you're on Duda, Ghost, Jimdo, Weebly, or any other website builder, look for a setting called "head code", "custom code", "code injection", or "HTML embed". Every modern website platform has one. The instructions will look similar: paste the full <script>...</script> block into the head section, save, and publish.
Check your work
Once you've added the code and saved, test it straight away. Two free tools will tell you whether the schema is valid and being read correctly.
Google Rich Results Test lives at search.google.com/test/rich-results. Paste your website's URL and click Test URL. It shows which schemas Google detected, any errors, and what Google could use them for.
Schema Markup Validator lives at validator.schema.org. Paste the URL or the raw code. This is the official schema.org validator and gives more detailed error messages if something is wrong.
If both tools show no errors, you're done. The hidden label is in place and AI agents can read it. If either shows errors, the message will usually point directly at the field where the problem is. Fix and test again.
Should you do this yourself?
Honest answer: it depends on three things.
If you've ever edited your site's settings, added a tracking pixel, or pasted a chunk of code somewhere in your CMS before, you can almost certainly do this. The steps above are the same shape as installing Google Analytics or a Facebook pixel. Copy, paste, save, test.
If the phrase "head section" or "script tag" is genuinely unfamiliar, it's worth handing this to a web developer with the code in hand. The cost of getting it wrong isn't catastrophic (you can always delete the code and revert), but it's not worth the anxiety. A developer will do it for a modest fee, and you'll have the confidence of knowing it was done properly.
Either way, always validate immediately after making changes. The Google Rich Results Test and the Schema Markup Validator are both free and take about ten seconds to run. Green means done. Red means there's a clear error message pointing at what to fix.
The bigger point. A fully marked-up cafe like The Harbour Bean above is about twenty minutes of work for a confident DIY-er, or a small job for a developer. The payoff is that AI travel planners, voice assistants, and next-generation search tools can all read your business correctly for years afterwards. This is one of the highest-leverage pieces of work any visitor economy business can do right now, and every week that passes without it is a week of being invisible to AI-powered recommendations.
What glassmark checks for
glassmark doesn't require every schema on this list. It checks for the ones that matter most for each specific business type. A cafe is scored on whether it has CafeOrCoffeeShop, not whether it has GolfCourse. A holiday cottage is scored on VacationRental or LodgingBusiness, not on Museum. The scanner detects the business type first, then runs the relevant checks. That's why two businesses in different segments can both score 80 and both be "AI-ready" even though they've implemented completely different schemas.