Summary

  • When a host reschedules a booking, the system now looks up attendees/guests by email to check if they are Cal.com users
  • If a guest is a Cal.com user, their calendar busy times and booking conflicts are fetched using the existing availability service
  • Only time slots where ALL participants (host + Cal.com user guests) are available are displayed during rescheduling
  • Non-Cal.com guests are unaffected (their availability cannot be checked)

Changes

  • packages/features/bookings/repositories/BookingRepository.ts: Added findAttendeeEmailsByUid method to retrieve attendee emails for a booking by its UID
  • packages/features/users/repositories/UserRepository.ts: Added findManyByEmailsForAvailability method to find Cal.com users by email with data needed for availability checking
  • packages/trpc/server/routers/viewer/slots/util.ts: Added filterSlotsByGuestAvailability private method to AvailableSlotsService that checks guest availability during rescheduling, and integrated it into the _getAvailableSlots flow

How it works

  1. When rescheduleUid is present in the slot calculation request, the system fetches the booking’s attendees
  2. Attendee emails are looked up against the Cal.com user database (only verified, non-locked users)
  3. For each Cal.com user guest found, their availability is computed using getUsersAvailability
  4. All guest busy times are collected and used with checkForConflicts to filter out unavailable slots
  5. Early returns at each step ensure no unnecessary work is done (e.g., no guests, no Cal.com users among guests, no busy times)

Test plan

  • Host reschedules a booking where the guest is a Cal.com user with calendar events – only slots where both host and guest are free should appear
  • Host reschedules a booking where the guest is NOT a Cal.com user – all host-available slots should appear (no change in behavior)
  • Host reschedules a booking with multiple guests, some of whom are Cal.com users – slots should respect availability of all Cal.com user guests
  • Attendee reschedules their own booking – all slots should appear as before (this feature only applies when rescheduleUid is present in the slot query)

/claim #16378

🤖 Generated with Claude Code

Claim

Total prize pool $200
Total paid $0
Status Pending
Submitted February 17, 2026
Last updated February 17, 2026

Contributors

28

285729101

@285729101

100%

Sponsors

CA

Cal.com, Inc.

@cal

$200