A guest books a villa on Booking.com at 10:05. The host gets the confirmation email and assumes Airbnb now shows those nights as taken. It doesn't. Not yet. Until Airbnb next reads the Booking.com calendar link, the same nights are still open to anyone searching Airbnb.

Underneath, this is a plain pull vs push problem, with a very physical failure mode: two guests, one room. This post looks at why calendar sync over iCal is always late, how long the gap is according to the platforms themselves, and why only a direct (push) connection really shrinks it.

The sync schedules below come from the official help pages of Airbnb, Booking.com and Agoda, checked on 16 October 2026.

iCal sync is polling

Each booking platform gives you a calendar link to export, and a place to paste other platforms' links to import. The link points to a calendar file that sits and waits to be read. Nothing notifies anyone when a booking lands.

So the speed of sync is not decided by the site that took the booking. It is decided by the site that imports the link. Your Booking.com feed can be perfectly up to date, but Airbnb only learns about a new booking when Airbnb decides to fetch it.

The importer sets the schedule

Platform Automatic import schedule (as published) Manual button Who can use iCal sync
Airbnb Every 3 hours "Refresh", limited number of requests Any listing
Booking.com Every two hours; "can take up to two hours" "Import now" 20 room types or fewer, one unit per room type, no connectivity provider
Agoda "Several times a day", no fixed interval given "Refresh connections" Room types with exactly 1 room

A few details from those pages matter in practice:

  • Booking.com states that calendar sync does not happen as bookings come in, and that reservations made elsewhere "won't sync immediately". Its FAQ names double bookings as a possible result.
  • Airbnb says that connected calendars may update at different times, and that it can only request updates from another site so many times. Go over the limit and you wait for the next automatic update.
  • Agoda gives no interval. If a room type goes from one room to several, the calendar connection may be deactivated automatically.

Why "sync now" doesn't fix the other side

The most common misunderstanding: a booking lands on Airbnb, the host presses Refresh on Airbnb, and expects Booking.com to update. Nothing changes on Booking.com.

In a pull model, each button only pulls into the site you are on. Airbnb's Refresh pulls other calendars into Airbnb. Booking.com's Import now pulls into Booking.com. Agoda's Refresh connections pulls into Agoda. No button pushes the new booking out; the exported link is just a file waiting to be read.

Two more traps:

  • Rate limits. Hammer Refresh on a busy day and Airbnb may stop accepting manual requests until the next automatic update.
  • Chains are unreliable. Don't count on a block travelling from A to B and then on to C. The platforms don't document that a site re-exports dates it imported, and Airbnb itself says blocks set on another calendar "may or may not" appear. Import each site's link directly into every other site.

The risk window

Say Airbnb last pulled the Booking.com feed at 09:00, so the next pull is around 12:00. A guest books on Booking.com at 10:05. From 10:05 to 12:00, nearly two hours, Airbnb still sells those nights. Had Airbnb pulled at 10:00, the window would be almost three hours.

Three things follow:

  • The worst case equals the importer's interval: up to 3 hours open on Airbnb, up to 2 hours on Booking.com, unknown on Agoda.
  • On average you are exposed for about half the interval, because a booking lands at a random point between two pulls. Half of three hours is still ninety minutes.
  • Every extra channel adds its own window. With three sites, each booking opens a gap on two other sites at once, each on its own clock.

The window only hurts when someone else books the same nights inside it. That is why the same setup feels fine in a quiet month and fails over Christmas or a long holiday weekend, when last-minute searches for the same dates pile up.

Shrinking the window when you can't change the schedule

You can't change a platform's polling interval. You can change what happens inside it:

  1. Pull on the other sites after every booking. Tie it to the booking email: Import now, Refresh, Refresh connections. A window of hours becomes the time it takes you to read the email.
  2. Block peak dates by hand straight away. For high-demand nights, don't wait for any import.
  3. Remove duplicate and dead feeds. A feed imported twice, a link from an old tool, a connection in an error state. A feed that stopped updating is worse than a slow one.
  4. Time your own delay once. Block a quiet date on site A, note the time, check when it appears on site B, then unblock it.
  5. Keep last-minute dates on one channel in peak weeks. Fewer channels selling the same night means fewer races.

A buffer night between stays protects your turnover, not your calendar. It does not stop two guests booking the same night inside the iCal window.

Push: a shorter window, not a zero one

A direct API connection (a channel manager) flips the model. Instead of waiting for the other site to fetch, your system sends each change to each channel through that channel's own connection. There is still a short processing gap, but you are no longer waiting hours for someone else's schedule.

Push doesn't make double bookings impossible. What remains: a channel that rejects or delays an update on its side, two guests booking within the same short processing gap, a wrong unit count, and an old iCal import left running on an OTA after you connect. That last one is easy to forget: delete the old imports when you switch.

When iCal is enough

iCal stays workable for one or two single-unit listings on two channels in a quiet season. Consider a direct connection when:

  • You sell more than one identical unit. Booking.com and Agoda calendar sync only works with one unit per room type, so iCal is not even an option there.
  • You sell on three or more sites, so each booking opens two or more windows.
  • Peak season brings same-week bookings and you can't watch every email.
  • A double booking has already cost you a day of apologies and rebooking.

In engineering terms: iCal is polling on an interval someone else chose. Every "make iCal faster" trick is really just polling manually more often. To actually close the gap, you have to push.

Sources: Airbnb Help, article 99, Booking.com Partner Help on calendar sync, Agoda Partner Hub on calendar connections. Adapted from a longer guide originally published on the Santara AI blog.

This article was written with AI assistance, based on the sourced guide above.