- Get started
- Build
- Deploy and run
- Examples
- Reference
Add human approval to a workflow
Pause a workflow at a review step, send an approval task to an approver, and continue based on their response.
What you build
A workflow that pauses at a review step, sends an approval task to a designated approver, and continues on the correct path once the human responds, approved or rejected. The pattern is the building block for any workflow that requires a human sign-off before proceeding.
This guide uses the Quick Form task type, where the approval form is built directly on the node.
Nodes used
- Manual Trigger: starts the workflow on demand.
- Quick Form: pauses the run and creates an approval task for the assigned approver.
- Terminate: ends the rejected path cleanly.
Steps
With a coding agent set up, you can skip the manual steps. Ask it:
Build a Maestro Automate workflow that starts manually with a request, sends it to a Quick Form node that has Approve and Reject outcomes, and continues on a separate path for each outcome.
Build a Maestro Automate workflow that starts manually with a request, sends it to a Quick Form node that has Approve and Reject outcomes, and continues on a separate path for each outcome.
Then open the workflow on the canvas, check it against the steps below, and test it. Set up your coding agent describes the setup.
1. Build the pre-approval steps
First, set up the nodes that run before the approval point. Create a new workflow and add the nodes that fetch or receive the data the approver needs to review, then transform it into a readable format.
2. Add a Quick Form node
Add the node that creates the approval task and pauses the workflow.
- Select the + on the output handle of the last pre-approval node, and open the Human category of the Add node panel.
- Select Quick Form. The new node connects to the previous node automatically.
- In the properties panel, configure the task:
- Task Delivery: review the admin-configured channels where the task is delivered, such as Action Center, the UiPath app where humans handle tasks, or Slack.
- Assignment criteria: set the approver as a single user, a variable-based custom assignment, or a group assignment strategy such as round robin, which assigns tasks in turn, or workload distribution.
- Schema: define the form. Add input fields for the read-only context the approver reviews (for example, the invoice amount, the requester name, and a link to the supporting document), each bound to a workflow value such as
$vars.manualTrigger1.output["amount"]. For this scenario, add two outcomes: Approve and Reject. - Priority: set to High if the task is time-sensitive.
3. Branch on the approver's response
The Quick Form node has one output handle per outcome you defined, so you route each outcome directly.
- Connect the Approve outcome handle to the continuation of the workflow (for example, a system write or a notification).
- Connect the Reject outcome handle to a Terminate node to end that path cleanly.
4. Test and debug
A real approver is not needed to test this workflow. Either approach works:
- Run in debug without mocking: debug the workflow with Debug at the top left of the toolbar and let it reach the Quick Form node. The task opens inline within the canvas, so it can be completed without leaving the debugger, and both the Approve and Reject branches can be verified with the actual task experience.
- Use a static mock: simulate a response instead of completing a task.
- Open the expanded view of the Quick Form node, and set the mode menu in the Output column to Static mock.
- Set
statustoApprove(orRejectto test the rejection branch). - Debug the workflow and verify the correct branch executes.
- Set the mode back to Live before deploying.
Result
The workflow pauses at the Quick Form node, sends the approval form to the designated approver, and routes the run on the correct path once the human responds. The approved path continues the automation, and the rejected path ends cleanly.
Extend this workflow
- Notify the approver: before the Quick Form node, add a notification step (email or Slack) to tell the approver that a task is waiting.
- Escalate on rejection: on the Reject path, instead of terminating immediately, invoke an Autonomous Agent or route to a second approver.
- Collect the approver's notes: add an output field to the schema (for example, a comment) and read it after the node with
$vars.approval.output.comment.
Next steps
- Deploy a workflow: make the workflow run without you.
- Guides: more workflows to build.
- Community: share what you built, or ask other builders for help.