A phone receptionist for a clinic that books, reschedules, and cancels appointments using Cal.com as the calendar.
Unlike Appointment management (Google Calendar), this template covers the full appointment lifecycle: it doesn’t just create appointments, it also finds, moves, and cancels existing bookings, and fetches the available appointment types automatically at the start of the call instead of having them fixed in the prompt.
What it does
It answers your patients’ calls, identifies which kind of appointment they need, checks the free slots in Cal.com, and books the appointment — or finds an existing appointment to move it or cancel it. It’s a single prompt agent in Spanish, with a close, serious tone aimed at medical appointment management. It never gives medical advice or disclaimers — it sticks to scheduling.The full template is six workflows. One runs automatically before the agent speaks; the other five are the tools it uses during the conversation.
How the call goes
- It greets and identifies the intent. It warns that the call may be recorded and asks what the patient needs: a new appointment, changing an existing one, or canceling it.
- New appointment. It asks for the appointment type (using the types fetched by Get event types) and the day. It calls
check_availability, offers the slot or two alternatives, asks for name and email, and confirms before callingcreate_appointment. - Reschedule. It asks for the email used to book, calls
find_appointmentto locate it, asks for the new day, checks availability for the same appointment type, and confirms before callingreschedule_appointment. - Cancel. It asks for the email, finds the appointment with
find_appointment, repeats the day and time out loud, and only cancels with an explicit yes — any hesitation from the customer stops the cancellation. - Special situations. If the patient describes urgent symptoms, it skips the normal flow and offers the first free slot of the day. If asked about prices, results, or anything outside scheduling, it says the team will look into it and doesn’t make up an answer. It never reads internal appointment or appointment-type identifiers out loud.
What you need
- A Cal.com connection
- The Get event types (Cal.com) workflow
- The Check availability (Cal.com) workflow
- The Create appointment (Cal.com) workflow
- The Find appointment (Cal.com) workflow
- The Reschedule appointment (Cal.com) workflow
- The Cancel appointment (Cal.com) workflow
Getting started
1
Create the agent
In Agents, click Create Agent, select the “Appointment management (Cal.com)” template, and click Use template.
2
Fill in the variables
<<agent_name>> and <<clinic_name>> each appear twice: in the Identidad (Identity) block and in the opening greeting of the Flujo de la llamada (Call flow) section. Change them in both places. <<sintomas_urgencia>> appears once, in Situaciones especiales (Special situations).3
Set up the six workflows
Create all six workflows from the Workflow section under Tools, or directly from this agent. Get event types goes in as a pre-call workflow; the other five are tools the agent calls by name —
check_availability, create_appointment, find_appointment, reschedule_appointment, and cancel_appointment — so the names must match exactly.All of them point at the same Cal.com account. If you use different accounts for checking and for booking, the agent will offer slots it can’t actually reserve.4
Check the time zone
Several workflows ship with
Europe/Madrid fixed. If you operate in a different time zone, check it in each one: Check availability, Create appointment, and Reschedule appointment.5
Mark start_date as required in Create appointment
The Create appointment (Cal.com) workflow ships with the appointment date as an optional parameter, when it’s actually required. Fix this before publishing.
6
Publish the workflows
Each workflow has to be published. If you skip this step, the agent won’t be able to use them.
7
Test and publish
Make a test call trying all three paths — new appointment, reschedule, and cancel — and check the changes show up correctly in Cal.com. Then publish the agent.
Before publishing
Keep in mind the following points when setting up your template:- Creating an appointment with no pre-check: if you want the workflow to re-check the slot right before booking (like reschedule and cancel already do), you’ll have to add it yourself; by default, Create appointment relies on Cal.com to reject an already-taken slot, and when that happens the agent is left with no response instead of an error message.
- Reschedule reason: if you want the reason for a reschedule recorded in Cal.com, you’ll have to add it; by default, Reschedule appointment always sends it empty, even though it does collect a reason for cancellations.
- Transferring to a person: add the transfer tool if you want the agent to be able to do this; by default, for anything outside scheduling it says the team will look into it, but it doesn’t transfer the call.
- Handling several languages: switch the language selector to Multilingual so the agent detects each patient’s language and replies in that same language. By default it only speaks Spanish.
- New appointment types in Cal.com: these show up on their own on the next call thanks to the pre-call workflow — no need to touch the prompt every time you add or remove an appointment type in Cal.com.
Next Steps
Get event types (Cal.com)
The workflow that prepares the call.
Check availability (Cal.com)
The workflow that queries the free slots.
Find appointment (Cal.com)
The step before rescheduling or canceling.
How to write prompts
If you want to modify the template’s prompt.

