Booking Appointments in a Call
Booking Appointments in a Call
Section titled “Booking Appointments in a Call”The Book appointment node lets an Aura voice agent schedule a meeting while the caller is still on the phone. The agent offers a few open times from your Switchboard booking calendar, the caller picks one (by voice or keypad), and the appointment is booked and confirmed on the call. When the caller’s email is known, the standard calendar invite (an .ics file) is emailed automatically — the same invite your website booking page sends.
Because the booking is done by a real node against the real calendar, the agent can truthfully say “you’re booked for Tuesday at 2 PM” — it never invents a confirmation. If nothing is available or the caller doesn’t choose, the node routes down a failure path you control, so the call never dead-ends.
What the node does, step by step
Section titled “What the node does, step by step”- Finds open times. It asks the calendar for the next available slots for the meeting type you chose (respecting lead time, working hours, and existing bookings).
- Offers them aloud. The agent reads out up to a handful of numbered times (“I have a few times available: 1, Tuesday, July 15 at 10 AM; 2, Wednesday, July 16 at 2 PM…”).
- Captures the pick. The caller says the number (or presses it on the keypad). If the answer isn’t clear, the agent re-offers once.
- Books it. The chosen time is held and written into the calendar as a draft appointment assigned to an available staff member.
- Confirms + invites. The agent confirms the time on the call; when it has the caller’s email, the calendar invite is emailed automatically.
- Routes on. On success the node takes the success edge (where you speak the confirmation); on no-availability / no-selection / a scheduling conflict it takes the failure edge.
Adding the node
Section titled “Adding the node”In the Flow Builder, add a Book appointment node from the node palette and connect it into your flow.
Select the node to open its settings in the inspector panel:
Settings
Section titled “Settings”| Setting | What it does |
|---|---|
| Meeting type | Which bookable meeting type / staff pool to offer, e.g. sales_demo. Must match a meeting type configured in your calendar settings. Supports {{variables}}. |
| Times to offer | How many open slots to read out (1–5). Three is a good default — enough choice without a long list. |
| How the caller picks | Say the number (the caller speaks “two”) or Press a key (DTMF keypad). Keypad is fully deterministic and works in Strict agents. |
| Caller email variable | A context path (e.g. vars.email) holding the caller’s email for the calendar invite. Leave blank to use the caller-ID → contact match — a recognized caller books with no extra questions. |
| Caller name variable | A context path (e.g. vars.name) for the caller’s name on the appointment. |
| Offer prompt | What the agent says to offer the times. Use {{slots}} where the numbered list should go. Leave blank for a sensible default. |
| No-availability line | What the agent says when there are no open times. Supports {{variables}}. |
| Save result to variable | The variable that holds the outcome (default booking). On success it is truthy and {{vars.<name>__when}} holds the booked time. Draw a success edge that checks this variable, plus a default edge for the failure path. |
Routing on the result
Section titled “Routing on the result”The node behaves like the Tool call and Send message nodes: it writes its outcome into the variable you named so your edges can branch on it.
- Success —
{{vars.booking}}is set, and{{vars.booking__when}}holds the confirmed time (e.g. Tuesday, July 15 at 10:00 AM). Speak it in a following Say node. - Failure —
{{vars.booking}}is empty and{{vars.booking__error}}explains why (no availability,no selection,slot_taken,calendar unavailable). Send this down a default edge.
Always add both a success edge and a default (failure) edge so no caller reaches a dead end.
A worked example: book a demo
Section titled “A worked example: book a demo”A short flow that greets the caller, captures their email, books a sales demo, and confirms it:
Start └─ Say (fixed): "Thanks for calling — I can get a demo on the calendar for you." └─ Verified collect → variable: email (field type: email) prompt: "What's the best email for the invite?" └─ Book appointment meeting type: sales_demo times to offer: 3 how the caller picks: Say the number caller email variable: vars.email save result to variable: booking ├─ edge: Compare — vars.booking exists → Say (fixed): │ "You're all set for {{vars.booking__when}}. I've emailed │ your invite. Talk soon!" → Hang up └─ else edge → Say (fixed): "I couldn't lock that in just now — I'll have someone reach out to schedule." └─ Open ticket (or Send message) → Hang upThings to notice:
- The Verified collect node captures the email accurately (with a read-back), and the Book appointment node uses it (
vars.email) as the invite attendee. - The success edge checks
vars.bookingand speaks{{vars.booking__when}}— the real booked time, not a guess. - The else edge handles no-availability / no-selection gracefully — here it opens a ticket so a human follows up.
Strict agents
Section titled “Strict agents”Set How the caller picks to Press a key (keypad) to keep the node fully deterministic — no AI is used to interpret the choice, so Book appointment is safe to use in a Strict agent (compliance scripts, DTMF menus).
Good to know
Section titled “Good to know”- The appointment is created as a draft assigned to an available staff member, and appears in your Switchboard calendar. The calendar invite is emailed to the caller immediately when their email is known.
- No double-booking. The slot is held the moment the caller picks it. If someone grabs the same time in the split second between the offer and the booking, the agent re-offers fresh times once.
- No fake confirmations. If the calendar is unreachable or nothing is available, the node fails cleanly down its failure edge — the agent will never claim a booking that didn’t happen.
- Previewing a flow in the builder uses simulated times and a simulated booking, so testing your flow never creates a real appointment or emails anyone.
Related pages
Section titled “Related pages”- Flow Builder Concepts — Say vs Collect, branch conditions, strict mode.
- Building & Editing Agents — every tab and field in the builder.