Skip to content

Connecting Booking.com and Agoda

This article explains how your rooms are planned to stay in sync with Booking.com and Agoda: what we send them, what we receive back, and how to set it up yourself from the dashboard.

Once a connection is live, two things happen automatically, in both directions:

  • We tell them what’s free, and for how much. Whenever anything changes your availability — a guest books, you block a room, you edit prices — we push the new state to that site. You never re-type a price into two places.
  • They tell us about their bookings. A reservation made on Booking.com or Agoda becomes a real booking in your dashboard, with the guest’s details and the amount they paid, and the room is immediately blocked everywhere else.

The amount is always what the guest paid on that site. We never re-price a channel booking against your own rates — the guest paid what they were quoted, and that is what your dashboard shows.

Everything below happens on the Channels screen in your dashboard — you do not need to send us anything.

Both sites require you to be on their connectivity partner programme, and both give you a client ID and a client secret once you are.

  • Booking.com — from the Connectivity portal: a machine account’s client ID and secret, plus your hotel code.
  • Agoda — from YCS: a client ID and secret, plus your property ID (or several, if this account covers more than one property).

Under Connect a channel, pick Booking.com or Agoda and enter the hotel code / property IDs. The connection appears straight away marked Needs credentials — nothing syncs yet, deliberately. A connection that tried to sync without credentials would just pile up failures.

Each connection has an Add credentials form. Enter the client ID and secret and save; the connection flips to Active.

The secret is stored encrypted and is write-only: the dashboard will never show it again, and neither can we. Entering a new one rotates it — use that if you think it has leaked, or after the channel reissues it. If you lose it, get a new one from the site rather than asking us to recover it.

If you ever see “These credentials were encrypted with an older key”, re-enter the secret — that connection cannot authenticate until you do.

Under Rooms on this channel, add each room, then fill in that channel’s own IDs for it: the property ID, and where the channel uses them, a room type ID and rate plan ID.

This is deliberately explicit — we will never guess which of your rooms is their “Deluxe Double”, because guessing wrong means selling the wrong room. A room shows Not mapped until you do it.

A room you have not mapped is simply invisible to that channel. Nothing breaks; it just does not sync. If a reservation arrives for a room we have no mapping for, we hold on to it, flag the connection, and do not tell the site we handled it — so their own fallback (emailing the reservation to your property) still reaches you. Then you map the room and it lands properly.

Airbnb and anything else: use a calendar feed

Section titled “Airbnb and anything else: use a calendar feed”

Airbnb has no public API, so it can’t be connected the way Booking.com and Agoda are. What works today — and needs no partner agreement at all — is an iCal calendar feed, in both directions:

Outgoing (block your dates on Airbnb): on Channels → Your calendar feeds (outgoing), pick the room, name the feed, create it, and copy the URL. Paste that into Airbnb’s Import calendar. The URL is shown once, so copy it there and then; if you lose it, revoke it and make another.

Incoming (Airbnb bookings block your dates here): copy the export URL Airbnb gives you, then Channels → Connect a channel → iCal calendar and paste it in.

  • Outgoing (your changes → the channel): within about a minute. We deliberately wait a few seconds and bundle changes together, so editing a whole season of prices sends a handful of updates instead of hundreds.
  • Incoming (their bookings → your dashboard): we check about once a minute.

That gap is why double-bookings are still possible, and why the next section exists.

Sync makes double-bookings rare. It cannot make them impossible: someone can book on Booking.com in the same few seconds a guest books directly on your site.

When that happens, the booking engine refuses to create the second booking rather than quietly accepting two guests into one room. The channel reservation lands in your conflict queue on the Channels screen instead, marked as a channel booking we could not place — and it is the urgent kind, because there is a guest holding a confirmation from Booking.com or Agoda for a room you do not have.

See Channel conflicts for how to resolve one. Short version: move one guest to another free room if you can, or cancel one side — bearing in mind that cancelling on the channel side can carry penalties from that site.

Each connection on the Channels screen shows its status and when it last synced successfully. A connection that starts failing flips to Error with the reason attached, rather than going quiet — so you find out from the dashboard, not from an angry guest.

Disconnecting a channel removes its rooms, its sync history and every calendar block it imported. It asks you to confirm first.

Common causes, in the order they actually happen:

What you seeWhat it usually means
Error right after setupThe client ID or secret is wrong, or the partner account is not activated yet
Reservations arriving, availability not updatingThe room is not mapped on the rates side, or the rate plan ID is missing
A reservation flagged as unmappedA room exists on their side that has no match on yours
Error after months of workingThe credential was rotated or revoked on their side — enter the new secret to rotate it