
Appointment Booking Suite: Google & Outlook Sync
Appointment booking with calendar sync: a subscription link for staff without an Odoo login, and their own calendar read back to block slots.
Available for Odoo 16.0, Odoo 17.0, Odoo 18.0, Odoo 19.0. Technical name bambooforge_booking_calendar_sync.
Appointment Booking Suite: Google & Outlook Sync
An add-on for BambooForge Booking Pro, for the staff who will never have an Odoo login.
What Odoo already does
Odoo Community ships google_calendar and microsoft_calendar, and Booking Pro already refuses a slot when a staff member's Odoo user has a calendar event in the way.
If your staff are Odoo users, connect their accounts in their own preferences. That is free, it is two-way, and this module does not try to sell it to you again.
What this adds
The freelance trainer, the visiting dentist, the photographer who works Thursdays - none of them are Odoo users, and none of them will be.
A subscription link
On the staff member's form, Create a subscription link. It produces a URL ending in .ics: paste it into Google Calendar ("From URL"), Outlook ("Subscribe from web"), Apple Calendar or a phone. Their bookings appear and keep updating, because that is what a subscribed calendar does.
Revoke the link stops every calendar that has it - for the day a phone is lost. A revoked link and a wrong link answer identically.
Their calendar, read back
Paste the secret iCal address their own calendar publishes:
Google Calendar - Settings for my calendars → Secret address in iCal format.
Outlook / Microsoft 365 - Settings → Calendar → Shared calendars → Publish a calendar → ICS link.
Apple iCloud - share the calendar publicly and copy the webcal address.
Events found there block slots. Odoo never writes to that calendar: the sync is one-way in, one-way out, and nothing of yours ends up in their personal diary.
Refreshed every fifteen minutes. A calendar checked once a day is a double booking waiting to happen.
What the reader understands
Deliberately small, and deliberately explicit about it:
Understood |
Not understood |
|---|---|
Timed events with a zone |
Monthly and yearly repeats - imported as a single event rather than expanded wrongly |
All-day events, in the |
Exceptions to a repeat (EXDATE) - the |
calendar's own zone |
occurrence stays blocked |
Cancelled events (skipped) |
Attendee status: an invitation you have not answered still blocks |
Events marked free |
Attachments, alarms, anything not a time |
(skipped) |
|
Daily and weekly repeats, |
|
with COUNT and UNTIL |
A wrong busy block silently costs a booking; a missing one costs a manual check. Where the two conflict, this errs towards blocking.
Housekeeping
Imported busy time older than two days is deleted by the standard autovacuum.
A pull replaces that member's imported blocks - no duplicates build up.
A calendar that fails to answer is reported on the staff form and does not stop the other members from being refreshed.
Support
support@bambooforge.dev - the people who wrote it.
Screens


