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.