Documentation / Calendar

Scheduling with the Calendar

Let people book time with you, from a link, the API, or an agent on a call.

Last updated:

The Calendar lets people book appointments with you. You create bookable event types, set your availability, and share a link, or let one of your agents book on a call. Every booking, whoever makes it, goes through one place, so the same slot can never be taken twice.

The pieces#

  • Member: a bookable person or resource (a doctor, a stylist, "the reception desk"). A member does not need a login.
  • Event type: something people can book with a member (a "30-min consultation", a "dental cleaning"). Each offers one or more durations and points at an availability schedule.
  • Availability: the weekly hours a member is bookable, in their timezone. Without it, nothing is bookable, so set this first.
  • Booking: one reserved meeting. It has a reference id and shows up under Bookings.

Each area is its own page in the Calendar menu: Event Types, Availability, Bookings, Insights, Reminders, Webhooks, Roles & permissions, Integrations, and Docs.

Set it up#

  1. Open Calendar in the console and pick or add a member.
  2. On the Availability page, choose the timezone and the weekly hours, then Save. (This is the step that makes slots appear.)
  3. On the Event Types page, create an event type - a title and one or more durations (e.g. 15, 30, 60 minutes).
  4. Each event type shows a booking link. Copy it or open it to see the public booking page: a month grid, the open times, and a short form.

Event types#

The event-type editor has tabs:

  • Setup - title, description, durations, and a location (in person, phone, or a link).
  • Availability - which schedule this event type uses (the member's default, or a specific named schedule).
  • Limits - buffers before and after each booking, the minimum notice required to book, a booking window (how far ahead people may book), and booking limits (a cap on how many of this event type can be booked per day, week, or month). Leave a limit at 0 for no cap.
  • Questions - extra questions the booker answers when booking (short text, long text, a dropdown, or a checkbox), on top of name/email/phone. Mark any as required. Answers are saved with the booking and shown under Bookings.
  • Advanced - make the event type recurring by default, require confirmation (every booking is held until a team manager approves it), mark it hidden (kept off the public list), or flag it as containing health information (PHI). For a hidden event type you can generate a private link: a secret booking link that is the only way to reach it. Rotating the link revokes the old one.

You can duplicate an event type, grab its embed code, or delete it from the list.

Availability & schedules#

A member can have several named schedules (for example "Working hours" and "Summer hours"), with one marked as the default. Each schedule has:

  • Weekly hours - the days and times bookable, in the schedule's timezone.
  • Date overrides - block a specific date, or give it different hours; an override wins over the weekly pattern for that day.

Create, rename, set-default, or delete schedules from the Availability page. Event types then point at whichever schedule you choose.

Out of office is set once per member on the same page and blocks a whole date range (holidays, leave) across every schedule that member uses. No bookings land on those days.

Holidays work like out of office, but as reusable lists. The Greek national holidays, including the movable ones that follow the Orthodox Easter, come built in: select them for a member as they are, or clone them into a list of your own so you can add or remove days. You can create as many lists as you need (for example national holidays plus a clinic's local feast days) and pick which lists apply to each member; a member can use several lists at once. Every date on an applied list is excluded from availability: no slots are offered and no booking is accepted.

Bookings#

The Bookings page groups bookings into Upcoming, Past, Pending, and Cancelled. On each booking you can reschedule, reassign it to another member, or cancel it - and confirm or reject ones that are awaiting approval. You can also mark a booking as a no-show when the person did not turn up (this keeps the time as booked but counts toward the no-show rate in Insights), and add internal notes: private notes for your team, expanded from the booking row, that the person who booked never sees.

Approval (requires confirmation)#

Turn on Requires confirmation on an event type when a person should approve each booking before it is final. A booking then lands as Pending: the slot is held (so nobody else can take it), but the calendar invite and the reminder are sent only once it is confirmed. The booker sees an "awaiting approval" message. Confirm and reject are limited to the team manager and calendar admin roles (set on the Roles & permissions page); rejecting frees the slot. Until you assign any roles, every console user can confirm or reject.

Booking on a call#

Attach the calendar to an agent (set calendar_id on the agent, or attach it in the console). The agent then gets four built-in tools automatically:

  • check_availability: reads open times before offering any.
  • book_meeting: commits the booking (name + phone is enough on a call; no need to spell an email).
  • manage_booking: cancels or reschedules an existing booking by its reference.
  • reassign_meeting: moves a booking to another member offering the same service.

The agent books through exactly the same place the web page does, so a call and a web visitor can never double-book the same slot.

Add it to your website#

From an event type, the Embed action gives you copy-paste code in four styles: inline (loads the booking page in your page), a floating pop-up button, a pop-up on click of your own element, and an email card. You can set the theme, hide the event details, and pick the language.

From your own code#

Use the API and SDK (or the calendar command in the CLI) to list event types, read open slots, and book, cancel, or reschedule. The API reference tab on the Docs page lists every endpoint with a Try it runner.

Notifications & calendars#

When an attendee gives an email, they receive a confirmation with a calendar invite attached; a cancellation sends a cancel update. Connect Google Calendar or Microsoft Outlook (on the Integrations page) so bookings appear there and your existing events block your slots automatically. Each member can connect either or both.

Video calls#

Set an event type's location to Video call and every booking gets a meeting link automatically from the member's connected calendar: a Google Meet link on Google, a Microsoft Teams link on Outlook. The link appears on the booking confirmation page, in the confirmation and reminder emails, and on the booking in the console.

You can also be notified yourself: on the Reminders page, list notification recipients and every new booking (and every booking awaiting approval) emails each address - your main account email, the front desk, anyone (up to 10).

Calendar emails can leave through your own mail server with your own From address: the calendar uses the AI application's SMTP settings when you have set them, or you can give the calendar its own SMTP server on the same page. With neither configured, the platform sender delivers the emails.

Webhooks (its own page in the Calendar menu) push every booking event to a URL you choose, each request signed. You can send a test, watch the delivery log for each subscription, and replay a past delivery.

Reminders & repeating meetings#

You can send a reminder before a meeting: the attendee gets a reminder email (and a webhook fires) ahead of the start. Set up repeating bookings (weekly check-ins, ongoing sessions) - each occurrence is a real booking you can change or cancel on its own.

Insights#

The Insights page shows, for a member and a date range, total bookings, how many were cancelled and the cancel rate, how many were no-shows and the no-show rate, a by-day trend, and a breakdown by event type.

The console

These pages are read only. The test call, the API keys and the live API reference are in the console, where your account is signed in.

Open the console