Logic nodes decide where a customer goes next. Three of them split the flow, one gates it, and one holds the customer in place.
The distinction that matters most: a Rule sorts customers by something you already know about them, and a Multivariant Split divides the same population to find out which treatment works. Reaching for the wrong one produces a journey that looks right and measures nothing.
Sends customers down different paths by testing facts about them. In the palette it is called Rule; on the canvas it is the branch node.
Conditions are built in the condition builder over the variables available at that point, which is the same set the properties panel lists. Conditions can be grouped and nested rather than kept flat.
Configure
Required: at least two branches. A branch's paths are created by adding branches, not by drawing connections.
Outputs
One output per branch. Before any branch is configured, the node renders True and False.
Watch out
Pauses the customer here before the next node. In the palette it is called Wait / Delay.
Configure
Nothing is strictly required: an unset mode behaves as a one-hour duration. Until mode requires the date; event mode requires the event name.
Watch out
duration waits per customer from the moment they arrive. until waits for one
fixed date for everyone.Gates the flow on a date comparison. Use it for a sale period, a season, or a cut-off.
Configure
Required: the comparison and the date. With either unset the whole node passes through.
Outputs
Yes and No.
Watch out
Asks a model to judge something, then routes on its answer. Reach for it when the decision needs judgement over text, such as intent, sentiment, topic, or fit, that no fact can express.
Configure
Required: the connector, the model, and the prompt. Enum output also requires at least one case.
Outputs
Boolean output gives True and False. Enum output gives one output per case, and each case needs its own onward path.
Watch out
Splits traffic across variants A, B, C and beyond, to learn which treatment works. Add and remove variants down to a minimum of two.
The node runs in one of two strategies: manual, where you set the shares, or MAB, where a multi-armed bandit learns them.
Configure
Required: the variants, and the persistence variable when persistence is on. Shares must total 100 or the journey will not publish.
In manual mode the last variant is managed for you and marked Auto: it absorbs
whatever is left so the total always reaches 100, which is why its field is locked.
Outputs
One output per variant.
Switching Enable MAB (Multi-Armed Bandit) on replaces the variant percentages with
auto-allocated and adds a MAB Stats panel showing impressions, conversions, and
posterior data per variant, refreshing every 30 seconds.
Three kinds of goal are possible:
A Shopify order goal is the event kind with the reserved event id shopify.order,
which is the Shopify order tab in the builder. It is credited automatically from the
order webhook and the web pixel, matched on the visitor who saw the variant, so it
needs no event wiring at all. Any other event name is a custom event somebody has to
send to /api/events/v1 with trigger: true.
While there is too little data to be confident, the stats panel reports safe mode and falls back to a uniform split. That is the bandit protecting you, not a fault.
Watch out
Desktop becomes D, the
path's handle changes with it, and every connection drawn from that path is
orphaned. What each variant is belongs on the node the path leads to.visitorId where the
fact is payload.visitorId, fails silently and looks exactly like persistence being
off.page.view trigger the variants are storefront experiences, so each
path ends in a Shopify Variant. The visitor
is anonymous there, so a channel node on a path has nobody to send to.shopify.order goal does nothing while Optimize for is left at engagement:
the reward pipeline keeps scoring clicks and opens, which a storefront variant does
not produce, so the bandit shifts traffic on a signal that is always zero. Set
conversion or revenue.even, they seed
the bandit's opening allocation.A step goal only teaches the bandit when reaching that step is variant-dependent. If every participant funnels through it, such as a shared checkout both arms lead to, the bandit cannot tell the variants apart and the split stays even. For a purchase, a signup, or anything that happens after the journey, use an event goal or a Shopify order goal instead. The node warns you when it detects this.
Event and Shopify goals credit conversions by visitor identity. Pinning persistence
on a different field than the goal matches means a participant can be assigned one
variant and have their conversion credited elsewhere. On a Shopify storefront, keep
both on payload.visitorId.