Skip to content

PROJECT // CASE_FILE

Bookable Calendar

A Drupal module for recurring availability and reservations, with safe concurrent booking, owner-managed schedules, Google Meet and Microsoft Teams links, external calendar sync, and optional Commerce checkout.

Bookable Calendar is a Drupal module for publishing recurring availability and letting people reserve time, spaces, lessons, appointments, or other limited-capacity openings.

Bookable Calendar 3.0

The 3.0 line is a Drupal 11 and 12 rewrite centered on safe reservation writes. Every booking path uses the same transactional reservation manager, including forms, one-click booking, JSON:API, custom API endpoints, check-in, cancellation, and Views Bulk Operations. Persistent locks and in-transaction capacity checks prevent two requests from claiming the same final slot.

Version 3 also adds queued confirmation and cancellation messages, Single Directory Components, stronger API access rules, and optional Google Calendar and Microsoft Outlook synchronization. Reservations can create private external events without exposing one customer's details to another.

Available in 3.1

The 3.1.0 release tag includes inbound Google and Microsoft availability sync, which hides openings that overlap unrelated busy events and restores them when the conflict clears. The optional Drupal Commerce submodule adds per-calendar pricing, checkout, temporary capacity holds, and confirmation after payment.

Calendars can also opt into unique Google Meet or Microsoft Teams links for each reservation. Calendar ownership lets teachers and other schedule managers maintain their own calendars and opening rules through scoped permissions, while sensitive integration settings remain under separate administrative control.

In development: 3.2

The 3.2.x branch builds on that foundation with the tools customers and calendar owners need to manage appointments:

  • An owner workspace for reservations, with separate viewing, editing, cancellation, and attendance permissions.
  • Rescheduling within the same calendar that preserves reservation identity and checks capacity before releasing the original slot, plus independent customer cancellation and rescheduling policies.
  • A private reservation summary with meeting links, payment information, and an access-controlled .ics download.
  • Paginated availability with date filters, timezone selection, and a Next available action.
  • Optional reservation history, retained cancellation reasons, and check-in, completion, and no-show tracking.
  • Waitlists with private, expiring offers that hold capacity and use Commerce checkout when payment is required.

These workflows are still in development. Cancellation releases an appointment but does not automatically refund a payment, waitlist offers depend on cron and queue processing, and the .ics download is a single event rather than a live subscription. The workflow guide covers setup and current limitations.

Upgrading

Version 3 removes the legacy booking entity and consolidates each reservation into its Booking Contact record. Existing 2.x sites should read the upgrade guide, test against a recent database copy, and review any custom fields or Views that depend on the old data model.

View Bookable Calendar on Drupal.org or browse the 3.1 branch and 3.2 development branch.