Connect Booking.com to Campiamo
Set up two-way iCal calendar sync between Booking.com and Campiamo, so a booking on either side blocks the dates on the other. Includes the one limitation you must understand before you start.
Last updated Invalid Date
Booking.com and Campiamo exchange calendars using iCal — the same open format your phone's calendar app uses. Each side publishes a link to a calendar file, and each side reads the other's link on a schedule.
Setting it up means swapping two links per pitch type:
- You give Booking.com a link to your Campiamo calendar, so it stops selling dates you have already filled.
- You give Campiamo a link to your Booking.com calendar, so dates booked on Booking.com are blocked in Campiamo — and therefore on your website, your widget, and every other channel.
You need both. Setting up only one gives you a sync that works in a single direction, and the first double booking will find the gap.
Before you start: unit counts must match on both sides
iCal calendars have no concept of "how many". A date is either free or busy. There is no way for a calendar file to say "17 of my 20 grass pitches are still available".
This single fact decides whether you should use this integration at all, and it bites in both directions.
One Booking.com room ↔ one Campiamo pitch type, holding the same number of units. Get that wrong and you will either lose bookings or take too many.
If the Booking.com room holds more units than the pitch type
Booking.com will happily sell three stays in the same room on the same night, because as far as it is concerned that room has three units. Its calendar feed then contains three overlapping busy periods — and each one blocks a unit of the pitch type you linked it to. If that pitch type only has one unit, everything past the first is blocking inventory you don't have, and guests are arriving for stays your calendar cannot show you.
Campiamo never turns a feed into more bookings than a pitch type can hold — it can't, because it doesn't create bookings from feeds at all (see below). But the mismatch is still yours to fix, because the extra stays are real guests who have booked and paid on Booking.com.
If the pitch type holds more units than the Booking.com room
The opposite problem. Your calendar can only say "busy", so one booking on a 20-unit grass pitch type marks the whole date busy and Booking.com stops selling the other 19. You lose bookings you could have taken.
What to do
- Best: give each unit its own room on Booking.com and its own pitch type in Campiamo, each holding one unit, and connect them one to one. Three cabins means three rooms, three pitch types, three connections. This is what iCal is designed for and it is exactly how Booking.com models a room.
- Otherwise: leave that pitch type off calendar sync and manage its Booking.com availability by hand.
Don't split an existing multi-unit pitch type by simply reducing its unit count. If a "Cabin" pitch type with 3 units already holds bookings spread across those 3 units, changing it to 1 unit turns them into an instant overbooking. Campiamo will now stop you doing this, but if you need to restructure, create the new pitch types first and move the bookings across before reducing anything.
None of this is a Campiamo restriction. It is what the iCal format is, and it applies to every system that syncs this way.
Step 1: Create the connection in Campiamo
- Go to Channels in the dashboard sidebar.
- Find Booking.com and choose Connect.
- Pick the pitch type this connection is for.
One connection covers one pitch type. If you have three cabins listed on Booking.com, you will set this up three times — once per cabin — and each will have its own pair of links.
Leave the connect dialog open. You need a link from Booking.com before you can finish, and Campiamo will give you a link to take back to them.
Step 2: Get your Booking.com calendar link
In the Booking.com extranet:
- Open Rates & Availability, then Sync calendars (older accounts show this as Calendar → Sync calendars).
- Choose the room that matches the pitch type you picked in Campiamo.
- Find the section for exporting your calendar — Booking.com words this as giving your calendar to another site.
- Copy the link. It ends in
.ics.
Copy the export link, not the address in your browser's address bar. The address bar shows a page you are signed in to; Booking.com would just send Campiamo a login screen, and the connection will be refused with an error telling you exactly this.
Step 3: Finish the connection in Campiamo
Paste that link into the Calendar link from Booking.com field, and save.
Campiamo checks the link straight away. If it is not a calendar — a login page, a typo, an expired link — the connection is refused there and then with an explanation, rather than being accepted and quietly failing every fifteen minutes afterwards.
Once it saves, Campiamo shows you your calendar link, which looks like this:
https://campiamo.com/ical/a1b2c3d4….ics
Copy it.
Step 4: Give your Campiamo link to Booking.com
Back in the extranet, on the same Sync calendars screen for that room:
- Find the section for importing a calendar from another site.
- Paste your Campiamo link.
- Name it something you will recognise — "Campiamo" does the job.
- Save.
Booking.com will fetch it within a few minutes and then re-check it periodically. The two sides are now talking.
What syncs, and how quickly
From Campiamo to Booking.com, your calendar link publishes every date that is unavailable for that pitch type:
- Confirmed bookings, and bookings still awaiting your confirmation
- Guests currently checked in
- Dates you have blocked by hand
- Dates outside your season or outside that pitch type's availability window
It covers the next 365 days and is cached for five minutes, so a booking you take at the desk is visible to Booking.com almost immediately. How quickly Booking.com acts on it is up to them — they typically re-read within a few minutes to an hour.
From Booking.com to Campiamo, we read your Booking.com calendar every 15 minutes while the connection is active. Every busy period in it blocks those dates in Campiamo, so your website, your widget and every other channel stop selling them.
You can also press Sync now on the Channels page if you don't want to wait.
What a Booking.com stay looks like in Campiamo
Booking.com's calendar feed contains dates and a reference — and nothing else. Every entry is literally labelled "CLOSED - Not available". It carries no guest name, no email, no phone number, no price, and it doesn't even distinguish a reservation from a date you closed by hand. That is what Booking.com puts in the file.
So Campiamo doesn't pretend otherwise: a busy period in the feed becomes blocked dates on your pitch type, marked "Booked on Booking.com" — not a booking, and not a made-up guest.
- The dates stop being sellable on your website, your widget, and every other channel — which is the entire job.
- No booking appears in your bookings list or on your arrivals board, because we don't know who is coming. Your guest's details, and their payment, live in the Booking.com extranet — that is where to look on changeover day.
- Nothing is priced or chased for payment: the guest pays Booking.com, not you.
Changes and cancellations
- Dates changed on Booking.com → the blocked dates move with them on the next sync.
- Booking cancelled on Booking.com → it disappears from their calendar file, and the block is released, freeing the dates.
- Channel disconnected → all of its blocks are released at once. Blocks exist only to mirror the feed; without the feed they'd hold dates forever.
- An empty or broken feed → we change nothing. A calendar that fails to load is not the same as a calendar with nothing in it, and we will not free your whole season because Booking.com had a bad morning.
When something is wrong
Every sync is recorded. On the Channels page, open the connection to see its history and the exact reason for any failure.
"That link did not return a calendar feed."
The link you gave us isn't a calendar. Almost always this is the browser address bar instead of the export link. Go back to Sync calendars and copy the link that ends in .ics.
Bookings aren't appearing. Check the connection is switched on and that auto-sync is enabled. Then check you connected the right room — a common mistake is exporting the calendar of one room and importing it against a different pitch type, which syncs perfectly and blocks entirely the wrong thing.
Booking.com shows you as full when you are not. Your pitch type holds more than one unit, and a booking on one of them is blocking the lot. See Before you start.
Dates are blocked in Campiamo but there's no booking to open. That's how channel stays appear: blocked dates marked "Booked on Booking.com", with the guest's details in the Booking.com extranet. See What a Booking.com stay looks like.
More dates are blocked than you have reservations for. The feed also contains dates you closed by hand on Booking.com, dates Booking.com blocked because of your own Campiamo bookings (the two calendars reflect each other), and — if the room holds more units than the pitch type — overlapping stays. Check the room's own calendar in the extranet to see what each busy period actually is, and see Before you start.
A date is blocked in Campiamo and you can't find the booking. Check the pitch type's availability window and your season dates. Those are exported as busy too — that is deliberate, so Booking.com cannot sell a night you are closed.
A note on double bookings
iCal sync is not instant, in either direction. There is a window — usually minutes, occasionally longer if a channel is slow to re-read — where the same night can be sold twice: once by you and once by Booking.com.
Nothing that syncs by calendar file can close that window completely, and any system that tells you otherwise is not using iCal. It is a real, if uncommon, risk, and it is the price of a connection that takes five minutes to set up and costs nothing.
If you sell high-value units where a double booking would be a serious problem, keep a small buffer of unlisted availability, or talk to us about a direct API connection instead.
Still stuck?
If this page didn't answer your question, it's our page that needs fixing. Tell us.
Get in touch