Skip to content

Approval basics

The Approval node pauses a workflow until a person approves or rejects. The run then continues down the Approved or Rejected branch. Use it to put a human sign-off in front of anything that should not happen automatically.

The Approvals page with two expense claim requests, each showing an Email chip, View workflow, when it was requested and expires, the message, a Comment field and Reject and Approve buttons.The Approvals page with two expense claim requests, each showing an Email chip, View workflow, when it was requested and expires, the message, a Comment field and Reject and Approve buttons.

What you can do

  • Pause for sign-off before sending an email, paying an invoice or changing a record.
  • Approve only the risky cases: put an If node in front and send just that branch through the Approval node.
  • Email the request to people with a link they can open without logging in. See Public approval links.
  • Ask for a comment, extra fields or attachments with the decision.

Adding an Approval node

The Approval node is in the Flow Control group of the palette, described as "Pause for approval". It has one input and three outputs: Approved, Rejected and Timeout. Wire Approved and Rejected. The Timeout output is not used by this node.

The Approval node inspector: Approval Type Email, a Message built from an expression, two approver emails, Approval Strategy, Timeout, and the Options section with Require Comment switched on.The Approval node inspector: Approval Type Email, a Message built from an expression, two approver emails, Approval Strategy, Timeout, and the Options section with Require Comment switched on.

Settings

Field Notes
Approval Type How the request reaches people. Email sends it to the approvers. UI Dialog (the default) keeps it in the app only. See Approval notifications.
Message What the approver reads. Supports expressions, so you can include data from earlier nodes. Default: "Please review and approve to continue".
Approvers Email addresses. Click Add approver + to add one. With Approval Type Email, each address gets the request.
Require Comment The approver must enter a comment before deciding.
Allow Attachments The approver can attach files to the decision.
Custom Fields Extra questions on the approval page. See Custom fields.

Only Email sends anything. The Slack, Microsoft Teams and Webhook types do not post the request anywhere: the request waits in the app as with UI Dialog. To ask for a decision in Slack, see Approvals in Slack.

Custom fields

Click Add Custom Field and set:

  • Label: the question.
  • Type: Text, Number, Email, Text Area, Checkbox or Date.
  • Required: whether the approver must answer.

Custom fields appear on the public approval page. The answers come out in customFieldValues.


What happens when the run reaches the node

  1. The run pauses. Its status becomes Waiting, and the node shows "Waiting for approval".
  2. Flero creates a new approval link for this request.
  3. With Approval Type Email, Flero emails each approver.
  4. The request appears in Approvals and in the sidebar Notifications popup.
  5. When someone decides, the run continues down the matching output. Data from nodes before the pause is still available to expressions.

A paused run holds no worker. It can wait for days. It waits until someone decides or the run is stopped.


Deciding in the app

Open Approvals at /approvals. Get there from View all approvals in the sidebar Notifications popup, or from the " Required" bubble in the editor. See Approval notifications.

Each pending request is a card with:

  • The workflow name and a View workflow link.
  • A chip for the channel: Email, Slack, Teams or Public link.
  • When it was requested.
  • The message.
  • A Comment field. It is required if the node asks for a comment.
  • Attachments, up to 10 files, if the node allows them.
  • Reject and Approve.

After you decide, the card shows "Approval submitted" and the run continues. The toast reads "Workflow approved and resumed" or "Workflow rejected". With nothing pending, the page reads "No pending approvals".

Anyone in the workspace who can open the run can decide it. The Approvers list controls who gets the email. It does not limit who can approve in the app.


The node's output

After a decision, the node sends the data it received before the pause, plus these fields:

Field Notes
approved true or false
comment The approver's comment, or empty
approvedBy, approvedAt Who approved and when. Present when approved.
rejectedBy, rejectedAt Who rejected and when. Present when rejected.
timeToApproval Seconds from request to decision
respondedAt When the decision was made
customFieldValues Answers to custom fields, if any
attachments Files the approver attached, if any

approvedBy and rejectedBy hold the person's email when they decide in the app, and "External Approver" when they decide through the public link.

Read the fields with expressions, for example {{ $node["Manager Approval"].output.comment }}.


Approvals in Slack

The Slack connector's send and update operations have a Wait for response option: "Pause this workflow until someone clicks a button." Each button becomes an output, plus one for the timeout.

  • Time out after (minutes) defaults to 1440. When it passes, the run continues down Timed out.
  • Who can respond lists the people who may decide, and Who counts as allowed limits it to anyone, people in your Slack workspace, or full members.

Use it when you need a real deadline, or when the decision should happen in Slack. See Slack.


Stopping a waiting run

To cancel a request, open the workflow, select the waiting run and press Stop in the editor header. The approval link stops working. See Rerun, stop & pause.


Tips & gotchas

  • Nothing times out on its own. A forgotten request waits until someone decides or stops the run. For a deadline, use Slack Wait for response. The "Expires" date on an approval card is for information only.
  • The message is a snapshot. It shows the data as it was when the run paused.
  • Do not put secrets in the message. Anyone with the approval link can read it.
  • Approval inside a loop asks for a decision on every pass.
  • Need more than one sign-off? Chain Approval nodes. See Multiple approvers.


Found something out of date? This page lives in the Flero docs content set.