Now inviting stores. Join the waitlist to hear the agent call you.

Join the waitlist

Search the docs

Find a docs page

API reference

Steps and scripts

Preview

A flow is a series of steps of five kinds (say, ask, confirm, action, end). Each has its lines per language, and branches pick what comes next.

A flow moves through a call one step at a time. Code decides which step comes next; the agent can't skip, reorder or invent steps. See How the agent follows a flow.

The five kinds of step

KindWhat happensHas
SayA line is spoken as writtenIts line per language
AskA question is spoken word for word, then the reply becomes a typed answerThe question, the answer type, branches by answer
ConfirmEarlier answers are read back and the shopper says yes or corrects themWhat to read back
ActionA holding line, then your system is asked to do somethingThe action, its values, branches by result
EndA goodbye, and the call's outcomeThe line and the outcome

The first step is always a fixed say step: the disclosure, saying who is calling and that the call is recorded.

A flow is built from steps: Say, Ask, Read back, Action and End.

An example: order verification

The library's Order verification flow, as Halden runs it:

StepKindWhat it doesNext
disclosureSay"Hi {customer_name}, this is {org_name}'s automated assistant, calling about your order {order_id}. This call is recorded."
good_timeAsk, yes or no"Do you have a minute to confirm it?" A no ends the call as not_now
placed_orderAsk, yes or no"You ordered {items} for {order_total}, to pay on delivery. Did you place this order?"no → cancel
address_correctAsk, yes or no"We'll deliver it to {address}. Is that right?"yes → confirm, no → new_address
new_addressAsk, text"What's the right address, with the area and city?"
confirm_addressConfirm"So the new address is {new_address}. Is that right?"
save_addressActionupdate_delivery_address, then confirm_orderrefused or no reply → team_end
confirmActionconfirm_orderrefused or no reply → team_end
cancelActioncancel_orderrefused or no reply → team_end
…_endEndGoodbye with the outcome: confirmed, address_changed, cancelled or needs_team

Lines, languages and placeholders

Every line is written once per language the flow speaks. {input_key} is filled from the run's inputs before the call (money is read in rupees), {answer_key} from an earlier answer during the call, and {org_name} with your org's name. RowCall won't publish a flow that uses a name it doesn't know, or a language that's missing a line.

Fixed lines

Every flow also has five lines the agent says word for word when they're needed, whatever step it's on:

LineSaid when
Opt-outThe shopper asks not to be called again
Not nowThe shopper can't talk, or it's the wrong person
Still there?The shopper has gone quiet
AcknowledgeA short "Okay." before the agent carries on
ApologySomething went wrong and the call must end

For how to word questions, see Writing good questions.

Next stepInputs

The order details each call starts with.