Bug Description
getBusyTimes only queries bookings with status: BookingStatus.ACCEPTED when computing busy slots. Bookings in PENDING status (created by requiresConfirmation: true event types) are invisible to the availability check. Two users can book the same slot simultaneously, both pass the availability check, and both create PENDING bookings for the same organizer time slot.
Affected file
packages/features/busyTimes/services/getBusyTimes.ts (line 81) — busy-time query uses status: BookingStatus.ACCEPTED only:
where: { status: BookingStatus.ACCEPTED, ... }
Fix
Include BookingStatus.PENDING alongside BookingStatus.ACCEPTED in the busy-time filter for event types that have requiresConfirmation: true, so pending bookings hold the slot tentatively.
Related
Environment
cal.com main branch (2026-08-13).
Bug Description
getBusyTimesonly queries bookings withstatus: BookingStatus.ACCEPTEDwhen computing busy slots. Bookings inPENDINGstatus (created byrequiresConfirmation: trueevent types) are invisible to the availability check. Two users can book the same slot simultaneously, both pass the availability check, and both createPENDINGbookings for the same organizer time slot.Affected file
packages/features/busyTimes/services/getBusyTimes.ts(line 81) — busy-time query usesstatus: BookingStatus.ACCEPTEDonly:Fix
Include
BookingStatus.PENDINGalongsideBookingStatus.ACCEPTEDin the busy-time filter for event types that haverequiresConfirmation: true, so pending bookings hold the slot tentatively.Related
Environment
cal.com main branch (2026-08-13).