What this does, and what it does not
It does
- Write one
<script type="application/ld+json">block per page: your business on the home page, one trip on each product page. - Put checkable facts where machines look for them: hours, season, price, minimum age, duration, rain and cancellation policy.
- List the facts that also need to be visible on each page, so the markup and the page match.
It does not
- Get you into Google's "Things to do" listings. Those come from booking feeds through connectivity partners, not from markup. Ask your booking platform whether it sends one.
- Create review stars. Leave
AggregateRatingout when the reviews are your own: Google does not show stars for reviews a business collects about itself. - Guarantee that AI tools name or cite you. It makes your facts easier to read and match. Measure with the AI visibility audit and the monitor.
Your facts
Business facts only, from your approved fact sheet (tool 1.a). Never enter guest names, emails, phone numbers, card numbers or other guest details. Your entries are saved in this browser only, so you can close the page and come back.
Your JSON-LD, one block per page
Paste each block on the page named above it, once. Most website builders have a per-page box called "code injection", "custom code" or "structured data" in page settings. If you are not sure where, send the block to your web person.
Check before you publish
Facts that also need to be visible on the page
Recommendation Based on Google's structured data guidelines: mark up only what a visitor can see on that page. Tick each fact once you have found it on the page. If a fact is in the markup but not on the page, add it to the page or take it out of the markup.
Validate, then publish
- Every block: the Schema.org validator. Paste the block at validator.schema.org. It checks TouristTrip, Offer and the amenity list. Fix errors; warnings about optional fields are fine.
- Home page block: also Google's Rich Results Test. The Rich Results Test only covers the LocalBusiness part. TouristTrip and TouristAttraction are not Google rich result types, so "no items detected" for a trip block is expected there, not a mistake.
- Publish, then test the live page. Run both tools again on the published web address. Update the markup whenever a price, season or policy changes (Recommendation), at the same time as your website, listings and confirmation emails (tool 1.a).
- Measure. Re-run the AI visibility audit next quarter. The weekly monitor counts the Cited check for you.
Google "Things to do": the listings with prices and booking buttons come from booking feeds sent by connectivity partners (often your booking platform), not from this markup. Google's Things to do documentation explains the partner route.
How you will know it worked
Both validators show no errors, every checklist box is ticked, and over the next quarter the Cited share for your business in the monitor or the audit goes up (Number 1). One week is noise; compare quarters.
Before you use it
No AI on this page, and a person still approves. The owner checks every fact against the approved fact sheet before it goes on the website. The markup states your policy; it does not replace the judgment on the day.
- Recommendation: safety calls stay with a qualified person. A rain or weather policy in the markup describes your business rule. The go or no-go call on the water is made by your licensed captain or guide, never by the markup or an AI tool.
- Recommendation: the same price, season and policies everywhere: website, markup, listing sites, confirmation emails. Conflicting facts cost trust (see tool 1.a).
- Recommendation: no AggregateRating built from reviews you collect yourself; no claims you cannot show on the page.
- The Bay Light example is a fictional teaching business. Its web addresses end in
.exampleand lead nowhere. Its price ($129), street address, 555 phone number, office hours and the year on its season dates (2027) were invented for this example; the other facts come from the kit's fictional fact sheet.