Human in the Loop
Pause workflow execution and wait for human approval before continuing
The Human in the Loop block pauses a running workflow and waits for a person to review, provide input, or approve before execution continues. It is the primary mechanism for adding human oversight to automated pipelines.
Overview
Pause execution: The workflow halts at this block and enters a waiting state
Present context: Structured display data is shown to the reviewer so they can make an informed decision
Notify approvers: Optionally send a Slack message, email, or other notification with the review URL
Collect input and resume: The approver fills in the resume form and the workflow continues with their input available downstream
How It Works
When the executor reaches a Human in the Loop block it:
- Renders display data -- The
builderDatafields are evaluated (including any<variable.name>references) and presented as a structured summary for the reviewer. - Generates a resume URL -- A unique URL and API endpoint are created. The URL opens a review UI; the endpoint accepts a programmatic
POSTto resume. - Sends notifications -- If a notification tool (Slack, Email, etc.) is configured, the resume URL is dispatched automatically.
- Waits -- Execution is suspended. No downstream blocks run until the reviewer acts.
- Resumes -- Once the reviewer submits the resume form, the workflow picks up where it left off. Any fields the reviewer filled in are available as block outputs.
The block outputs two values after it pauses: url (the review UI link) and resumeEndpoint (an API URL you can call with curl or any HTTP client to resume programmatically).
Configuration
Fields
| Field | Purpose |
|---|---|
| Display Data | Structured key-value data shown to the reviewer. Reference upstream variables with <block.output> syntax. |
| Notification | Attach a tool (Slack, Email, etc.) that will fire when the block pauses, sending the resume URL to the right people. |
| Resume Form | Define the input fields the approver must complete before the workflow resumes. These become block outputs. |
Outputs
| Output | Type | Description |
|---|---|---|
url | string | URL to the review UI where the approver can act |
resumeEndpoint | string | API endpoint for resuming the workflow via HTTP POST |
Best Practices
- Always configure a notification so approvers know a workflow is waiting for them. Without one the resume URL must be shared manually.
- Keep display data focused -- include only the information the reviewer needs to make a decision.
- Design the resume form carefully -- downstream blocks will depend on the fields you define here, so name them clearly.