The checks panel
The checks control sits in the editor toolbar, before the Save button. It reads All checks pass, or the number of problems and warnings, and opens a list under the heading Before this goes live. Findings come at three levels:
Clicking a finding selects the step it is about, so you land on it instead of hunting
across the canvas.
What it checks
The automation as a whole- It has a trigger but no steps.
- Two steps share a reference name — a token like
{{ steps.x.… }}cannot say which one it means. - A keyword trigger with no keywords, a schedule with no time, a Tag added trigger with no tag chosen.
- A required setting is empty — the same rules the server applies on activation.
- The step can never run on the selected channels, or is skipped on some of them. See Channels and the 24-hour window.
- A token points at a step that does not exist, or at one that runs after this step or on the other side of a branch. It can only ever resolve to nothing.
- A token names a variable that no Set variable step and no Also save the result as ever writes.
- A token uses a namespace that is not a real one.
{{ message.text }}on a scheduled automation, or aform.token on an automation that is not started by a form submission.- A
{{that is never closed — the braces are sent to the contact exactly as typed.
- A segment step pointing at a filter segment, which nothing can be added to or removed from.
- A Google action with no action chosen, an action this build does not recognise, a required field left empty, or the Apps Script bridge not connected.
- Start flow pointing at a flow that is not active — a draft flow is skipped, so the step does nothing.
- Run automation pointing at itself (refused at run time), or at an automation that is switched off.
- An HTTP request to a private, loopback or internal address (refused by the server),
or over plain
http://. Credentials typed into the auth fields get an information note: anyone who can edit the automation can read them. - A Wait longer than 30 days.
- A sending step that lands outside WhatsApp’s 24-hour window once the waits before it are added up.
- A sending step after a step that closed the conversation — the send reopens the thread the automation just closed.
- A branch with nothing in it.
- A superseded step, with the name of its replacement.
What blocks activation
Turning Active on is validated by the server, and a broken automation is refused with the first problem and where it is. An active automation needs at least one step, and each step must carry what it needs — message text, a template name, a tag, a pipeline and stage and title, a valid URL, a wait greater than zero with a real unit, a split percentage between 0 and 100, at most 3 buttons, at most 10 list rows, a variable name of letters, numbers and underscores. Amounts on Request a payment and Send an invoice are checked too: a literal that is not a number is refused now, and one that arrives from a token is checked when the step runs — which fails the step rather than creating a link or an invoice worth nothing. The trigger is validated as well: Keyword match needs at least one non-empty keyword, On a schedule needs a schedule, Tag added needs a tag.Whether a segment still exists, still belongs to this workspace and is still static is
a run-time question — the answer can change after activation — so it is checked when the
step runs, not at save time.
Testing one step
The settings panel’s Test tab answers “what would this step actually do?”. Preview this step resolves every token against real sample data — a real contact, their last message, and what earlier steps returned on recent runs — and shows the exact payload, along with any token that resolved to nothing. Nothing is sent. For a step that reaches a person or changes a third-party system, a separate Send for real button does it for real, with its own warning. It is a separate button rather than a mode toggle, because a Send message step tested carelessly reaches an actual customer.The run log
View runs in an automation card’s menu opens every run, newest first, with the number of runs in the header. Each row shows the run’s status, the contact, the channel, the trigger and the number of steps. Expanding one shows what each step did.
A step set to Carry on to the next step on failure still marks the run failed, so a
broken step is never invisible — the rest of the run just still happens.
The run log also feeds the editor: the last run’s outputs are what the token picker shows
as sample values beside each token.