Where
Outreach→Workflows
Your role needs
Read access to Workflows
read-workflows. Admin, Member and Viewer have it by default.To create or change
create-workflows to add one, update-workflows to change one, on top of the permission above.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.
A block will not show up in the Blocks panel
Open a workflow, or start a new one from . The Blocks panel floats over the left edge of the canvas, always on screen, never behind a tab. Rule out the cheap causes first: the panel has a search box, and every category header collapses when you click it, so a block can be one stale keystroke or one closed heading away. Past that, the panel only ever shows a block in one of two states: usable, or dimmed with a small badge naming what it needs. A block that is neither is not on the list at all, and telling the cases apart matters, because only one of them is something you can fix yourself. Not connected. The block is right there, dimmed, with a badge on its name (1), for example Notify on Slack or Send to CRM, both waiting on a connection this workspace has not made yet. Connect that integration, then reopen the workflow and the block lights up like any other, ready to drag onto the canvas. Not every block needs one: Send Webhook (2) sits in the very same list and is never dimmed, because a one-off URL needs no connection at all. Not built yet. The block is nowhere on the list, dimmed or otherwise. A few blocks exist in the catalog with the wiring still missing, and the panel drops them rather than letting you place something that would only be rejected later. Facebook Message Received is one of these. There is nothing waiting on a connection and nothing to switch on. Not supported by the engine yet. Also invisible, for a second reason: the engine publishes its own list of block types it can currently run, and the panel only ever offers what is on that list, specifically so you cannot build a workflow the engine would then refuse. Email Opened and Link Clicked are two of the blocks held back this way. Nothing on your side unlocks them, and nothing on your side has to: the panel asks the engine for that list each time it loads, so a block turns up as soon as the engine can run it.The workflow refuses to activate
The toolbar carries a validation pill that reads Valid while the graph is clean and counts the errors and warnings when it is not. Click it to open the validation panel, in the bottom-right corner of the canvas, which lists each one and jumps to the block it belongs to. Errors and warnings are not the same thing. While one error is unresolved, the Activate button is greyed out and its tooltip reads “Fix errors before activating”. Warnings never block anything.If Activate and Save are both greyed out while the pill says Valid, this is not the graph. Changing a workflow needs the
update-workflows permission, and without it both controls render inert with a tooltip that says so.- A graph with blocks in it but every trigger deleted: “Add at least one Trigger or Start node so the workflow has an entry point.”
- A send or AI block left with nothing to generate or say: “Add a message — this block has nothing to send.”
- A loop with no way to stop: “This loop never exits — add a Loop block with a max count (or a wait) so it can end.”
- LinkedIn steps placed out of order. Two rules are enforced as errors. LinkedIn: Message and LinkedIn: Engage with post need proof upstream that the invite was accepted, which means either a LinkedIn Invite Accepted trigger, or a Wait for Reply step whose “Wait for” is set to “LinkedIn invite accepted” and which itself sits after a LinkedIn: Connect. Separately, LinkedIn: Connect wants a LinkedIn: View Profile ahead of it.
- A completely empty canvas. The browser only asks for a trigger once there is at least one block on the canvas, so an empty workflow reads as valid; the server rejects it outright.
- A trigger with nothing wired to its output. The browser does not flag a trigger that leads nowhere; the server requires every trigger to have an outgoing connection.
A lead is not moving through a workflow
Open the lead’s own page, which needs theread-leads permission, separate from the one that opens Workflows, and look for the Automations card. Every workflow the lead is enrolled in, or was, is listed here. The first live enrollment opens on arrival; the rest, and everything already finished, sit collapsed behind a History toggle. Open one and its journey shows every step already taken, the step it is on right now, and what can come next.
Every enrollment sits in one of six statuses:
- Active: running right now.
- Waiting: paused at a timer, an event, or something else that has to happen first.
- Completed: reached the end of the graph.
- Exited: left the workflow on its own, part way through, down a branch built for exactly that.
- Failed: a step could not be made to work, and the run gave up.
- Cancelled: someone stopped it by hand.
Waiting is the status behind almost every lead that looks stuck, and most of the time nothing is actually wrong.
- Nothing is free at the moment, because every account it may use is paused, in error, outside its sending window, at its daily limit, or too soon after its last send. It waits and re-checks on a randomized interval rather than a fixed clock, so the pattern does not read as automated.
- The account is deliberately resting today, or the lead’s own country is on a national holiday. It holds until the next morning instead. A reply is exempt from both: a lead who wrote in gets an answer regardless of the day.
Related
Validate, test with AI and activate
Read the validation panel itself and turn a finished workflow on.
How a workflow's sends are scheduled
Every reason a send waits, and how long the engine keeps trying before it gives up.
Enrollments and the lead journey
What one lead’s run through a workflow actually is, and how to read its journey.
No sending channel connected
The same “why isn’t this sending” question, one level up, for an AI agent’s own channel.