Automations
Automations are the no-code way to handle inbound WhatsApp conversations. Each
automation is a trigger plus a chain of actions, built visually on the
automations canvas in the dashboard (/automations). They run inside Wabery, so
you don’t need a server, a webhook, or a deploy to reply to customers.
Start with automations. They cover most of what an agent needs — welcome messages, keyword menus, collecting details with a Flow, waiting for a reply, following up after a delay, and handing off to a human. Reach for a hosted function only when a step genuinely needs custom code, and prefer running that function from an automation (see Run Function) rather than making the whole agent code-first.
Triggers
Section titled “Triggers”An automation fires on the first trigger that matches an inbound message. Evaluation order is first-match-wins:
| Trigger | Fires when |
|---|---|
| Welcome | The contact’s first-ever message to this project. |
| Keyword | The message matches one of the automation’s keywords (e.g. book, hours, price). |
| Any message | A catch-all for any inbound message that no keyword caught. |
Actions
Section titled “Actions”After a trigger matches, Wabery walks the chain of actions in order.
| Action | What it does |
|---|---|
| Send Reply | Sends a text reply. Supports variables like {{customer_name}} and up to three quick-reply buttons. |
| Send Flow | Sends a published WhatsApp Flow to collect structured input (booking details, an order form, lead questions). |
| Run Function | Calls a hosted function inline and uses its result. See Run Function. |
| Delay | Waits a set time, then continues the chain later (e.g. a next-day follow-up). |
| Wait for Reply | Pauses until the contact replies, captures what they said, and can branch on matched options. |
| Pause Replies | Turns on handoff: stops native automations, external webhooks, and public API outbound sends for that conversation. |
| Condition | Branches the chain based on the contact or the message. |
Examples
Section titled “Examples”- Keyword reply — Keyword
hours→ Send Reply with your opening times. - Menu — Keyword
help→ Send Reply with quick-reply buttons (Book,Prices,Talk to a human). - Collect details — Welcome → Send Reply (a greeting) → Send Flow (a booking form).
- Ask and branch — Keyword
book→ Send Reply (“Are you a new customer?”) → Wait for Reply → Condition → different paths for yes / no. - Follow up later — After a Flow submission → Delay 1 day → Send Reply (“How did everything go?”).
- Escalate — Keyword
refund→ Pause Replies so a teammate takes over.
Run Function
Section titled “Run Function”The Run Function action calls one of your project’s deployed hosted functions in the middle of an automation. This is how you bring in live data — real availability, an order status, a price quote — without turning the whole agent into code. The function runs with a timeout, and if it fails the automation simply continues, so a broken function never wedges the conversation.
A function returns an output object. What the automation does with it depends
on the action’s result mode:
| Result mode | Behavior |
|---|---|
| Set variables (default) | Merges output into the conversation’s variables so later replies can use them. Give it a name like order to expose {{order_status}}, {{order_eta}}; leave the name empty to use the output field names directly. |
| Reply with output | Sends a field from output back to the customer. Defaults to reply, then message, then text, or name the field explicitly. |
| Side effect | Runs the function for its effect only (log a lead, notify a system) and ignores the output. |
A typical shape: Keyword status → Run Function lookupOrder (set variables as
order) → Send Reply Your order is {{order_status}}, arriving {{order_eta}}.
Variables
Section titled “Variables”Send Reply and the reply text of a Run Function support {{variable}}
placeholders:
| Variable | Value |
|---|---|
{{business_name}} |
Your organization name. |
{{customer_name}} |
The contact’s name (falls back to “there”). |
{{business_phone}} |
Your business phone, if set. |
{{business_address}} |
Your business address, if set. |
{{captured_reply}} |
The customer’s message captured by a Wait for Reply action. |
{{captured_option}} |
The matched option label from a Wait for Reply action. |
Any field returned by a Run Function action in Set variables mode is also
available as a {{...}} placeholder in later actions.
Routing mode
Section titled “Routing mode”Automations only run when the project routes inbound messages to Wabery’s in-app handling. If a project is set to external routing, every inbound message is forwarded to your webhook instead and automations are paused — your webhook owns the reply logic. See routing modes to switch. The automations canvas shows a banner when a project is on external routing.
Config as code
Section titled “Config as code”Automations are part of a project’s configuration and can be exported, validated, diffed, and applied alongside webhooks and flows. See the CLI for the config export/apply workflow, or build and edit them visually on the automations canvas in the dashboard.