automation · reference
Triggers and actions
Every event a workflow can start from and every action it can take, with the conditions each one needs.
A workflow is one trigger, optional conditions, and a list of actions. This page lists what is available.
Triggers
Message events
| Trigger | Fires when |
|---|---|
message.received | Any customer message arrives |
message.contains_keyword | A message contains one of the keywords you list |
intent.detected | The agent classifies a message as a particular intent |
conversation.started | A new conversation begins |
no_reply_timeout | Nobody has replied for the number of minutes you set |
Customer events
| Trigger | Fires when |
|---|---|
customer.first_message | Someone writes for the first time |
customer.returned | Someone writes again after the number of days you set |
customer.tagged | A specific tag is added to a contact |
Order events
| Trigger | Fires when |
|---|---|
order.created | An order is created |
order.status_changed | An order reaches a status you name |
order.abandoned_cart | An order sits unfinished for the minutes you set |
order.delivered | An order is delivered |
Agent events
| Trigger | Fires when |
|---|---|
ai.confidence_below | The agent is less sure than the threshold you set |
ai.escalation_requested | The agent asks for a human |
supervisor.rejected | A safety check rejected a draft answer |
Time and other events
| Trigger | Fires when |
|---|---|
schedule.cron | On a schedule you define |
delay.after_trigger | A set time after another trigger fired |
csat.submitted | A customer rates a conversation |
referral.completed | A referral is completed |
Actions
Change how the agent behaves
| Action | Effect |
|---|---|
ai.inject_instruction | Adds an instruction for this conversation only |
ai.override_tone | Changes tone for this conversation |
ai.set_context | Switches mode: sales, support or onboarding |
These affect one conversation. They do not change your agent's settings.
Talk to the customer
| Action | Effect |
|---|---|
send.message | Sends a message; supports {{ variables }} |
send.product_carousel | Sends products matching a filter |
send.referral_invite | Sends your referral link |
Organise work
| Action | Effect |
|---|---|
tag.add / tag.remove | Tags a contact |
assign.to_operator | Assigns to a specific person |
assign.auto | Assigns round-robin or to whoever is least busy |
note.add | Adds an internal note |
Assignment pauses the agent by default: once a person owns a conversation, the agent should not also answer.
Control the flow
| Action | Effect |
|---|---|
delay.wait | Waits, then continues |
wait_until_reply | Waits for the customer, with a timeout branch |
condition.branch | Splits into two paths |
workflow.stop | Ends the workflow |
wait_until_reply has no "on reply" branch on purpose: if the customer answers, the workflow simply carries on
with the actions after it — the same thing a person would do. The onTimeout list runs only when they do not.
Reach outside
| Action | Effect |
|---|---|
webhook.send | Calls your endpoint |
skill.invoke | Calls a tool from an installed app |
code.execute | Runs sandboxed code |
metric.increment | Counts something |
Bring in a human
| Action | Effect |
|---|---|
escalate_to_human | Hands the conversation over |
escalate_with_context | Hands over with a summary of why |
Two things worth knowing before you build one
Workflows run on every matching event, including replays. Delivery is at-least-once, so an action that creates or charges something must tolerate running twice. Sending a message twice is visible to the customer; design around it rather than assuming it cannot happen.
A workflow that writes to the customer competes with the agent. If a workflow sends a message while the agent
is also answering, the customer sees both. Pause the agent (assign.*) or stop the workflow when the agent is
handling the conversation.
Trying one safely
Every workflow can be dry-run before it is enabled: it reports what it would have done without doing it. Use it for anything that sends a message or touches an order.