Availability and calendar
Availability answers one question: at which moments are you bookable? Everything else — buffers, caps, notice — narrows that answer per event type.
Weekly hours
A schedule is a set of weekly windows: a weekday, a start and an end, in 24-hour time. You can add more than one window to a day, so a morning-and-afternoon split with a lunch break in between is two windows rather than one long one.
Windows on the same day cannot overlap, and a start must come before its end. The form says so rather than silently merging them, because two overlapping windows usually mean a typo.
Time zones
A schedule has its own time zone, and the hours you type are in it. Invitees are shown the same moments converted to theirs, which is detected from their browser and changeable on the booking page.
Because the stored hours are local times rather than fixed instants, “9 am” stays 9 am for you through a daylight saving change, and the invitee’s view shifts instead. That is the behaviour you want, and it is why a booking made in March for a date in November still lands where you expect.
Date overrides
Overrides handle the exceptions, and beat the weekly hours for that date:
- Different hours. Give the date a start and an end — a late finish for one Thursday, or a Saturday you are working.
- Unavailable all day. Leave the hours empty and nothing on that date can be booked.
A date can hold several windows, or one all-day block, but not both at once.
More than one schedule
You can keep several named schedules — “Working hours”, “Evenings”, “Conference week” — and point each event type at whichever one it should follow. One is your default, used by any event type that has not chosen.
Google and Microsoft calendars
Connect a Google or a Microsoft (Outlook) calendar on the Calendar page. Work, school and personal Microsoft accounts all work. Connecting does two separate jobs:
- Reading busy time. Busy events are subtracted from your open slots, so a meeting booked elsewhere cannot be double booked over.
- Writing bookings. Each booking becomes a calendar event, with a Google Meet link when the event type asks for one on a Google calendar, or a Microsoft Teams link when it is a Teams event type on a Microsoft calendar. Rescheduling moves it; cancelling removes it. On a Google calendar the invitee is a guest of the event; on a Microsoft calendar they are not, because Microsoft would email them a second invitation on top of CalFree’s confirmation. Their details are in the event’s description.
You can connect more than one calendar, at either provider or both. Each has its own switch for whether its busy time hides your open times, and exactly one is the destination where new bookings are written. With a single account connected, it does both.
Signing in with Google and connecting a calendar are deliberately separate steps. Signing in asks only for your name and email; calendar access is a second consent you give when you want sync.
Refresh tokens are encrypted at rest with AES-256-GCM before they touch the database. If Google revokes access — you removed the app, or the consent expired — CalFree pauses bookings and shows you a banner rather than accepting meetings it cannot put on your calendar.
None of this is required. Without a connected calendar, CalFree schedules purely from the hours you set, and you add the meetings to your own calendar from the .ics attachment on each confirmation email.
How a slot is decided
For each candidate start time, in order:
- It must fall inside a weekly window, or inside that date’s override.
- The whole meeting, plus its buffers, must fit without touching another booking.
- It must not overlap busy time on a connected calendar.
- It must be at least the minimum notice away, and inside the booking window.
- Its day and week must be under the event type’s caps.
The same function answers the booking page, the REST API and the MCP server, so all three agree. The final check happens inside the booking transaction, which is what makes two simultaneous bookings for one slot impossible rather than merely unlikely.