Skip to content
Start free

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.

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.

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

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

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.

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.

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.