Flows
Flows Quickstart
Build a working appointment-booking Flow in Creator, test it in the browser, and publish it to a phone number. Fifteen minutes end to end.
Before you start
- A workspace โ Any plan. Testing in the browser does not consume call minutes.
- A calendar integration โ Google Calendar or GHL connected under Settings โ Integrations, if you want the booking step to be real.
- A phone number โ Only needed for the final step. Skip it and test in the browser instead.
Step 1: Create the Flow
- 1
Open Creator
In the dashboard sidebar, choose Creator, then New โ Flow. Name it Appointment Intake.
- 2
Pick a voice and model
Flows use the same voice and model settings as Agents. Defaults are fine for a first build.
- 3
Start from the Start node
Every Flow opens with a Start node already on the canvas. Everything you add hangs off it.
Step 2: Greet and collect
Drag a Say node onto the canvas and connect it to Start. Give it a line the agent can rephrase naturally. Then add two Collect nodes for the caller's name and preferred time.
- node: greet
type: say
text: "Thanks for calling {{business_name}}. I can get you booked in โ are you a new or returning patient?"
- node: collect_name
type: collect
variable: caller_name
prompt: "Great. Can I get your first and last name?"
validation: person_name
retries: 2
- node: collect_time
type: collect
variable: requested_window
prompt: "What day and time works best for you?"
validation: datetime
retries: 2Step 3: Add the booking tool
Drop a Tool node and select your calendar integration. Map the Flow variables onto the tool inputs. The node exposes three outgoing edges โ success, no availability, and error โ so you can handle each case with different copy.
- node: book
type: tool
tool: calendar.create_event
inputs:
title: "Appointment โ {{caller_name}}"
start: "{{requested_window}}"
duration_minutes: 30
edges:
success: confirm
no_availability: offer_alternatives
error: transfer_to_deskStep 4: Confirm and end
Add a Say node that reads the booking back, then an End node with the outcome tag booked. Outcome tags are what Data โ Dashboard groups by, so tag every terminal path.
Step 5: Test in the browser
Click Test in the top bar. The canvas highlights the active node as you talk, and the right panel shows collected variables and tool payloads in real time. Deliberately give a bad date and confirm the retry and fallback edges behave.
- Watch the highlight โ If the conversation stalls, the highlighted node is the one whose edges are wrong.
- Check the variable panel โ Empty variables after a Collect node mean validation rejected the answer silently.
- Open the tool payload โ Confirm the exact JSON your integration received before you go live.
Step 6: Publish
- 1
Publish the draft
Click Publish. Katexs validates the graph and lists any node without a reachable path or missing fallback edge.
- 2
Assign a number
In the Deploy tab, attach an inbound number, or point an existing number's routing at this Flow.
- 3
Place a real call
Dial in from your mobile. The transcript, recording, and variable bag land in Data โ Call Logs like any other call.
