Skip to content

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:

RulePurpose
Conditionchooses a path using the first true comparison
Waitpauses the run and can cancel it or restrict when it continues
Endfinishes that run successfully

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:

OperatorHow it is evaluated
equalscompares text without case sensitivity
does not equalconfirms that the texts differ, also without case sensitivity
containslooks for a substring without case sensitivity
does not containconfirms that the substring is absent
is greater thanconverts both values to numbers and compares them
is less thanconverts both values to numbers and compares them
is emptychecks whether the left value becomes empty; With disappears
is not emptychecks 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.

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.

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.

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.

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.

Clearing The contact replies does two things:

  1. the wait does not end the run when the customer replies;
  2. 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.

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.

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

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