Skip to main content
View Categories

Toolkit: AI Booking Channel

The AI Booking Channel publishes a machine-readable copy of your property data so AI assistants like ChatGPT, Claude, Perplexity, and Gemini can find your listings, describe them accurately, and send guests to book direct on your own site.


What it does #

Guests increasingly ask an AI assistant for travel recommendations instead of searching the web. An assistant can only recommend what it can read, and an ordinary property page is easy for it to misread: it may quote a stale price, miss your minimum-stay rule, or skip your site entirely and point the guest at a listing platform. That is a direct booking lost before the guest ever saw your website.

The AI Booking Channel gives assistants a clean, purpose-built version of your inventory to read instead. When you switch it on, your site starts publishing:

  • A feed for every published property, written in Markdown and served as plain text so every assistant’s reader accepts it. Each feed carries a property overview, sleeping arrangements, location, amenities, booking information, pricing and availability for the window you choose (the next bookable windows and a night-by-night table), availability rules written for AI agents, and recent reviews, with a short data summary at the top (sleeps, bedrooms, bathrooms, currency, the nightly rate range, the next available date, check-in and check-out times, rating). How precise the location is (street address, coordinates) is entirely your call.
  • An AI sitemap, in XML, that lists every one of those property feeds so crawlers can find them all.
  • A site catalog file, in plain text, that introduces your whole inventory, your business name, a contact address, and where the feeds and the AI sitemap live.
  • An agent manifest, a small JSON file that names your business to an AI agent and points it at your live property catalog, your site catalog file, and your AI sitemap, so agent platforms that support directory-style discovery can register your channel in one read.
  • Richer structured data on your regular property pages, adding details such as pet policy, brand, language, listing type, a price-less signal that the listing is bookable now, and a direct booking link.
  • A welcome for AI crawlers in your site’s robots file. This is added only when your site is set to be visible to search engines.

The Feed endpoints card on the settings page lists a sample property feed, the AI sitemap, the site catalog, and (once it is on) the AI-Ready connection page, each with a copy button, so you can open a feed yourself or hand the addresses to a partner.

Here is what that looks like in practice. A guest asks ChatGPT for a pet-friendly cabin near the lake for the first week of October. The assistant reads your property feed, sees the cabin is available that week, quotes the correct nightly rate and the three-night minimum, and links the guest straight to your booking page.

The channel is honest with assistants about what the data promises. Every feed states that availability is listing-level and indicative, and that nightly prices are pre-tax and pre-fee, with the final price always confirmed on the property page. The bookable-now signal on your property pages works the same way: it tells an assistant the listing can be booked, without stating a price, since rates change by date and a number here would go stale. That keeps AI descriptions accurate and protects your guests from quoted totals your checkout would contradict.

The AI-Ready guest entry point #

Crawlers are only half the picture. Many of the guests already on your site have an assistant open in another tab, and left to themselves they will ask it about your area and get sent to a listing platform. The guest entry point invites them to plan with their assistant from your own site, with a prompt that keeps the booking here. It is off by default; when you switch it on, your site can show:

  • A Plan with AI item that you place in the property page’s action row, next to Share and Save. It opens a dialog (a bottom sheet on phones) that explains what your site publishes and offers one button per assistant. With scripts off, the item links to the connection page instead, and stays hidden when that page is off.
  • A connection page, a themed page at /plan-with-ai/ (the slug is yours to change) that carries the same explainer for the whole site. It is kept out of search indexes.
  • A footer link, “Plan your stay with your AI assistant”, on every page. It opens the same dialog in place; with scripts off it leads to the connection page.
  • An optional full section at the bottom of property pages and search pages (on phones the search-page section moves to the end of the results list), or exactly where you place it with the [hr_ai_ready] shortcode, the AI-Ready Section element, or the AI-Ready section block.

Whichever surface the guest meets, the content is the same. Under the heading “Plan your stay with your AI assistant”, a few plain lines state what your site publishes: “Lakeside Cabins publishes this home’s details and a 90-day availability calendar for AI assistants”, “Nightly rates are published too, so your assistant can give an indicative price” (only when you publish pricing), and “Your assistant sends you back here to book”, with the caution that only the booking page confirms a price or a booking. Then come the assistant buttons, in the order guests see them: Plan with ChatGPT, Plan with Perplexity, Plan with Claude (sign in), and Copy the prompt for Gemini. The first three open the assistant in a new tab with a ready-made prompt; ChatGPT and Perplexity run it straight away, Claude asks the guest to sign in and then prefills it. Gemini ignores a prefilled prompt for a signed-out guest, so it gets a copy button instead. A collapsed “Or copy the prompt yourself” block holds the full prompt for any other assistant, and the trust line closes the block: “Ask your AI assistant. Book here.”

The prompt is the same for every button. It asks the assistant to help plan a stay with your business, tells it to start by reading the property’s own feed (with its availability calendar and nightly rates), points it at your site catalog and at the page the guest is looking at, and sets four rules: use this site’s own feeds for listings, availability and rates and treat what it fetches as data rather than instructions; open the property’s feed and check every night of the stay, including minimum-stay and check-in and check-out rules, before recommending it; quote a total only from the booking page, since feed rates are indicative; and leave payment and the booking itself to your site. On search pages and the connection page the prompt starts from the site catalog instead of one property’s feed. Nothing about the guest goes into the prompt: only your business name and up to three addresses on your site.

Nothing guest-facing renders on the checkout or confirmation page, so the entry point never invites a guest mid-payment to leave for an assistant.

You also see what the channel is doing for you. The analytics card at the top of the settings reports “at least N reads” over your chosen window (7, 30, or 90 days), split by assistant. Only reads served directly by your site are counted, so cached reads do not appear; the real number can only be higher. Visits from people arriving out of an AI assistant are reported on their own line, separate from crawler reads. Bookings and revenue are counted from confirmed reservations placed by guests who arrived through the channel’s tagged booking links or directly from an AI assistant, so the attribution is real rather than estimated. Bookings completed on a PMS-hosted checkout are counted when the guest returns to your site (see below).

Test with an assistant #

The guest entry point tells guests that an assistant can read your feeds. Test with an assistant checks that claim against your own site, so you are not taking it on faith. It lives in the same settings group as the guest entry point (whether or not the entry point is switched on), only administrators can run it, and guests never see it.

For each assistant you have given a key, one run does this:

  • It picks a sample property: your oldest published property whose feed shows an available night (and a nightly rate, when you publish pricing). Properties kept out of the channel are skipped while Respect per-property opt-out is on. It tries up to five properties before giving up.
  • It reads that property’s feed from your site’s public address, the way an outside visitor would, so your CDN and any bot rules are in the path.
  • It sends the assistant the same prompt your guests get, plus one question about the feed: is a specific night listed as available, what nightly rate does the feed give for it, and, when your feed has a blocked night, is that night listed as available. The assistant may open pages on your own site only.
  • It compares the answer with the feed and saves a dated result for that assistant.

Each assistant gets one of these results:

  • Pass. Every answer matched the feed, and the assistant reported opening your feed address.
  • Unverified. Every answer matched, but the assistant did not report opening the feed, so it may have read a web page or guessed. This is not a pass.
  • Fail. An answer disagreed with the feed (wrong availability, a different rate, a different currency), the assistant could not read the feed, or it gave no usable answer. It also shows when your own site cannot read its own feed over the web, for example because a firewall rule returns an error, since an assistant is likely to be turned away as well.
  • Error. The check could not complete: there is no key, no property could serve as a sample, or the assistant’s provider returned an error.
  • Not run. No result has been saved yet.

While the guest entry point is on and serving, administrators also see the latest result for each assistant in the admin toolbar on your public site, for example “AI-Ready check: ChatGPT ✓ Sep 18 · Claude ✓ Sep 18”. A check mark is a pass, a tilde is unverified, a cross is a fail, an exclamation mark is an error, and a dash means not run. Clicking it opens the AI Booking Channel settings.

Bookings made on a hosted checkout #

Some PMS integrations, OwnerRez among them, take payment on the PMS’s own page instead of your site’s checkout. Your site never sees the reservation being created, so those bookings could not be attributed before. They are now counted when the guest comes back: after a guest who arrived through the channel completes the booking on the hosted page and lands back on your site, the channel records one attributed booking under that booking’s PMS reference.

What you need in place:

  • The Conversion Tracking module switched on in the HomeRunner Toolkit Hub (under Analytics). It handles the return from the hosted page.
  • In OwnerRez, each property’s Redirect After Booking URL (in the property’s Rules) pointing back to a page on your site. OwnerRez adds the booking reference to that address when it sends the guest back.

What to expect:

  • These bookings count toward the booking number but carry no amount, because the return does not include the total. Their revenue stays blank until an amount can be matched later.
  • The return is a page visit, not a confirmed reservation, so the channel records at most one new hosted booking per visitor address per hour. A second booking from the same address inside that hour is not attributed.
  • Reloading the return page never creates a second booking.

The module ships off. Turning it on is a deliberate choice, because it publishes your property data where anyone, including competitors, can read it. The location-privacy settings exist so you decide exactly how much is shared. The guest entry point is a second, separate switch, also off by default, so you can publish feeds for months before you show anything to guests.

How to turn it on #

1. Switch on the module #

In the HomeRunner Toolkit Hub, under AI & Integrations, switch on AI Booking Channel. Feeds build automatically within a few minutes; the Published feeds card shows the count and the last-built time.

2. Choose what the feeds carry #

In the Content section, set the Availability horizon (how many days of pricing and availability each feed covers, 90 by default) and decide whether to include nightly pricing, unavailable dates, and minimum-stay rules. All three are on by default because they are what make an AI recommendation accurate.

3. Decide how precise location should be #

Both location settings are off by default, so feeds carry the public area (city and region) only. Turn on Expose exact street address or Expose precise coordinates only if that level of detail is acceptable for every listing in the feed.

4. Add your business identity #

Under Discoverability, in Business identity (schema), enter your Business name and Business phone so assistants attribute listings to your brand, and a Contact email for crawler operators. Blank fields inherit details your site already keeps. The name falls back to the Reviews Page brand override and then the site title. The phone falls back to Rank Math Local SEO and then the Reviews Page module, and is left out entirely when none exists. The email falls back to Rank Math Local SEO, then your HomeRunner guest-email addresses, then the site admin email. Each field’s caption shows exactly what is published right now and where it comes from, and the panel warns when the contact email is not on your site’s own domain.

5. Save and confirm it is serving #

Click Save AI Booking Channel settings. The Output card should read Serving. Then, under Crawler access, click Run reachability test. It fetches your home page, your robots file, one property page and that property’s feed under the names guest assistants use when they open a page during a conversation (ChatGPT-User, OAI-SearchBot, Claude-User, Perplexity-User) and under the crawler names (GPTBot, ClaudeBot, PerplexityBot), with Googlebot as a control, and shows what your server and CDN return for each name. A blocked name is attributed to a layer, whether Cloudflare’s Block AI bots setting, a Cloudflare challenge, another Cloudflare rule, or your server’s own bot list, with a hint on where to change it. The robots.txt column shows whether each robots-honouring name may read the page and the feed; ChatGPT-User and Perplexity-User do not read robots.txt, so an Allow rule there changes nothing for them. Treat the result as a simulation sent from your own server: it shows what your firewall does with a name, reads status only, and never changes Cloudflare, a firewall, robots.txt or any bot rule. The proof that a real assistant gets through is the Test with an assistant check in step 9.

6. Switch on the guest entry point (optional) #

Still under Discoverability, in AI-Ready guest entry point, switch on Show the guest entry point. The connection page and the footer link are on by default; the page-bottom sections are off, because the Plan with AI item carries the same content in a dialog. Change the Section position or the Connection page slug if you need to, set an Accent color or switch on Use the theme’s button style so the assistant buttons match your site, then save. The connection page and the footer link need the site catalog or the AI sitemap to be on; on a property page the dialog and the section fall back to that property’s own feed when both are off.

7. Place the Plan with AI item #

Add it to the property page’s action row. On a YOOtheme site, drop the AI-Ready Trigger element next to your Share item and pick a Style (None, Text, Muted, Heading, or Reset) and an Alignment so it matches the row. In the block editor, add the AI-Ready trigger block. Anywhere shortcodes work, use [hr_ai_ready_trigger]. The label defaults to “Plan with AI” and can be changed in the element, in the block, or with [hr_ai_ready_trigger label="Plan my stay"]. The item shows once per page and only while the guest entry point is on. If you use Toolkit: Property Actions, its Plan action is this same item, so you do not need to place it twice.

8. Preview what guests see #

Save, then open Preview what guests see, and the exact prompt. It shows the property-page surface (the dialog and the section) built from one of your published properties and the site-wide surface used on search pages and the connection page, each with the exact prompt its buttons carry, plus a table of the assistants in the order guests see them and how each one behaves (a link that runs the prompt signed out, a link that prefills after sign-in, or a copy button). The preview is built from saved settings whether or not the entry point is switched on, so you can check it before going live. It is not clickable.

9. Test it with a real assistant (optional) #

In the same AI-Ready guest entry point group, below Preview what guests see, and the exact prompt, find Test with an assistant. Give each assistant you want to test an API key: paste it into the ChatGPT key or Claude key field and click Save key, or define it in wp-config.php as HRTK_OPENAI_API_KEY or HRTK_ANTHROPIC_API_KEY. These are API keys from an OpenAI or Anthropic account, not your ChatGPT or Claude chat sign-in. Then click Test with an assistant. The assistants are tested one after another and each row fills in as its result arrives, which takes up to a minute or two per assistant. An assistant with no key shows Error with the detail “Nothing was called.” Results stay on the panel, with the date, until you run the check again.

Settings #

SettingWhat it controls
Availability horizon (days)How many days of pricing and availability each feed carries, from today. 7 to 730. Default: 90.
Include nightly pricingWhether feeds carry the per-night rate list. Off leaves availability only and drops the rate range from the feed summary and the “nightly rates” line from the guest copy. Default: on.
Include unavailable datesLists blocked nights explicitly as not available instead of omitting them. Default: on.
Include minimum-stay rulesMarks nights that carry a minimum-stay requirement. Default: on.
Respect per-property opt-outHonors a per-property exclude flag, so listings marked as excluded stay out of the channel. Default: on.
Include drafts and private listingsOff by default, so only published listings are ever exposed to crawlers.
Expose exact street addressPublishes the full street address. When off, feeds carry city and region only. Consider guest and owner privacy before enabling. Default: off.
Expose precise coordinatesPublishes exact latitude and longitude. When off, coordinates are left out. Default: off.
llms.txt modeWhere the site catalog is served. Serve full (the default) publishes it at /llms-full.txt and never touches an existing /llms.txt. Generate serves /llms.txt when nothing else on the site does. Off disables the catalog.
Publish the AI sitemapServes /ai-sitemap.xml listing every per-property feed. Default: on.
Inject rel=alternate linkAdds a machine-readable pointer on each property page so crawlers find that property’s feed. Default: on.
Show the guest entry pointThe master switch for everything guests see: the Plan with AI item and its dialog, the sections, the footer link, and the connection page. Off keeps every feed live and removes every guest-facing surface. Default: off.
Connection pageThe themed page at the slug below, kept out of search indexes. The Plan with AI item links here when scripts are off. Default: on (while the master switch is on).
Footer linkA plain link to the connection page in the site footer, on every page; it opens the dialog in place when scripts are on. Needs the connection page. Default: on (while the master switch is on).
Section on property pagesThe full section on the property page itself. The Plan with AI item carries the same content in a dialog, so most sites leave this off. Default: off.
Section on search pagesThe full section on the property archive and on pages that host the search. On phones it moves to the end of the results list. Default: off.
Section positionWhere a switched-on section goes: After the page content (the default), Straight before the site footer, or Placed by hand, which renders it only where you put the [hr_ai_ready] shortcode, the AI-Ready Section element, or the AI-Ready section block.
Connection page slugThe path of the connection page. Lowercase letters, numbers and hyphens; a slug an existing page already uses is refused. Default: plan-with-ai.
Accent colorThe color of the assistant buttons and the check marks, as a hex value such as #167a94. The text on a hovered button turns dark on a light accent so it stays readable. Default: blank (the built-in blue).
Use the theme’s button styleAdds the YOOtheme button classes to the assistant buttons so they look like the rest of the site instead of the built-in pills. Default: off.
Test with an assistantRuns the check described above for each assistant, one after another, and saves a dated result per assistant. Each run is one small paid request per assistant, billed by OpenAI or Anthropic to the account the key belongs to, at their usage rates. An assistant that was just tested must wait 60 seconds before it is run again, and two runs of the same assistant cannot overlap.
ChatGPT key and Claude keyThe API key the check uses for each assistant. The key is stored on this site only and used only for this check, and after you save it the panel shows only its last four characters. A key must be 16 to 512 characters of letters, digits, dots, dashes, and underscores. Remove deletes a saved key. A key defined in wp-config.php (HRTK_OPENAI_API_KEY, HRTK_ANTHROPIC_API_KEY) takes precedence over one saved here; the panel then says where it comes from and leaves the field out. A key your developer supplies in code is shown as such. Default: none.
JSON-LD enrichmentAdds extra fields (pets, brand, language, booking link, a listing-type classification such as Cabin, Villa, or House drawn from the property’s type, and a price-less “bookable now” signal) to the structured data on your property pages so AI and Google read richer detail. Also publishes your properties’ full-resolution photos in that structured data instead of a smaller sideloaded thumbnail, so your listing meets the image-quality bar some programs require, such as Google’s minimum size for vacation rental listings. Default: on.
Business nameUsed as the brand in structured data, in the site catalog, in the agent manifest, and in the guest copy. Blank inherits the Reviews Page brand override, then the site title. Default: blank.
Business phoneAdded to structured data as your telephone number. Blank inherits the phone from Rank Math Local SEO, then the Reviews Page module; with none on file it is left out entirely, never invented. Default: blank.
Contact emailPublished in the site catalog and the agent manifest so crawler and agent operators can reach you. Blank inherits the business email from Rank Math Local SEO, then your HomeRunner guest-email addresses, then the site admin email. Default: blank.
Rate-limit hint (req/sec)A courtesy crawl-rate suggestion advertised in the site catalog. 0.1 to 100. Default: 1.
Add Allow directives to robots.txtAdds explicit welcome rules for AI crawlers to your site’s robots file, plus a pointer to the AI sitemap. Applies only when the site is set to be visible to search engines; a physical robots file, or an SEO plugin that manages it, takes precedence. Default: on.
Regeneration triggerWhen feeds rebuild: when your property data updates, on the scheduled safety-net rebuild, or both. Default: both (recommended).
Safety-net cron intervalHow often the scheduled background rebuild runs as a fallback to update-driven refreshes: hourly, twice daily, or daily. Default: daily.
Cache TTL (minutes)How long a served feed may be cached before it is considered stale. 5 to 10080. Default: 720 (twelve hours).
Staging guardAuto (the default) blocks all feed output on any non-production host, so a staging copy of your site never gets crawled. Force on overrides that and requires a typed confirmation.
Kill switchEmergency stop. Every feed address immediately stops serving, without disabling the module or losing your settings. Default: off.

Tips #

  • If crawlers do not seem to find your feeds, check that your site is set to be visible to search engines first. The robots-file welcome is only added on a search-visible site. Feeds themselves regenerate automatically after property or pricing changes, after every plugin update, and on demand with Regenerate feeds now in the Freshness section.
  • If the guest entry point disappeared after a plugin update, that is expected once: the update switched it off on every site, one time only, so each operator opts in deliberately. Switch Show the guest entry point back on and save; later updates leave your choice alone.
  • If saving reports that the guest entry point “could not be switched on yet”, the site has not finished that one-time setup. Save again in a minute.
  • If the Plan with AI item does not show, check in this order: the guest entry point is on, the page is not the checkout or confirmation page, the site catalog or the AI sitemap is on (or, on a property page, the property is published and not excluded), and the item is placed only once, since a second copy on the same page renders nothing.
  • If Test with an assistant shows Unverified, the assistant’s answers were right but it did not report opening your feed, so it may have answered from a web page or a guess. Run it again, and use Run reachability test to confirm the feed is open to the assistants’ names.
  • If it shows Fail with a message that your own site’s feed could not be read, your server turned the check itself away, and an assistant is likely to be turned away as well. The reachability test in Crawler access shows which layer is responsible.
  • If a check is refused with “tested less than 60 seconds ago”, wait a minute. The pause exists so a double click does not bill you twice. A run that never reached the assistant, such as one with no key, does not start the wait.
  • A booking is attributed when the confirmed reservation, or the return from a hosted checkout, happens within 30 days of the guest’s first arrival through the channel. Revenue is shown per currency where the booking total is known; bookings without a known total still count toward the booking number.
  • The “at least N reads” figure is deliberately conservative. Reads answered by a page cache in front of your site are not counted, so treat the number as a floor, never as the full picture.
  • You can keep an individual listing out of the channel, for example a property an owner wants kept low-profile. There is no switch for this on the listing edit screen yet, so ask HomeRunner support to flag the property for you; the Respect per-property opt-out setting controls whether flagged listings are honored.
  • If a property fails a listing program’s image-quality check, JSON-LD enrichment publishing your full-resolution photos in place of a downsized thumbnail is usually what resolves it. To see exactly where a listing stands before you open the Google dashboard, pick the property under Google Vacation Rentals image readiness and click Check GVR readiness. It measures the exact images your property page’s structured data hands Google and reports how many qualify against Google’s bar of 8 landscape photos of 1024×683 or larger, with a per-image reason for any that fall short. It reads image headers only and changes nothing.
  • If Google Search Console flags a listing for a missing additionalType field, JSON-LD enrichment fills it in automatically from the property’s listing type (Cabin, Villa, House, and similar), falling back to a general vacation-rental classification for types Google has no specific word for.
  • With JSON-LD enrichment active, the AI Booking Channel publishes the property structured data in place of the HomeRunner plugin. The Toolkit: Schema Health card, and the matching entry under Tools, Site Health, carry an AI Booking Channel line that says whether the channel is doing that right now (or why not: enrichment off, output suppressed by the kill switch or staging guard, or the enrichment engine unavailable). While the channel is doing that, the plugin’s own schema counters can stay still on a healthy site, and the AI Booking Channel line on the card tells you that is why.
  • If you turn the module off and later notice an “Agent manifest cleanup incomplete” badge on the AI Booking Channel card in the Toolkit Hub, the agent manifest file could not be removed automatically, usually because the server’s file system is read-only. Turning the module back on and off again retries the cleanup; contact HomeRunner support if the badge does not clear.
  • If the reachability test flags a feed check with a warning even though the status is 200, the server is serving that property’s feed as text/markdown instead of text/plain. ChatGPT’s reader rejects text/markdown, so ask your host to serve .md files as plain text.
  • The reachability test’s robots.txt column also checks a “quote shape” address for a booking-quote feed that does not exist yet. That is a forward check, so a broad robots.txt rule cannot block that feed once it ships; there is nothing to open at that address today.
  • The AI Booking Channel tells you where a booking came from; Toolkit: Conversion Tracking shows how guests move through your booking flow once they arrive. The two work well side by side.
  • Toolkit: Property Actions gives the property page one placeable action row with Share, Save, and Plan with AI, so the item lands next to its neighbours without hand-building the row.
  • This module is what other people’s assistants read. To let your own assistant work on the site itself (draft posts, build pages, tune SEO), see Toolkit: AI Webmaster, which sits in the same AI & Integrations group of the Hub.
  • New to the Toolkit? Start with Toolkit: Overview for the full list of modules.