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. 1

    Open Creator

    In the dashboard sidebar, choose Creator, then New โ†’ Flow. Name it Appointment Intake.

  2. 2

    Pick a voice and model

    Flows use the same voice and model settings as Agents. Defaults are fine for a first build.

  3. 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.

yaml
- 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: 2
Validation types do real work. datetime resolves "next Tuesday afternoon" into an ISO timestamp in the workspace timezone, so your tool node receives clean data.

Step 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.

yaml
- 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_desk

Step 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. 1

    Publish the draft

    Click Publish. Katexs validates the graph and lists any node without a reachable path or missing fallback edge.

  2. 2

    Assign a number

    In the Deploy tab, attach an inbound number, or point an existing number's routing at this Flow.

  3. 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.