Docs
GuidesAPI referenceWebhooksWeb widget

Workflows

Workflow blocks

Build the right sequence. See what each workflow block does and how to set it up.

#Conversation

The assistant talks with the caller.

instructiontext
What to do in this step, like a small prompt of its own.
saytext
An optional line said when the step starts.
variableslist
Up to 20 variables to collect, each with a name and a description.
global_conditiontext
Makes the step reachable from anywhere when this is true.

Its outgoing arrows carry plain-language conditions. The model follows an arrow when its condition is true.

#Say

Speaks a fixed line, then carries straight on.

#Condition

Each outgoing arrow has a rule: a variable, an operator and a value. The first true arrow is followed, and an arrow with no rule is the default.

OperatorTrue when
== !=The value equals, or does not equal, the text given.
> < >= <=A numeric comparison.
containsThe value contains the text given.
existsThe variable has any value.
emptyThe variable is missing or blank.

#Switch

Follows the arrow whose label equals the value of switch_var, or the arrow labelled default.

#Set

Sets variables from templates, such as full_name = {{first_name}} {{last_name}}.

#AI

A quick model call that classifies, extracts or rewrites using the call's variables. With a list of choices, the arrow labelled with the answer is followed. The result is saved under save_as.

#Tool

Runs a built-in or custom tool with templated arguments, then follows success or failure.

#Code

Runs code in the same sandbox as code tools, with the call's variables as args. The object it returns is merged into the variables, and a returned next value picks the arrow with that label. If the code throws, the failure arrow is followed. Timeout 1 to 20 seconds, 5 by default.

Code block
export default async function ({ args }) {
  const total = Number(args.items) * 12.5
  return { total, next: total > 100 ? 'large' : 'small' }
}

#HTTP

Any HTTP request, with templated URL, headers and body and an optional pick path. The reply is saved under save_as. It follows success or failure.

#App

A ready-made action from the app catalog, such as posting to Slack or creating a HubSpot contact, using a saved connection. It follows success or failure.

#Text and Email

Text the caller or a fixed number, or email someone, then carry on. Both take templated messages.

#Transfer

Puts the caller through to a number, with an optional line said first.

#End

Says goodbye and hangs up.

#Slow blocks

Blocks that can keep the caller waiting (tool, code, HTTP, app, AI) have three more settings:

fillertext
Said while the block runs, such as "Let me check that for you".
retries0 to 2default 0
How many times to retry on failure.
fail_saytext
Said if it still fails.