Human Approval Node Guide
Overview
The Human Approval Node pauses a branch of your workflow and waits for a person to approve before execution continues. When the node runs it sends a notification (for example, an email) to the people who need to sign off, then holds every downstream node until someone approves the workflow, dismisses it, or the approval window expires. This brings a human checkpoint into an otherwise automated process — ideal for gating sensitive, irreversible, or high-impact actions behind explicit sign-off.
Use Cases
- Requiring sign-off before a destructive or irreversible action (e.g. blocking an IP, disabling an account, deleting data)
- Manual review of findings before they are sent to a client or published in a report
- Compliance and change-management approval gates
- Holding an escalation until an on-call analyst confirms it should proceed
- Adding a "four-eyes" check between automated stages of a sensitive workflow
- Pausing for confirmation before triggering an external integration
Creating a Human Approval Node
Basic Setup
- Drag a Human Approval Node from the node palette onto your workflow canvas
- Connect one upstream node to it — the Human Approval node accepts a single incoming connection (see Input Behavior)
- Choose the notification channel that announces the approval request (e.g. the
mail-reportingtool) - Fill in the notifier's parameters — recipients, subject, and the message body the reviewer will read
- Connect the node's output to the downstream nodes that should run only after approval

Notification Configuration
The fields you fill in depend on the notification channel you select; they are supplied by the channel's own definition rather than fixed by the node. For the mail-reporting channel you configure:
- Recipients — who receives the approval request
- Subject — the email subject line
- Message body — the message the reviewer reads (plain text or HTML; see The Approval Notification)

Configuration Options
Node Properties
| Property | Description |
|---|---|
| Name | A descriptive name for the node |
| Notification Channel | The tool (e.g. mail-reporting) used to send the approval request |
| Recipients | Address(es) the approval request is sent to |
| Subject | Subject line of the notification |
| Message Body | The message shown to the reviewer (text or HTML) |
| Approval Timeout (hours) | Optional. How long the approval stays open before it is automatically dismissed. Defaults to 72 hours; values above 72 are capped at 72 |
Note — message type: The body you provide is always delivered as HTML, whether you write plain text or HTML markup. There's no need to set a message type yourself.
How Human Approval Nodes Work
When a workflow reaches a Human Approval node:
- The node sends the configured notification to the recipients, including a link back to the workflow and the approval deadline
- The branch is placed on hold — the node and all of its downstream successors stop and wait
- The workflow surfaces an awaiting-approval state so anyone viewing it knows action is required
- A reviewer opens the workflow (typically via the link in the notification) and either:
- Approves — the hold is released and the branch continues
- Dismisses — the branch is stopped and downstream nodes do not run
- If no one acts before the approval deadline, the approval is automatically dismissed so the workflow doesn't wait indefinitely
Workflow Statuses While Held
While a Human Approval node is waiting, the workflow reports one of two statuses:
held— the whole workflow is paused on the approvalheld_branch— one branch is paused on the approval while other branches keep running
Approval Flow Diagram
sequenceDiagram
participant Up as Upstream Node
participant HITL as Human Approval Node
participant User as Reviewer
participant Down as Downstream Nodes
Up->>HITL: Provide input
HITL->>User: Send notification (link + deadline)
HITL->>HITL: Hold branch
alt Reviewer approves
User->>HITL: Approve
HITL->>Down: Release hold, continue
else Reviewer dismisses
User->>HITL: Dismiss
HITL->>HITL: Stop branch
else Deadline passes
HITL->>HITL: Auto-dismiss
end
The Approval Notification
The message you configure is wrapped in a branded Zynap approval email before it is sent. Your text appears under a Message from the workflow heading, alongside:
- The name of the paused workflow
- A Review workflow button linking straight to the workflow
- The approval deadline (shown in UTC) and how long the reviewer has to respond
Because the body is delivered as HTML, you can include simple formatting in your message. Keep it focused — explain what is being approved and any context the reviewer needs to make the decision.
Approval Window & Auto-Dismiss
Every approval has a deadline. By default a Human Approval node stays open for 72 hours; you can shorten this with the optional Approval Timeout (hours) parameter. Values above 72 are capped at 72 hours — that is the hard ceiling.
If the deadline passes with no decision, the node is automatically dismissed and the branch stops. This prevents abandoned approvals from holding a workflow open forever.
Input Behavior
A Human Approval node accepts exactly one upstream connection. This keeps the data passing through the gate unambiguous and is enforced both in the editor and when the workflow is validated. If you need to gather several inputs before the approval, combine them in an upstream node first, then connect that single node to the Human Approval node.
Output Behavior
The Human Approval node is transparent: once approved, it forwards the data it received from its single upstream node to downstream nodes unchanged. The notification tool's own output (e.g. the mail send result) is not propagated. Downstream nodes therefore see exactly what they would have seen if the approval gate weren't there — the node decides whether the data flows on, not what the data is.
Best Practices
- Write actionable messages: Tell the reviewer what they are approving and what happens next. They may be acting from an email without the full workflow context.
- Gate the right step: Place the node immediately before the action that needs sign-off, so approval is requested at the moment it matters.
- Set a sensible timeout: Shorten the approval window for time-sensitive workflows so they don't sit open for the full 72 hours.
- Consolidate inputs upstream: Since the node takes a single input, merge or prepare data in an upstream node before the gate.
- Mind auto-dismiss: Remember that an unanswered approval will eventually stop the branch — design downstream logic accordingly.
Troubleshooting
| Issue | Resolution |
|---|---|
| Notification never arrives | Check the recipients and the notification channel's configuration; verify the channel (e.g. mail-reporting) is set up correctly |
Workflow stuck on held / held_branch | This is expected while awaiting approval — approve or dismiss the node, or wait for the approval window to expire |
| Branch stopped unexpectedly | The approval may have been dismissed or its deadline passed; re-run the workflow to request approval again |
| Can't connect a second input | The node accepts only one upstream connection; merge inputs in an upstream node first |
| Downstream node received the wrong data | The node passes through its single upstream input unchanged; verify the upstream node produces the expected output |
Next Steps
After configuring your Human Approval Node, you might want to:
- Place the action that needs sign-off (an integration, a destructive operation) directly downstream of the approval
- Pair it with a Conditional Node to route differently based on upstream data before requesting approval
- Use it as a checkpoint before a Report Node so findings are reviewed before delivery
Updated: 2026-06-12