Where
Outreach→Workflow 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.
Outreach blocks
Eleven blocks in Outreach act on the lead through a channel. None of them branch: each has exactly one way in and one way out, so anything you want to happen because a message went out (a wait, a stage change, a reaction to a reply) is its own block afterward.
Send Follow-up and Send Reply carry a second guard of their own: each skips when a sent message already threads onto the message it was about to thread onto. Two enrollments racing on the same lead produce one send, not two.
One more block sits in Outreach and is the only one there that branches: Run Workflow, which starts a second workflow on the same lead and exits Started or Skipped. It sends nothing itself, and CRM and integration blocks covers it.
A block that needs LinkedIn, WhatsApp, Instagram or MercadoLibre stays visible in the palette before you’ve connected one: it shows dimmed, with a badge naming the channel it needs, and clicking it does nothing. That is a different state from a block the engine cannot run, which is dropped from the palette entirely. Two blocks are in that second state today, Instagram: Reply to Comment and Enroll in Campaign: no executor is registered for either, so they never reach the palette and a workflow that somehow contains one is refused at activation. Canvas, palette and inspector covers the mechanic, and Channels overview covers what unlocks each channel.
AI blocks
The AI Conversation block is the deepest of the five, holding a multi-turn conversation and writing custom fields back to the lead. It gets its own page: The AI Conversation block.
Write it yourself, or let the model write it
Most blocks that compose a message start with the same Message toggle, between AI and Custom template. A fresh block starts on AI, except Send WhatsApp and Send Instagram DM, which start on Custom template. In AI mode you get one field, Prompt. What you write there, plus the lead and company dossier the generator attaches on its own, is what the message gets written from. Switch to Custom template and Prompt gives way to text you write yourself. On an email block (Send Email, Send Follow-up, Send Reply) that is a Subject and a Body, on tabs of their own. On LinkedIn: Message, Send WhatsApp and Send Instagram DM it is a single Message field, since a DM has no subject line. LinkedIn: Connect works differently: by default it sends a bare connection request with no note at all. Turn on the note and the same AI-or-template choice appears for the note’s own text, labelled Note rather than Message, with a Note field in template mode. Answer MercadoLibre Question is the other outlier: it has no toggle at all, since it only ever writes with AI, from the buyer’s question and the listing. Send Email, Send Follow-up and Send Reply each carry a Sender field and a format choice between HTML and Plain text. Left on Auto, the first send picks a mailbox and pins it to that lead’s run, so the whole conversation stays on one address; it moves to another only if the pinned one is gone, archived or inactive, never for a passing throttle. Name a specific account instead and it is used as named and never switched. Send Email alone adds an open and click tracking toggle, on by default. Send Reply can also be saved as a draft, with the toggle readingSave as draft for manual review. The reply is still written and stored against the lead’s thread, but it is stored as a draft rather than as a scheduled send, and the cron that dispatches workflow email only picks up scheduled ones. It waits for a person.
Test what the AI would write
A Test generation button sits directly under the prompt field, on any block whose message actually gets generated. It does not run the block. It asks for a sample of what the prompt would produce, written for a real lead pulled from your workspace, or for a built-in demo persona if the workspace has no leads yet. Nothing is sent and nothing is saved.
The button stays disabled until the block’s own prompt field has text in it, and hovering it says so. On AI Conversation that field is the conversation goal. Answer MercadoLibre Question is the exception: the buyer’s own question already is the prompt, so it tests from empty. A result stays on screen while you regenerate, so nothing flashes away mid-run.
Send Reply’s test adds a control the others don’t: a toggle to simulate the lead as Interested, raising an Objection, or Not interested, with the simulated inbound message shown alongside the draft it produced. Send Follow-up’s test notes that it’s simulating a follow-up where the lead hasn’t replied yet. Answer MercadoLibre Question’s test shows the real buyer question it sampled to answer, since the generated reply reads as random without it.
The AI blocks that branch
AI Decision (Branch) and AI Classify Message both hand back one of your own branches, not a fixed set the product chose for you. AI Decision (Branch) starts with two, YES and NO; AI Classify Message starts with four, Interested, Objection, Not now and Not interested. Add, rename or remove one and the block’s exits on the canvas update to match, since the exits are drawn straight from your list and there is no catch-all “anything else” exit beside them. Every branch needs its own label and its own value. The model is held to the exact set of values you type, so an answer that fits none of them is not something it can produce. A single branch doesn’t validate, and two branches sharing a label or a value don’t either. The two blocks differ in what they read. AI Decision (Branch) asks a question you write, against a context picker: leave it empty and the model sees everything on file for the lead (profile, company, every conversation across every channel, activity, notes), or narrow it to specific dossier sections or single fields. AI Classify Message has no such picker: its input is always the message that triggered the workflow, read against the rest of the lead’s history for background. With no message to classify, the run ends there before any model call is made. WithSkip automatic / out-of-office replies on, the classification still costs a model call, and an out-of-office, a bounce or a no-reply autoresponder then ends the run rather than being pushed down one of your real intents.
AI Qualify Lead
Write your qualification criteria in plain language and the block scores the lead from 0 to 100 against it, using the same context picker as AI Decision (Branch). The score decides the branch: Qualified at or above the threshold you set, Not qualified below it.AI Generate Content
Writes copy from a prompt you give it and saves the result to a variable name you choose, so a later block can drop it in with a merge tag. It always continues; there’s no branch to wire. Unlike the two blocks above it has no context picker: it always writes against the full lead dossier. The variable name keeps only letters, numbers and underscores and turns anything else into an underscore, and a name starting with an underscore, or one that isai or trigger, gets prefixed so it cannot overwrite the run’s own bookkeeping. See Merge variables and lead fields for how to reference it once it’s saved.
The prompt on this block, on AI Decision (Branch) and on AI Qualify Lead is a required field, so the builder blocks activation while one is blank. If a run ever does reach one empty, the block fails there rather than quietly writing nothing. AI Generate Content treats an empty answer from the model differently: it retries, and only fails the run once the retries run out.
Related
The AI Conversation block
The one AI block that holds a real back-and-forth and collects fields as it goes.
How a workflow's sends are scheduled
Why a send waits on a busy account or a holiday, before any of these blocks fire.
Merge variables and lead fields
Every value you can drop into a prompt, a template or a condition, by its exact name.
Agent instructions
The other place AI writes your outreach: per-channel instructions that apply across a whole agent, not one block.