Skip to content

Powered by Grav CMS + Helios Theme

Keeping Airbnb, VRBO and Booking.com in step

Exchange iCal feeds with other listing sites to update availability across your calendars. Updates are periodic, so a booking can still conflict with one made elsewhere between refreshes.

Read Nightly stays first for the booking model and date rules.

Before you begin

  • Manage Bookings and Setup (kahunacart.bookings.manage), which is what opens a property's record.
  • A login on each site you list with, and its calendar screen open in another tab.

How calendar sync works

Each listing site can export its bookings as a calendar feed and import a feed from your shop. Exchange the links to block dates booked elsewhere when the feeds refresh. This uses iCal calendar subscriptions, with no separate account connection.

Configure both directions. Exporting tells the channel which dates are booked here. Importing tells your shop which dates are booked on the channel.

Create a channel feed

Open the property under Bookings → People and places. Under Channel link, press Make a channel link and copy the URL. Use the same URL for every channel listing this property.

Channel feeds exclude guest details. Each entry contains dates and Not available, with no name, phone number, email, notes, prices or booking management link. These fields cannot be customised.

The channel link is separate from Calendar feed, which you can share with staff or subscribe to on your phone. Revoking the channel link leaves staff subscriptions working.

Dates held during payment appear in the feed, alongside confirmed stays. Ordinary cart holds do not appear, so abandoned carts do not block dates on other sites.

Airbnb

Import into your shop. In the Airbnb listing’s calendar settings, find Export calendar and copy the .ics URL. Paste it under the property’s Block time from other calendars with the label Airbnb. Press Test and compare the reported busy periods with the Airbnb calendar before saving.

Use a recognisable feed label. Availability results display it, for example Busy on Airbnb, in the calendar, Troubleshoot and CLI.

Export to Airbnb. Use Import calendar or the option to connect another website. Paste the shop’s channel URL and name the calendar.

Airbnb controls its refresh schedule. Updates are not immediate.

VRBO

Import into your shop. In the VRBO property calendar, find the calendar sync section and export its URL. Add it under Block time from other calendars, label it VRBO and press Test.

Export to VRBO. Paste the shop’s channel URL into the calendar’s import option.

VRBO controls its refresh schedule. Allow for delays between bookings and calendar updates.

Booking.com

Import into your shop. In the Booking.com extranet, find calendar sync under rates and availability. Choose the relevant room or property, export its feed and add the URL to your property’s outside calendars.

Booking.com calendars are organised by room type. Match each exported feed to the correct property record in your shop. Keep separately listed rooms on separate records; see For B&Bs.

Export to Booking.com. Paste the matching property’s channel URL into its calendar import or connection option.

Booking.com controls its refresh schedule. Updates remain periodic.

Menu names can change. Look for calendar import and export options in the listing’s calendar or availability settings. The exported calendar URL usually ends in .ics.

Sync delays and double bookings

Calendar sync cannot prevent every double booking. Two sites can accept the same dates between refreshes.

For example, a channel refreshes at 2:00pm and plans to refresh again at 4:00pm. A guest books here at 2:30pm. Until the next refresh, the channel can still accept a booking for the same dates.

This limitation applies to iCal subscriptions: each site reads a copy of the other’s availability rather than reserving dates in a shared system.

For faster availability updates, consider a channel manager with direct booking-system integrations. Rentals uses calendar feeds and does not provide those API connections.

To reduce conflicts, connect calendars as soon as you list a property and check that they refresh successfully. For high-demand dates, consider accepting bookings on one site and blocking those dates elsewhere.

Resolve a channel conflict

When you find a conflict, act promptly:

  1. Review both bookings, including their creation times and the details shown on each site.
  2. Contact the affected guests to explain the conflict and agree a resolution.
  3. Offer available alternatives or arrange cancellation and a refund through the appropriate booking site.
  4. Block the disputed dates on every listing while resolving the conflict.
  5. Complete the agreed changes and refunds, then check that all calendars show the correct availability.

Disconnect a channel

Use Take the channel link away to revoke the exported URL. This link is shared across channels, so revocation affects every subscriber. Remove or correct previously imported blocks on each channel; revoking the link does not clear dates already stored there.

Remove an imported feed from Block time from other calendars only when its reservations no longer need to block your shop. Removing it immediately releases those imported blocks.

Troubleshoot channel sync

Departure dates are not booked nights. A reservation from the 9th to the 16th blocks nights 9–15. The 8th remains available, and another guest can arrive on the 16th when changeover rules permit.

Bookings exported by your shop are recognised when imported back through another channel. They are ignored to avoid blocking the original stay or keeping a cancelled stay unavailable.

Imported blocks affect offered dates. A refresh does not reject a stay already selected for payment. Your shop’s own reservations use separate checks to prevent conflicts.

A failed calendar fetch raises a dashboard warning immediately. The last successful copy remains in use for up to a day. After that, the feed is skipped and its dates become available again. Check the warning promptly; it names the calendar label without exposing its URL.

Imports normally refresh every fifteen minutes. Press Test for an immediate fetch. Between refreshes, requests use the cached copy. Failed imports can retain the last successful copy for up to a day.

Imported blocks cover the whole property record. If the record has four identical rooms, a blocked date removes all four from availability. Use separate records and links for rooms listed independently.

  • The owner's side - what external reads like on Troubleshoot, and every other reason a night is refused
  • The picker - what a guest sees once a night is or is not on offer
  • Calendar sync - the staff calendar link, outside calendars, and what is and is not fetched
  • For B&Bs - shared room capacity and separate channel listings