Skip to main content
Logic blocks send a lead down one path or another. Timing blocks decide when a lead moves on: after a span, after something happens, or a counted number of times around a cycle. Finish blocks end its run in this workflow on purpose.
Where
OutreachWorkflow Builder
Your role needs
Create access to Workflow Builder create-workflows. Admin and Member have it by default.
To create or change
create-workflows to add one, update-workflows to change one, on top of the permission above.
Not listed in the sidebar today; reachable from the surfaces that link to it, and by URL. If you cannot find this in your sidebar, your workspace may have a custom menu configuration. Contact support and we will check it for you.

The full block catalog

These ten blocks sit inside the builder’s full catalog, reproduced below so you can see them next to everything else on the palette. Triggers reference, Outreach and AI blocks, Find & Enrich blocks and CRM and integration blocks cover the rest of it. This page covers three of the ten sections below: Logic, Timing and Finish.

Triggers

Outreach

AI

Find & Enrich

Logic

Timing

CRM

Integrations

Finish

Utility

Logic blocks

Three blocks decide which way a lead goes, based on something already true about them: an attribute on the lead or their company, or a weighted coin flip.

If / Else

If / Else compares one attribute against a value you set, then branches Yes or No. The attribute comes from the builder’s shared lead catalog (Merge variables and lead fields lists it in full): the lead’s identity and contact details, lifecycle fields like Lead · stage, location, their company’s profile and scores, and the lead’s tags. Which conditions you can pick from depends on what kind of attribute you chose. Every scalar attribute, a name, a stage, a score, offers the same seven: A lead with nothing in that attribute satisfies exactly two of those conditions: is empty and does not equal. Every other one reads a missing value as false, contains and the two comparisons included. Tags are the one attribute that’s a set rather than a single value, so they get their own five conditions: Tags themselves are picked from your workspace’s real list, never typed, so a condition can’t be armed with a name that will silently never match anything. When the attribute you chose maps to a fixed set of values instead, like Lead · stage, the value box becomes a picklist of exactly those values, for the same reason.

Switch

Switch reads one attribute (tags aren’t offered here: a lead can carry several, and a switch needs a single value to compare against) and routes it down whichever case’s value matches, case-insensitively. Each case you add becomes its own labeled exit on the canvas. If nothing matches, there’s no default branch to fall back on: the run ends there. Build a case for every value you actually expect if that isn’t what you want. The builder also requires at least two cases, each with a distinct label and a distinct value, before it lets you activate: two cases sharing a value would collapse into one branch and leave the other permanently unreachable.
That “the run just ends” behavior isn’t specific to Switch. Any branch on any block, left unconnected to anything on the canvas, ends a lead’s run the moment they take it, and the enrollment is marked Completed, the same status reaching Goal Reached or Mark Converted leaves it in.

A/B Split

A/B Split sends a lead down one of several variants at random, weighted by the percentage you set on each. The builder requires at least two variants whose weights add up to 100 before you can activate. The engine underneath is more forgiving of a hand-edited graph: positive weights still pick proportionally even if they don’t total exactly 100, and if every weight comes out to 0, it falls back to picking evenly rather than getting stuck.

Timing blocks

Four blocks decide when a lead moves on. Three of them park the run where it is: for a fixed span, until a reply arrives, or until a daily window opens. The fourth, Loop, never waits at all; it counts trips around a cycle and branches on the count.

Wait / Delay

Wait / Delay pauses for a fixed span: an amount and a unit, Minutes, Hours, Days or Weeks. It’s a plain delay, not a clock. It doesn’t know your timezone or your sending hours; it just adds that span to the moment a lead reaches it. Set the amount to 0 and it does nothing, the lead moves straight through. A lead that passes through the same Wait / Delay twice, inside a loop, waits the full span again each time.

Wait for Reply

Wait for Reply pauses until a lead responds, or until a deadline passes, then branches Replied or No reply. Which response counts is one of five: Email reply, WhatsApp reply, Instagram reply, LinkedIn invite accepted or MercadoLibre question, defaulting to Email reply. The deadline defaults to 4 days. An event this block doesn’t know how to resume on, or a run with no lead to wait on, fails straight to No reply rather than waiting forever.

Business-Hours Gate

Business-Hours Gate doesn’t wait a fixed span: it holds a lead until a time-of-day window opens. Reach it inside the window, in the timezone you set, and it passes straight through; reach it outside, and it waits until the window next opens. A window whose end is earlier than its start is read as an overnight one, running past midnight and closing the following morning. A block you just dropped onto the canvas defaults its timezone to UTC, not Auto · workspace timezone. That’s not an oversight: the product keeps it that way on purpose, because switching the default would silently move every gate already live, including runs already in progress. Pick Auto · workspace timezone yourself if you want this one to follow your workspace’s own clock instead. Either way, the gate only ever checks the time of day: there’s no day-of-week setting, so it doesn’t skip weekends by itself. An incomplete or invalid window never traps a lead; it fails open and lets them straight through instead.

Loop

Loop repeats whatever you wire back into it, up to a maximum you set, then continues. A new block starts at 3, and the count has to be at least 1. Wire its Repeat exit back to an earlier step to close the cycle; wire Max reached onward to whatever should happen once the count runs out. The canvas card shows the cap on its own, “Up to 3 times” at the default, so you can read it without opening the inspector. The count resets once it’s used up, so a Loop nested inside another cycle starts counting fresh every time the outer cycle re-enters it.
A cycle with nothing in it that can ever stop it blocks activation outright. Two things count as a stop: a Wait / Delay, Wait for Reply, Business-Hours Gate or AI Conversation block sitting anywhere in the cycle, or a Loop whose Repeat edge is the one that closes it. A Loop that the cycle only passes through by way of Max reached does not bound anything. The validation panel says so in these words: “This loop never exits — add a Loop block with a max count (or a wait) so it can end.” It’s the single most common way to build a flow that can’t be turned on.
Even a properly bounded loop still adds one warning to the validation panel, worded just “The workflow contains a loop.”: the checker flags every cycle it finds, on principle, whether or not something bounds it. A warning never blocks Activate; only an error does. As a last resort against a hand-edited graph that still finds a way around all of this, every enrollment carries a hard lifetime cap of 500 steps. A lead that hits it stops there and the enrollment is marked Failed. It’s a runaway backstop, not a number to design a flow around.

Finish blocks

Three blocks end a run on purpose. None of them has an outgoing branch: reaching one is always the last thing that happens to a lead in this workflow.

Goal Reached

Goal Reached records which outcome this run achieved: Meeting booked, WhatsApp conversation, Website link visited or Custom goal. It feeds the conversion rate a workflow reports; it doesn’t touch the lead’s stage or any other field on its own.

Mark Converted

Mark Converted sets the lead’s stage to Converted, unless it’s Converted already, then stops. Setting the stage this way triggers the same side effects a manual stage change does anywhere else in the product, a CRM push, the converted timestamp, rather than a separate mechanism just for this block.

Stop / Exit

Stop / Exit removes the lead from this run. Whatever you type as the reason is stored with that step, for your own records; it’s never sent to the lead. It is the one Finish block that does not leave the enrollment Completed: a lead that reaches it is marked Exited instead.

Validate, test with AI and activate

Every error and warning the validation panel can show, and what turns Activate on.

Enrollments and the lead journey

Follow one lead through a workflow: where it is now, which branch it took, and why it stopped.

How a workflow's sends are scheduled

Why a send waits: a busy mailbox, a schedule window, a resting day or a holiday, and how long it keeps trying.

Merge variables and lead fields

Every value you can drop into a condition or a message, and the exact name to pick or type.