By the end of this guide, you'll have at least one external calendar feeding into Cabintale, with imported bookings appearing alongside your direct ones — and you'll know how to keep it in sync.
What you'll need
- A property under Your setup → Places
- Access to Airbnb / Booking.com / Vrbo / Google Calendar — whichever calendars you want to import
- The iCal URL from each platform (we'll point you to where these live)
- ~10 minutes
- One or more external calendars connected to your property
- A first sync, with imported bookings visible on your Cabintale calendar
- Confidence that your widget won't sell a date that's already taken on Airbnb
Step 1: Find each platform's iCal URL
Every platform exposes a private subscription URL ending in .ics. They're hidden in slightly different places.
| Platform | Where to find it |
|---|---|
| Airbnb | Calendar → Calendar settings (gear icon) → Connect to another website → Export Calendar |
| Booking.com | Calendar → Sync calendars → iCal URL |
| Vrbo | Calendar → Export calendar → copy the URL |
| Google Calendar | Calendar settings → Integrate calendar → Secret address in iCal format |
| Apple Calendar | Right-click the calendar → Share calendar → Public calendar URL (note: requires you to make it public) |
Copy the URL — you'll paste it into Cabintale next. Each calendar gets its own URL.
Step 2: Open Connected calendars
Sidebar → Places → your property → Connected calendars (iCal) tab.
The first row, labeled Direct, is your outgoing feed (covered in iCal export (Subscription link)). Below it is the Add iCal button.
Step 3: Add a calendar
Click Add iCal. A modal opens asking for:
- Title — your label for this calendar (e.g. "Airbnb", "Booking.com — Mountain View"). Required.
- iCal URL — the URL you copied in Step 1. Required.
- Color — pick one of six presets (red, blue, teal, orange, grey, dark grey). Bookings imported from this calendar show in this color on your calendar grid, so you can tell sources apart at a glance.
Click Add. The new calendar appears in the table.
The first sync is not automatic. Click the Sync button on the row to pull in bookings the first time.
Step 4: Run the sync
Click Sync on the row. You'll see one of two things:
- "iCal synced successfully! Created: 5, Updated: 0, Removed: 0" — the sync pulled in 5 bookings.
- "Failed to sync iCal: …" — something went wrong. See troubleshooting below.
The Last sync column updates to the current timestamp.
How sync actually works
Every booking from each platform has a unique ID (the iCal UID). Cabintale uses this to keep things consistent across syncs:
- New events in the feed → new bookings created in Cabintale.
- Existing events with changed dates → matching bookings updated.
- Events removed from the feed → matching upcoming bookings removed. Past bookings are preserved so your history stays intact.
- Cancellations (
STATUS:CANCELLEDor "Not available" patterns) → skipped.
Cabintale auto-detects whether the feed comes from Google, Airbnb, or a generic source — Airbnb's iCal includes the checkout day in DTEND; Google's excludes it. The parser handles both correctly.
Sync frequency
- Manual: click Sync any time. Rate-limited to 1 per calendar per minute, so don't hammer it.
- Scheduled: if your environment has the cron job set up, all calendars sync automatically (typically every few hours).
- Reality check: even if Cabintale syncs every 15 minutes, Airbnb only refreshes its iCal feed every 6–24 hours. Booking.com is faster (1–4 hours); Vrbo is daily; Google is closest to real-time. The sync is only as fresh as the upstream feed.
Editing or deleting a calendar
You can edit the title, URL, color, and active flag at any time. Toggling active off pauses imports without losing the connection.
When you click Delete, you'll see a modal asking what to do with the bookings already imported from this calendar:
- Keep bookings (change source to direct) — they stay in Cabintale, but they're no longer marked as coming from this iCal.
- Delete bookings — they're removed.
Past bookings can't be deleted; they always stay (with their source switched to "direct").
What about double-booking on the same date?
If two iCal feeds report bookings on overlapping dates, the most recently synced one wins for the overlap. This is rare in practice — if it's happening, something is wrong upstream (e.g. you accidentally connected two calendars from the same Airbnb listing).
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| "Failed to fetch iCal. HTTP 404" | The URL is wrong, or the platform regenerated its private URL | Re-copy the URL from the platform; some platforms (Booking.com in particular) regenerate periodically |
| "Rate limited by iCal provider" | Too many sync attempts in a short window | Wait 10–15 minutes. Reduce how often you click sync |
| "This URL is blocked" | URL points at a private/local IP — Cabintale blocks these to prevent scanning | Use the platform's public iCal URL; private/internal calendar servers won't work |
| Bookings appear one day off | Time zone mismatch between the feed and your property | Check that your property's Time zone (Property basics) matches the property's actual location |
| First sync shows 0 created, but I know there are bookings | The feed has no VEVENT blocks (empty calendar), or all events have STATUS:CANCELLED | Open the iCal URL in a browser — the file should contain BEGIN:VEVENT lines. If not, the issue is upstream |
| I deleted an iCal calendar by mistake and chose "Delete bookings" | This is irreversible — those bookings are gone from Cabintale | Re-add the iCal — bookings will re-import on the next sync, as long as they're still in the upstream feed |
Related guides
- iCal export — iCal export (Subscription link)
- Availability calendar — Availability calendar