What a voice agent that books appointments does
It answers the call, works out which day the person wants, checks which slots are free in your Cal.com and offers a time that actually exists. When they accept, it books the appointment in your calendar without hanging up.
It does not work from a list of times written into the prompt. It checks your calendar in the moment, so it only offers what is free when they call.
At a dental clinic, for example, the patient asks for Thursday, hears a free time, says the afternoon would suit better and the agent offers a free afternoon slot. The appointment shows up in Cal.com with their name and phone number, like any other booking.
What you need before you start
A Cal.com account with at least one event type. That is the kind of appointment your agent will book, with its length and your availability, and each agent books into one.
A Cal.com API key. You create it in Cal.com under Settings → Developer → API keys by clicking “Add”, and it is worth setting it to never expire so it does not stop working one day out of the blue.
And your voice agent in Lera, either single prompt or conversation flow. The calendar connects the same way in both.
How to connect it, step by step
Open your agent in Agents and go to Tools. Click Add and choose “Connect calendar (Cal.com)”. It is connected on each agent, not under Integrations.
Paste your API key and click “Fetch”. The panel reads your event types and shows them in a list, so you do not have to hunt for any ID.
Choose the appointment type and the time zone. If you like, write what the agent says while it checks the slots and while it books. Leave them empty and it uses a default sentence in the agent’s language.
Click Connect. Your agent now has two new functions, one that checks availability and one that books the appointment, both with the same settings.
If you want it to read the details back before booking, go to Behaviour and turn on “Read back before booking”. The agent runs through day, time and phone number and waits for a yes before creating the appointment. It adds one turn to the call, and in return the caller can fix a detail before it lands in your calendar.
Single prompt or flow, what changes
In a single prompt agent, the prompt sets the goal and the steps. It works well to say that the call does not end until the appointment is booked or the person says they do not want one, followed by the steps in order. Understand what they need, ask for the day, check that day’s slots, offer one time at a time, collect whatever is missing and book.
In a conversation flow agent, attach both functions to a Subagent node, the one that talks and can also call functions. Its prompt says how to work, check before offering anything, one time at a time and never confirm the appointment until the booking has responded. Then leave a single exit to the End node, with the condition that the booking is done.
In both cases there is no need to write today’s date or how to work out “next Tuesday”. The engine adds that.
What the agent handles on its own
It checks the calendar before saying any time and checks again every time the person changes day. A time that did not come out of a check is never offered.
It has today’s date and a calendar of the next two weeks in front of it, so it understands “tomorrow”, “Thursday” or “next week” without you explaining anything.
If someone asks for a time that is taken, it gets the nearest free ones. If they ask for a window, like the afternoon, it only looks at times inside it. And if the day is wide open, it does not read out the whole list, it sums it up.
It can only book a slot that a check returned, and the slot is confirmed as still free before booking. It never treats the appointment as done until Cal.com confirms it, and it does not hang up with the booking half finished.
What to know
Cal.com receives the name and the phone number. The reason for the visit, the address or anything else you collect with the agent’s Post-call analysis, and it stays in the history of each call.
If your business needs another detail to give an appointment, have the prompt ask for it before offering a time. The agent books as soon as it has day, time, name and phone, and anything the booking does not carry may go unasked.
Write in the prompt what the agent has to do, like “book the visit”, not the outcome, like “leave the visit booked”. What the agent reads it ends up saying, and it could announce the appointment as done before it is.
Before opening it to your customers, call it yourself and book a test appointment. You will see it appear in your Cal.com and know the event type and the time zone are the right ones.
Frequently asked questions
What if the day they ask for is full? It says so and asks about another day. Before offering a time on the new day, it checks the calendar again.
Do callers have to dictate their phone number? Not necessarily. If your prompt tells the agent to use the number they are calling from, with the {{caller_number}} variable, it asks whether it can use that one and, if the number is withheld, asks for it.
Does the caller get a confirmation email? Cal.com does not receive their email, only the name and phone number, so the confirmation is the one the agent gives at the end of the call, with the day and time.
Can it cancel or move an appointment? No. The agent checks and books, but it does not cancel or change existing appointments, even if asked. In a single prompt agent, when someone asks, it takes their name, phone number and the day of the appointment so your team can handle it.
What if my calendar is not in Cal.com? The built-in connector is Cal.com. With another calendar you can create your own functions, which call your system at your URL during the call. Cal.com comes with every plan, your own functions only with some.
How much does it cost to try? €20 free credit, no card needed. Connecting Cal.com has no extra cost in Lera, so you can test bookings against your real calendar from day one.