Calendar & booking
Event types
A bookable service is backed by an event type (duration, hosts, scheduling mode, working hours). Availability is computed from hosts' working hours minus busy meetings.
Availability
- Working hours and blackout dates define when hosts can be booked.
- Capacity blocks (
crm_availability_blocks) close a whole date or cap bookings per day (e.g. holidays, max 3/day). Enforced at booking time; the storefront reads blocked dates to grey out the calendar.
Meetings & lifecycle
A booking is a meeting with a job lifecycle: scheduled → confirmed → in_progress → completed (plus rescheduled, cancelled, no_show). Payment lives on the order/invoice; job-state lives on the meeting.
Public & guest booking
- Public booking (
/public/book) creates a meeting for a guest (no login), with confirmation + reminder emails. - Guest booking (
/public/booking/create) books a priced service account-less — reserves the slot and issues an invoice (pay later), anchored to a CRM contact. - Holds reserve a slot during reserve-then-pay checkout; a partial unique index prevents double-booking.