Before you start
1) Connect your scheduling tool
Go to Integrations and connect your scheduler so it is available in both:- Agent Builder -> Speak node -> Actions
- Automations -> Steps (Automation actions)

Integrations screen with Calendly and Cal.com connected
Key building blocks (how v1.8 scheduling works)
Variables (capture the caller’s date/time)
Variables extract immediately after the caller’s latest reply and before outcome evaluation, so your routing can validate the date/time right away. If you loop back to the same node, variables re-extract and overwrite prior values (perfect for “try again” date collection). See Loops.
Variables panel with a "preferred_datetime" variable configured
Actions (run scheduling mid-call)
In v1.8, Actions run mid-call from a Speak node. When Actions exist, the node can auto-proceed without waiting for another caller reply, and rule-based outcomes are recommended because outcomes fire based on internal values/results.
Speak node Actions panel with a scheduling action selected
Calendly timezone handling (important)
Calendly Actions accept an optionaltimezone. If not set, Thoughtly falls back to:
- timezone input (action config) -> 2) agent timezone (advanced settings) -> 3)
America/New_York.
Pattern A (recommended default): Caller picks a date/time, then book it
Flow overview
- Ask for preferred date/time (Speak -> Prompt)
- Extract
preferred_datetime(Variable) - Validate (Outcomes -> loop if invalid)
- Book (Speak node with Scheduling Action)
- Confirm (Message / Prompt)
- Fallback (offer alternatives or Transfer)
Step-by-step (Agent Builder)
Step 1 - “Collect date/time” Speak node
Create a Speak node that asks something like:- “What day and time works best for you?”
- “If you have a timezone preference, tell me as well.”
preferred_datetime(Text)preferred_timezone(Text, optional)
Step 2 - Validate and loop (Outcomes)
Add prompt-based Outcomes from the same Speak node:- If the caller did not provide a time -> self-loop back to this node (“Sorry - what date and time?”)
- Else -> continue to booking

Outcomes rules showing self-loop and success path
Step 3 - Booking Speak node (Actions)
Create a new Speak node:- Message: “One moment while I book that for you.”
- Add an Action for your scheduler (Calendly or Cal.com) and map:
- Date/time input:
preferred_datetime - Timezone:
preferred_timezone(or rely on the Calendly fallback order)
- Date/time input:

Calendly "Schedule appointment" action mapping fields
Step 4 - Confirm vs error (rule-based Outcomes after booking)
In the same booking node, add rule-based outcomes that check Action outputs such as:booking_status == "confirmed"-> confirmation node- Else -> error-handling node (try different time / get availability / transfer)
Step 5 - Confirmation Speak node
Use Message mode if you want an exact script:- “You’re all set for [date/time]. You’ll receive a confirmation shortly.”

Confirmation node with verbatim message enabled