Skip to content

Calendar Booking

Iron’s native scheduler is a first-party booking engine. It owns calendars, event types, availability, slot computation, and booking, and it produces the same appointment activity and automation cascade as the legacy Cal.com path — so automations keep firing either way.

  • Calendar — a bookable resource owned by a subaccount. Types include round-robin and service-menu calendars, plus resource (room / equipment) calendars.
  • Event type — a bookable meeting definition (duration, buffers, min-notice, location, and round-robin member set).
  • Availability — per-member schedules; the slot engine intersects them for collective events and rotates round-robin priority for round-robin events.
  • Booking — a confirmed appointment. Writes a kind='appointment' activity.

The slot engine handles per-slot and per-day caps, separate pre/post buffers, min-notice, and is DST-safe.

On book / reschedule / cancel, the engine:

  • Sends a best-effort confirmation SMS.
  • Emails the booker and the host a confirmation carrying a .ics calendar invite (a reschedule updates the same calendar entry; a cancel withdraws it).
  • Attaches a meeting link — a per-booking Google Meet link when configured, falling back to a deterministic Jitsi room so every booking always gets a working link.

A member can opt in to external-calendar sync. When enabled, the engine reads that member’s real Google busy intervals (free/busy) and folds them into slot computation — so a slot overlapping a real event is hidden — and pushes a real event to the member’s calendar on book (patching on reschedule, deleting on cancel). Everything is fail-open: a missing scope, account, or API error falls back to manual-window availability and never blocks booking.

Public, slug-keyed booking is served under /public/scheduling/* (slot lookup, book, and single-use reschedule / cancel tokens) with no org enumeration. See the Calendar & Scheduling API.