Bookings & Schedules is CXF’s appointment-scheduling system. A host — a
Contact, a User, or a Content Instance — publishes its availability, offers one or
more bookable event types, and accepts appointments. Slot conflicts, durations,
buffers, frequency, and look-ahead windows are all enforced automatically. For the
mental model, see Core concepts.It’s built from three connected objects:
Schedule — the host’s availability calendar (weekly hours, date overrides,
timezone).
Booking Template — a bookable event type on a schedule (durations, title,
limits).
Booking — an actual appointment, optionally with guests.
Bookings & Schedules is an API-only feature — there’s no dedicated admin
screen. It’s consumed by booking and funnel
front-ends and by integrations through the API: fetch a host’s available slots,
create a booking, and let people manage their own bookings.
When a front-end asks for a host’s availability, CXF returns the free time
slots. It takes each day’s hours (the date’s override if there is one, otherwise
the weekday’s weekly hours), removes time taken by existing bookings (expanded by
the template’s buffers), and offers slots of the chosen duration. A slot drops out
once it reaches bookings_per_slot.Times are timezone-aware: bookings are stored in UTC and the response is
already converted to the requested timezone.
A booking moves through pending → confirmed, and can end as canceled,
completed, or missed. Only pending and confirmed bookings hold a
slot — the others free it.
A booking can carry a guest list (Contacts or Users). Through the
contact-facing API, people can list, cancel, and add guests to their own
bookings.
Schedules, booking templates, and bookings each have full CRUD. A per-host
availability endpoint returns free slots, and a contact-facing API lets people
create a booking and manage their own (cancel, add guests). See the
API reference.