Flow rules
Rules organize an automation’s path. They are not triggers and do not send or change data on their own. The palette’s Rules tab contains three steps:
| Rule | Purpose |
|---|---|
| Condition | chooses a path using the first true comparison |
| Wait | pauses the run and can cancel it or restrict when it continues |
| End | finishes that run successfully |
Condition
Section titled “Condition”Condition creates independent outputs called branches. Click Add branch and configure each comparison with:
- Compare: fixed text or a variable;
- Operator;
- With: fixed text or another variable, except for operators with no right-hand value.
The eight operators are:
| Operator | How it is evaluated |
|---|---|
| equals | compares text without case sensitivity |
| does not equal | confirms that the texts differ, also without case sensitivity |
| contains | looks for a substring without case sensitivity |
| does not contain | confirms that the substring is absent |
| is greater than | converts both values to numbers and compares them |
| is less than | converts both values to numbers and compares them |
| is empty | checks whether the left value becomes empty; With disappears |
| is not empty | checks whether the left value has content; With disappears |
Leading and trailing spaces are ignored. If a numeric comparison receives text that cannot become a number, it is false. A missing variable resolves to empty text and can therefore satisfy is empty.
Fill both sides before publishing. Publishing currently requires at least one branch, but it does not reject an empty comparison. In particular, contains with an empty With value is true for any text.
Order and the None output
Section titled “Order and the None output”Branches are evaluated from top to bottom. The first true one wins; later branches are not evaluated. The interface has no reorder control, so create the most specific case first. To change the order, recreate the branches in the intended sequence.
In addition to configured branches, the card shows a None output. It is selected when no comparison is true. Connect every labeled output to the first step in its own path.
Each output should have at most one connection. Remove the old connection before replacing a destination. The editor allows more than one manual connection from the same branch, but the runtime follows only the first.
Before removing a branch, remove its connection on the canvas. Deleting only the branch in the panel can leave an old connection that publishing accepts but the runtime will never select.
Variables across branches
Section titled “Variables across branches”Both sides accept only variables available before the Condition. After the split, a step on one branch does not provide variables to another. If the paths converge again, the shared step can only use symbols guaranteed by every path.
Wait returns the run to the queue with a future date. When resumed, it passes through the same step again to evaluate cancellations and the send window before continuing.
Duration
Section titled “Duration”Enter a positive number of minutes, hours, or days. A new step starts at 1 day. Units are fixed durations: one day is 24 hours, not the next calendar date in the local time zone.
Test mode also observes the wait. If the duration is long, the test remains pending and continues only when the time arrives; do not use a long wait for a test that needs an immediate result.
Exit conditions
Section titled “Exit conditions”When a conversation exists at that point, the panel shows two options:
- The contact replies — selected by default;
- The conversation is resolved — cleared by default.
The check happens when the wait ends, not when the event occurs. If the condition is recognized, the entire run finishes successfully and later steps do not execute.
For The contact replies, the runtime compares the customer’s latest message with the start of the wait. An earlier message does not cancel the run.
For The conversation is resolved, current behavior is more limited: the runtime only checks whether the conversation is resolved when it wakes. A conversation already resolved before the wait may cancel the run; a conversation resolved and reopened during the wait may not cancel it.
If reading the conversation fails at wake-up, the current runtime continues without applying cancellation. For critical flows, monitor Runs and tests and do not treat this option as transactional confirmation of the event.
The options do not appear at a point without a conversation, and the runtime does not evaluate them in that case.
Continue even after a reply
Section titled “Continue even after a reply”Clearing The contact replies does two things:
- the wait does not end the run when the customer replies;
- later delivery actions may waive the customer awaiting a human reply safeguard.
Opt-out, snoozed conversation, frequency limit, and the Meta 24-hour window still apply. When paths converge, the waiver reaches an action only if every path to it passed through a wait with this option cleared.
Send window
Section titled “Send window”Turn on Only send within this window to restrict when the next step may happen. It starts with Monday through Friday, 09:00 to 18:00, in the organization’s time zone stored on the step.
- The start time is included and the end time is not.
- Equal start and end times mean 24-hour operation.
- A window may cross midnight.
- If no day is selected, the runtime treats it as every day, not no days.
- Outside the window, the run keeps waiting until the first allowed instant.
Duration and the window work together. The system first calculates the end of the duration; if that instant is outside the window, it pushes resumption to the next opening. At wake-up, it evaluates exit conditions before deciding whether it must wait for another opening.
End has no settings and no output. When the run reaches it, that branch finishes successfully.
It does not resolve the conversation, disable AI, or cancel other runs. To close the support conversation, use Resolve, described in Actions.
A path with no next step also finishes normally. Use End when you want to make that intent explicit on the canvas and record a final step in the run history.
What testing proves
Section titled “What testing proves”- Condition evaluates test variables with the same runtime rules and records the selected branch.
- Wait waits for real and reads the selected conversation when the run wakes.
- End finishes the test run immediately.
Testing does not repair stale connections, empty comparisons, or an ambiguous no-day window. Review both the canvas and settings before publishing.
Checklist before publishing
Section titled “Checklist before publishing”- Does every branch have a left value, operator, and, when required, right value?
- Is the most specific case above broader cases?
- Does each branch and None have at most one connection?
- Were connections for removed branches deleted too?
- Do variables after a convergence exist on every path?
- Do duration and window produce the expected time in the displayed zone?
- Is at least one day selected if you do not intend to allow every day?
- Do exit conditions match the conversation available at that point?
- Did the test finish, or is it still waiting?