Skip to main content

Automation steps

The steps you can add on the automation canvas.

Who can do this

  • Owner
  • Admin
  • Agent

The step list

StepWhat it does
Send templateSends an approved WhatsApp template. Variables can be mapped from the trigger's data.
Send messageSends a plain text message. Only valid where the 24-hour window is open.
ConditionBranches into If yes and If no
Wait for replyPauses until the customer taps a button on the message you just sent
WaitPauses for a set time before the next step
Add tagAdds a tag to the contact
Remove tagRemoves a tag from the contact
Close conversationMarks the conversation closed
Send webhookPOSTs to a URL of yours. Shown in the palette but marked Soon; it cannot be selected today.

Send template vs Send message

This is the distinction that decides whether an automation works.

  • Send template works whether or not the customer has messaged recently. Meta charges for it.
  • Send message is a free-form message, so it only works while the 24-hour service window is open. Outside it, Meta rejects the send and the step is recorded as failed.

Rule of thumb: the first message an automation sends is almost always a template, because the customer has not written to you. Later steps that run after a customer reply or a button tap can be plain messages.

See the 24-hour service window.

Condition

Branches the flow. Subjects available:

SubjectCompares
Commerce fieldA value from the trigger's data, e.g. payment method, order total
Button tappedWhich button the customer tapped
Tag presenceWhether the contact has a tag
Time of dayThe current time

Operators: equals, not equals, greater than, greater than or equal, less than, less than or equal, contains, and is one of.

Each condition gets an If yes and an If no branch. Steps can nest inside either.

Wait

Pauses for a fixed duration, then continues.

A Wait as the very last step of a branch delays nothing, so activation refuses it. Put the steps you want delayed after it.

Wait for reply

Parks the automation on the message it just sent and resumes when the customer taps a button on that message. Three branches:

BranchRuns when
If they replyThey tap a button within the window you set
If no replyThe window closes without a tap
If they reply againThey tap a second time, after the run has already finished

Rules the builder enforces:

  • A Send template step must come before it. There has to be a message with buttons to wait on.
  • It cannot be nested inside another Wait for reply's branches.
  • At least one branch needs steps.
  • Unlike a plain Wait, it is allowed as the last step of a scope, because its branches carry the work.

:::caution The "If no reply" branch has no open window That branch runs precisely because the customer never messaged, so the 24-hour window is closed and a Send message there will be rejected by Meta. Use Send template on that branch. The builder shows a hint. :::

A tap after the window closed does nothing. The If no reply branch has already said something, so answering late would contradict it. If you want late taps handled, add a separate unscoped Button / list reply automation, which still fires.

Why the reply wait is better than two automations

You could send a template from one automation and answer the tap with a separate Button / list reply automation. Wait for reply is better for three reasons:

  1. The order data survives the pause. Replies on the branches can name the order. A standalone reply automation carries no order context, so its replies can only be generic.
  2. One log per order. The whole journey (sent, tapped, replied) is one entry in the run logs instead of two runs to match up by hand.
  3. The choice is single-use. Two simultaneous taps, or a tap racing the timeout, can only ever run one branch. The customer never gets two contradictory confirmations.

A worked example

Confirming cash-on-delivery orders:

Trigger: Order placed · store: your-store
└─ Condition Payment method is Cash on Delivery (COD)
If yes ─┬─ Send template cod_order_placed
└─ Wait for reply · up to 24 hours
├ If they reply ──── Condition Button tapped is "Confirm my order"
│ ├ If yes → Send message "Order {{vars.order.name}} confirmed."
│ └ If no → Send message "Order {{vars.order.name}} cancelled."
├ If no reply ────── Send template cod_reminder
└ If they reply again → "Order {{vars.order.name}} is already handled."

Note that the If no reply branch sends a template, not a message.

Automations
Triggers, building, and activation checks.
Testing automations and run logs
Rehearse safely before going live.
Shopify events and variables
Every field you can put into a template.