Configure your working hours and when you’re available for bookings
Availability in Cal.com defines when you can accept bookings. You create schedules that specify your working hours, then assign those schedules to event types or use them as your default.
Availability rules: Specific time ranges for each day
Date overrides: One-time exceptions for specific dates
Time zone handling: Automatic conversion between time zones
// From schema.prisma:969model Schedule { id Int @id userId Int name String // e.g., "Working Hours", "Limited Availability" timeZone String? // Optional: override user's time zone availability Availability[] // Time ranges for this schedule}
You can create multiple schedules and switch between them for different event types or time periods.
Time ranges are stored in the schedule’s time zone (or user’s time zone if not specified). Cal.com automatically converts them for bookers in different time zones.
If an availability rule has a specific date, it takes highest priority
2
Event type availability
If the event type has custom availability (not linked to a schedule)
3
Event type schedule
If the event type is linked to a specific schedule
4
User default schedule
The user’s default schedule
// From User schema.prisma:432-433user: { schedules: Schedule[], defaultScheduleId: 1 // Which schedule is default}// From EventType schema.prisma:232-233eventType: { schedule: Schedule?, scheduleId: 1 // Override user's default for this event type}
Create one-time exceptions to your regular schedule:
// Date override for a specific day{ date: "2024-03-15", // March 15, 2024 days: [5], // Friday (though date takes priority) startTime: "10:00:00", endTime: "14:00:00" // Only available 10am-2pm this day}// Block a specific date entirely{ date: "2024-03-20", // No time ranges = completely unavailable}
Date overrides are useful for holidays, vacation days, or days with different working hours.
// User's time zone (from User schema.prisma:417)user: { timeZone: "America/New_York"}// Schedule-specific time zone (from Schedule schema.prisma:977)schedule: { timeZone: "America/Los_Angeles" // Override user's time zone}// Event type time zone settings (from EventType schema.prisma:195, 203-204)eventType: { timeZone: "UTC", // Display in specific time zone lockTimeZoneToggleOnBookingPage: true, // Prevent booker from changing lockedTimeZone: "America/Chicago" // Force specific time zone}
// From EventType schema.prisma:196-202eventType: { periodType: "RANGE", periodStartDate: "2024-03-01", periodEndDate: "2024-06-30", // Only accept bookings between March 1 and June 30}