Skip to main content

Introduction

The Cal.com integration lets the agent book appointments directly during a phone call. When the caller wants to schedule, the agent invokes the book_appointment action - without hanging up.

Supported templates

Cal.com bookings are available in templates including:
  • Beauty salon / hairdresser
  • Restaurant (table reservations)
  • Healthcare (clinic appointments)

Enabling bookings

1. The onboarding toggle

When creating an agent from a template, enable “Cal.com bookings” in the form. The agent will be configured with the book_appointment action right away.

2. Connecting your Cal.com account

After creating the agent:
  1. Go to the agent’s Integrations tab.
  2. Find the Cal.com section.
  3. Provide your Cal.com API key and the Event Type ID.
  4. Save the configuration.
The connection is created once on the Integrations page and only selected in the agent, so one Cal.com account can serve many agents. The Event Type ID is the number in the URL while you edit the event type in Cal.com (app.cal.com/event-types/**4034029**). Set Host Timezone to the calendar’s own timezone, e.g. Europe/Warsaw - the caller states a local time and Cal.com expects UTC.

3. Action configuration

  • Event type - which Cal.com event to book (e.g. “Haircut”, “Consultation”, “Table reservation”).
  • Required data - the agent collects the caller’s details (name, phone, email, preferred time) before booking.
  • Confirmation - what the agent says after a successful booking.

What it looks like in a call

  1. The caller wants to book (e.g. “I’d like to book a haircut on Friday”).
  2. The agent collects the required details (name, contact, time).
  3. The agent invokes the book_appointment tool.
  4. The platform calls the Cal.com API with the collected data.
  5. The agent confirms the booking details.
  6. The booking appears in your Cal.com dashboard.

The phone number and the date

Two things used to sink a booking after the agent had already told the caller it was done. The attendee’s phone. A Cal.com event type can mark the attendee phone required, and a booking without one is then refused. The number is taken, in order, from what the caller gave the agent, the number they are calling from, and whatever the agent collected earlier in the conversation. That last path is the one that matters for calls from the website widget, which have no caller id at all. If no number can be found, the agent is told to ask for one and book again - and does so while still on the call. The date. A language model has no clock, so asked about “Friday” it will pick a year out of the air. The booking tool is given today’s date in the calendar’s timezone, and a booking in the past is refused with today’s date in the message, so the agent re-asks instead of spending the caller’s time. In prompts you can also use {{today}} - see Template variables.

Anti-hallucination guardrail

With bookings enabled, the agent is instructed to book only through the official tool - it never “pretends” to have booked something without an actual API call.

Troubleshooting

See also