Summary
When a host reschedules a booking, this now checks if the guest (attendee) is a Cal.com user. If they are, the system fetches their availability and only shows time slots when BOTH the host AND the guest are available.
Problem
As described in #16378, when a host reschedules a booking, the current system doesn’t consider the guest’s availability - it just shows the host’s available slots. This can lead to hosts choosing times when the guest is actually busy.
Solution
-
When rescheduleUid is present in the slot calculation:
- Fetch the original booking with attendees
- Check if any attendee is a Cal.com user (by email lookup)
- If yes, fetch their availability for the date range
- Intersect host availability with guest availability
- Only return time slots where both parties are free
-
Graceful degradation:
- If guest is not a Cal.com user: show all host’s available slots (current behavior)
- If availability fetch fails: fall back to host-only availability
- Logged for debugging without blocking the flow
Changes
- Added _getGuestAvailabilityForReschedule helper method in AvailableSlotsService
- Integrated availability intersection in _getAvailableSlots after aggregated availability is calculated
Testing
- Host reschedules with non-Cal.com guest: shows all host slots (unchanged)
- Host reschedules with Cal.com guest: shows only mutual availability
- Error handling: graceful fallback on failures
Closes #16378
/claim #16378
Found this helpful? Buy me a coffee