Using Branch Block

The Branch is a workflow block for defining multiple alternative paths in one place. Instead of chaining many separate Condition blocks (hard to read and maintain), you add branches inside a single block and set rules for each. The system evaluates branches top → bottom and sends the contact down the first branch whose rules are met. This keeps complex logic clear, compact, and easy to maintain.

Why use it

  • More order: Replace long Condition chains with one tidy decision point.
  • Faster reviews: All rules are visible side-by-side — no more opening blocks and memorizing details.
  • Easy edits: Label, duplicate, collapse, and rename branches without rebuilding logic.

Setting Up Branch Rules

  1. Open or create a workflow in the Automation → Workflows section.
Workflows list with the Automation menu and New workflow button highlighted
  1. Drag the Branch block from the left sidebar into the workflow.
Workflow canvas with the Branch block highlighted in the sidebar and placed after the Start block
  1. Configure branches. You can base its rules on any of the following:
  • Start event parameter (context of the event that triggered the workflow)
  • Contact field
  • External event — tracked behavioral events (e.g., app actions) and their attributes
  • Event in messages (engagement with earlier Message blocks)
  • Segment membership — checking the input to the audience lists you’ve already built
  • Current day/time — check date, days of the week, time
  • Channel availability — Email, SMS, Viber, Web Push, Mobile Push, App Inbox, Telegram
Branch block Select rule dropdown showing all available rule types highlighted

Each individual rule has Duplicate rule and Delete rule buttons. Use them to copy a rule with all its settings or delete only the selected rule.

Duplicate rule and Delete rule
šŸ“˜

Note

The UI shows icons to recognize rule types quickly.

Branch block Select rule dropdown with the icon for each rule type highlighted
šŸ“˜

Note

The Branch block supports dateTool expressions in its conditions. For example, you can compare the result of $!dateTool.diff($!start_date, $!end_date, 'DAYS'), and the contact will be routed to the matching branch or to Fallback if no rule matches.

Start Event Parameter

  1. Choose the workflow's start event parameter (e.g., utmCampaign, orderValueBucket, shippingMethod).
  2. Pick an operator (e.g., Equals, Contains, Between, Is set).
  3. Enter the value.
Start Event Parameter

Usage example

  • Branch 1: orderValueBucket Equals High → Thank-you + loyalty fast-track and premium support info trackers)
  • Branch 2: orderValueBucket Equals Medium → Cross-sell essentials (care kit, add-ons)
  • Branch 3: orderValueBucket Equals Low → AOV booster bundle (free shipping threshold tip)
  • Fallback: Didn’t match 1–3 → Standard post-purchase series
šŸ“˜

Note

The Fallback branch is evaluated after all other branches. It captures contacts that don’t match any prior rules. If you disable Fallback, contacts that don’t match any branch will stop at this point in the workflow.

Contact Field

  1. Select a contact field (e.g., favoriteCategory, sizePreference, preferredBrand).
  2. Choose an operator appropriate for the field type (e.g., Equals, Does not equal, Is set, Is empty).
  3. Specify the value.
Contact Field

Usage example

  • Branch 1: favoriteCategory Equals Footwear → Sneaker drops + size-based recommendations
  • Branch 2: favoriteCategory Equals Apparel → Outfit builder + new arrivals in preferred sizes
  • Branch 3: favoriteCategory Equals Home → Room-by-room bundles + seasonal decor guide
  • Fallback: Didn’t match 1–3 → Best-sellers + ā€œpick your interestsā€ prompt
šŸ“˜

Tip

Combine with another field using the AND rule (e.g., favoriteCategory Equals Footwear AND sizePreference Equals 42) for higher relevance.

🚧

Note

An event starts a workflow regardless of whether the contact is active or deleted, but the system looks up the contactId for the workflow context only among active contacts. For a deleted contact the workflow starts without a contactId, so their contact card isn't loaded — a Contact Field rule checking that contact evaluates as not matching (false), even if the field has a value once the card loads; Segment membership checks don't pass either. If your workflow can run for restored contacts, pass the needed data as event parameters and branch on a Workflow parameter or External event rule instead.

The event itself doesn't restore a deleted contact — the contact is restored when a message is sent to them. If the event contains an email address, a Message block with ${emailAddress} as the recipient sends the message to the address from the event and restores the contact. For transactional workflows that must also work for deleted contacts, pass the email as an event parameter and use it in the Message block. To get the contactId in the workflow after the contact is restored, add a Timer and a Get contact block after the message.

External Event

  1. Specify the event type with segmentation enabled (e.g., ProductViewed, CartUpdated, OrderPlaced).
  2. Select the time window.
Branch block External event rule with the event type and time window fields highlighted

If you want to check the event parameter, click the AND parameter and specify the parameter name, its value, and one of the available validation operators, e.g., deviceCategory equals Mobile.

šŸ“˜

Note

The time window is counted back from the moment the workflow started, not from the moment the contact reaches this Branch. Timers and other blocks before it do not shift the window.

The start of the window is rounded down to the previous 5 minutes, so it can cover more time than you selected — a 30-minute window reaches back up to 35 minutes.

Branch block External event rule with an AND parameter condition highlighted

Usage example

  • Branch 1: ProductViewed during last 7 days AND category Equals Sneakers → ā€œComplete the lookā€ (socks, care kit, laces)
  • Branch 2: CartUpdated during last 7 days AND category Equals Dresses → Size & fit guide + matching accessories
  • Branch 3: OrderPlaced during last 30 days AND brand Equals X → Brand-loyal perks + early access
  • Fallback: Didn’t match 1–3 → Browse best-sellers + personalized pick

Event in Messages

  1. Select message status: Delivered, Opened, or Clicked.
  2. Select condition:
  • is true → the status occurred within the chosen scope.
  • is false → the status did not occur within the chosen scope.
  1. Select scope:
  • for the last message — checks the most recent Message block before this Branch.
  • for all messages — checks across all earlier Message blocks in the workflow.
Event in Messages

Usage example

  • Branch 1: Clicked is true for the last message → Flash-sale CTA with personalized picks
  • Branch 2: Delivered is false for the last message → Switch channel (SMS/push) + address validation tip
  • Branch 3: Opened is false for the last message → Web push/In-app: ā€œNew arrivals just dropped — shop nowā€

Segment Membership

Select the condition In segment / Not in segment / In any of segments and specify the segment(s).

Branch block Segment membership rule with the condition dropdown highlighted showing in segment, not in segment, and in any of the segments options

Usage example

The BackInStock Trigger:

  • Branch 1: Segment = VIP → 24-hour early access, limited quantity, priority shipping.
  • Branch 2: In any of the segments = BargainHunters, CouponUsers → Promo code -10% for 48 hours + ā€œReserve your size.ā€
  • Branch 3: Segment = ChurnRisk (90 days without purchases) → Win-back: free shipping/easy returns, multi-channel reminder series.
  • Branch 4: Segment = RepeatBuyers or HighLTV → Bundle of compatible products + extra loyalty points.
  • Branch 5: Segment = NewSubscribers (≤7 days) → Welcome discount, short FAQ on shipping/sizing, soft deadline.
  • Fallback: Others → Standard ā€œBack in stockā€ message without discount: product photo, ā€œBuy nowā€ CTA, easy-returns guarantee.

Current Day/Time

  1. Add a rule of type Current Day/Time.
  2. Select a validation parameter:
  • Date
  • Day of week
  • Time
  1. Specify an operator, available depending on the parameter:
  • Date — only Equals
  • Day of the week — only Any of
  • Time — only Between
  1. Specify a value:
  • for Date — a specific date
  • for Day of the week — one or more days
  • for Time — an interval (from/to)
  1. Select a Time zone source:
  • Organization — the validation is performed in the time zone set in your organization settings
  • Contact — the validation is performed in the time zone set in the contact card
Branch block Current day/time rule with the Date and Time zone source fields highlighted

Usage Example

This type of rule is convenient to use for ā€œquiet hoursā€, work windows, different weekday/weekend workflows, etc.

Channel Availability

  1. Add a rule of type Channel Availability.
  2. Select the channel you want to check (for example, Email or Mobile Push).
  3. Specify the condition: Is available, Is unavailable, Any of the channels
Branch block Channel availability rule with the channel and condition fields highlighted

Usage Example

  • Branch 1: Email available → Send Email
  • Branch 2: Email unavailable AND Mobile Push available → Send Mobile Push
  • Branch 3: Email unavailable AND Mobile Push unavailable AND SMS available → Send SMS
  • Fallback: all channels unavailable → Add to segment No reachable channel / end workflow

AND / OR Rules

Inside a single branch, conditions are grouped into rule cards.

  • Within one card, conditions are combined with AND rule (all must be true).
  • OR rules group adds another card as an alternative set of conditions.
Branch block rule settings with the AND rule and OR rules group buttons highlighted

The branch passes if all conditions in any one card are true (Card 1 OR Card 2 OR Card 3, etc.).

If the conditions of more than one branch are true, the contact goes down the first branch in the checking order — not the one whose event is the most recent. Reorder branches with Check later or earlier.

Settings

  1. In your branch, add the first conditions — this becomes Rule card 1 (all conditions here use AND).
  2. Click OR rules group to add Rule card 2 (an alternative set).
  3. Configure the conditions in Rule card 2 (again, they’re AND-ed within the card).
  4. (Optional) Add more OR rules groups to create additional alternative cards.

Usage example

  • Rule card 1: loyaltyLevel Equals VIP
  • OR rule card 2: orderValueBucket Equals High

→ Action: Send ā€œFree Express Shipping — Today Onlyā€ message

Branch Actions

Created branches (max 20) have the following management options:

  • Duplicate — copy a branch with all its conditions (using the button in the block settings or selecting the branch and pressing Ctrl + D on Windows or Cmd + D on macOS).
  • Rename — improve on-canvas readability with short, clear labels.
  • Check later or earlier — change the priority of branch checking.
  • Delete — remove an obsolete branch or rule.
Branch management menu showing Duplicate branch, Rename branch, Check later, Check earlier, and Delete branch options


Did this page help you?