Business — calendar

Appointment calendar

🔧 Operator-managed. The staff appointment calendar — creating, rescheduling, and cancelling appointments — is run by your Operator from their admin console. To book, move, or cancel an appointment on your behalf, contact your Operator. (Your customers can self-reschedule and self-cancel via the customer portal.)

The appointment calendar shows all appointments across all providers at a location in day, week, and agenda views. Operator-side actions include:

  • Create — pick service, provider, customer (existing or new), and date/time. For offline/bank-transfer deposits, staff with the right permission can mark the transfer as received once it clears (see Payment settings).
  • Reschedule — drag to a new slot or use the Reschedule action; the conflict check re-runs, the customer gets a reschedule email, and the ICS feed increments its SEQUENCE counter (RFC 5545).
  • Cancel — honour or override the deposit refund policy; the customer gets a cancellation notice; cancelled appointments stay visible (greyed out) in history.

Status flow

pending  →  confirmed  →  completed
             ↓               ↓
          cancelled       no_show
  • pending — awaiting deposit payment (when a deposit is required) or verification.
  • confirmed — slot is locked and the customer has a confirmation.
  • completed — appointment has finished; eligible for NPS/review request.
  • no_show — customer did not attend; the deposit is forfeited (if applicable).
  • cancelled — cancelled by staff or customer within/outside the cancellation window.

Recurring appointments

The recurrence engine (RFC 5545 iCalendar) is built and runs in the background — it generates appointment series up to 12 months in advance, capped at 200 occurrences, and respects exception dates (EXDATE). If a generated occurrence conflicts with an existing booking or schedule block, it is flagged as needs attention rather than silently dropped.

MVP note: there is no UI to create a recurring series in this release; the engine populates recurring appointments for the demo account and the feature will be surfaced later. Recurring schedule blocks (breaks, time-off) are maintained by your Operator ((Working hours).


ICS calendar feeds

/app → Calendar Settings (your self-service task)

Each provider has a private ICS calendar URL, available on the Calendar Settings page under Export / Subscribe. For each provider you can Generate / Regenerate the subscribe URL and Revoke it.

The feed includes:

  • Upcoming confirmed appointments (next 90 days by default).
  • Past appointments (last 30 days, so cancellations propagate).
  • Recurring occurrences.

Subscribe to the URL in Google Calendar, Apple Calendar, Outlook, or any RFC-5545-compatible client. The feed updates automatically — no re-import needed.

The ICS URL contains a secret token. Treat it like a password. If it leaks, use Revoke (or Regenerate) on Calendar Settings to invalidate the old URL.

Google Calendar push

On the same Calendar Settings page, the Google Calendar section connects a provider's Google account when your operator has added an OAuth client.

  • Connect Google Calendar sends that provider to Google. Calbok writes appointments to the account's primary calendar.
  • The connection does not read busy time. Personal commitments still go in as schedule blocks, or two bookings can land on the same hour.
  • Disconnect removes the stored grant. Events already on Google stay there.