Approvals
An Approval block stops a run and asks people of your organization to decide. The run waits until they answer, then continues down the branch they chose — Approved or Rejected.
Use it whenever a person has to say yes before the workflow does something that matters: paying an invoice, granting a leave request, sending a document to a customer.
The same block can also simply send someone a few questions and wait for the answers, without an approve-or-reject decision.
This page is about approvals inside a workflow. Approvals on tasks — a task that waits for its approver before it counts as done — are a different feature; see Task Approvals.
Setting up the Approval block
- Open the workflow and add an Approval block from the Logic category of the palette.
- Connect it after the step whose result needs a decision.
- Double-click the block to open its settings.
- Write the Request and choose the Approvers.
- Connect the Approved branch to what should happen next. Connect the Rejected branch too if a rejection needs its own steps.
- Click Save.
Approval settings
| Setting | What it does |
|---|---|
| Request | The request in one sentence, as the approvers will read it — for example Approve the laptop purchase. Required, at most 200 characters |
| Details | What the approvers need to know. You can insert values from earlier steps. The approvers see at most 4,000 characters |
| Approvers | The people who are asked. Required |
| Decision | One approver is enough or Everyone must approve |
| Approvers can reject | On by default. Switch it off to turn the block into a form that is sent to someone — see Sending questions without a decision |
| Fields to fill in | Optional questions the approver answers together with the decision |
| Time to answer (hours) | How long the approvers have. From 20 to 167 hours; 72 unless you change it |
Write the Request as fixed text. References to earlier steps belong in Details — the approvers see them there with the values filled in, as plain text.
Approvers
Type a name or an e-mail address into the search box under Approvers and click a person in the results to add them. Remove takes a person off the list. A block can ask at most 20 people.
Approvers are always chosen here, by name. They cannot come from a form answer or from an earlier step, so the person who sends a request can never pick who approves it.
A person who has left the organization stays on the list, marked "No longer in the organisation", until you remove them.
Decision
| Option | How the decision is made |
|---|---|
| One approver is enough | The first answer decides, whether it is an approval or a rejection. The other approvers are told that the request has already been decided |
| Everyone must approve | The run continues on Approved only after every approver has approved. A single rejection decides at once |
Fields to fill in
Under Fields to fill in you can add questions for the approver — an approved amount, a comment, a delivery date. They are built exactly like the questions of a form: see Fields.
Two differences from a form: an approval cannot ask for a File, and it cannot carry a document to download.
The answers are checked when the approver clicks Approve. A rejection does not need them.
Time to answer
Time to answer (hours) sets the deadline. When it passes without a decision, the run is cancelled.
If the approvers have 48 hours or more, everyone who has not answered yet gets one reminder a day before the deadline.
Sending questions without a decision
Switch Approvers can reject off when you only need someone to fill in a few fields — a manager adding a cost center, a colleague confirming a date.
| With Approvers can reject on | With it off |
|---|---|
| Two branches: Approved and Rejected | One branch: Sent |
| The approver sees Approve and Reject | The approver sees Send only |
| The page says "Waiting for your approval" | The page says "Waiting for your answer" |
Branches and outputs
The block's branches are labeled on the canvas. Connect each one like any other block.
| Branch | The run follows it when |
|---|---|
| Approved | The request was approved |
| Rejected | An approver rejected it |
| Sent | Only when Approvers can reject is off — the fields were sent |
Later steps can read what was decided:
| Output | What it holds |
|---|---|
approved | True when the request was approved (or sent) |
decision | approved, rejected or submitted |
reason | The reason given with a rejection |
decidedAt | When the decision was made |
decidedBy | Who decided: id, name and email |
fields | The deciding approver's answers, by answer name |
responses | Every answer that was given |
Read them as <blockname.output> — for example <approval.decision> or <approval.decidedBy.name> for a block named Approval. See Variables.
Who is asked
The block asks the people on its Approvers list. These people are never asked, even when they are on the list:
- the person who published the workflow;
- the person the workflow runs as;
- the person who sent the form that started the run;
- a person who can no longer sign in.
If nobody is left to ask, the step fails and the run stops there. Under Everyone must approve the step also fails when one of the chosen approvers can no longer sign in — the rule is never relaxed to the people who remain.
Do not make yourself the only approver of a workflow you publish. Publishing is refused when the block has nobody to ask once you, its publisher, are left out.
An approver needs no special permission. Any active person of your organization can be chosen and can answer.
How approvers are told
As soon as the run reaches the block, every approver gets:
- a notification in the app — "Your approval is needed: …", with the name of the workflow;
- an email with a button that opens the request.
Clicking either one opens the approver's page. See The Notification Bell for where notifications appear.
The request can only be opened by the person it was sent to, signed in to their own account.
The approver's page
What the page shows
| Part | What it tells the approver |
|---|---|
| Status line | "Waiting for your approval" and how much time is left |
| Title | Your Request, and under it the workflow's name — and the person it runs on behalf of, when there is one |
| Request | Your Details, with the values from earlier steps filled in |
| Files sent with the form | Files the requester attached to the form. Each has a Download button while the request is open |
| If you approve | The steps the workflow will run next, each with its name and kind. A step that sends data to an outside service says so. When nothing follows: "Nothing follows this step." With Approvers can reject off, the heading is Once you send it |
| Answer by | The date and time of the deadline |
| Rule | With more than one approver: "All 3 approvers must approve." or "Any one of 3 approvers can decide." |
| Your answers | The Fields to fill in, if you added any |
Approving
- Read the request and what approving will do.
- Fill in the fields under Your answers, if there are any.
- Click Approve.
If an answer is missing or not valid, the page marks the field, exactly as a form does.
Rejecting
- Click Reject.
- In Reject this request, write a Reason (optional).
- Click Reject to confirm, or Cancel to go back.
The reason is handed to the workflow, so a later step can pass it on to the requester.
After the decision
| The approver sees | Meaning |
|---|---|
| Your decision is recorded — "The workflow continues." | The decision was final |
| Your decision is recorded — "Your approval is recorded. The other approvers still have to answer." | Under Everyone must approve, others have not answered yet |
| You have answered “…” with You approved, You rejected or You sent it and the time | The approver opened a request they already answered |
When the request is closed
| The approver sees | Meaning |
|---|---|
| This request has been decided — "Another approver answered it. Nothing more is needed from you." | Somebody else decided first |
| This request is no longer open — "Its time ran out, or the workflow was stopped." | The deadline passed or the run was cancelled |
| This approval can't be opened — "The link is not yours, or the request no longer exists." | The request was sent to somebody else, or it is gone |
If the approver has the page open in two places, the older one is refreshed when they send: "This page was opened somewhere else, so it was refreshed. What you typed is still here; send your decision again."
While the run waits
A run that waits for an approval is Paused.
| Where | What you see |
|---|---|
| Logs tab | The run's status is Paused, with the note "Waiting for approval" |
| The editor's status strip | "Waiting for approval, until …. The approvers' decision continues the run." |
| The form the requester filled in | Your request is waiting for approval, with the time until which the approvers have |
There is no Resume button on such a run. Only the approvers' decision continues it.
See Logs for reading a run step by step.
Testing an approval
When you start the workflow with Run in the editor, the approval asks only you, whoever is on the Approvers list:
- you get the notification in the app — no email is sent;
- the approver's page carries the note "Test run: only you are asked".
This lets you walk through both branches without bothering the real approvers. The people on the list are asked only by runs of the published workflow.
When publishing is refused
Switching the workflow on, or clicking Publish changes, checks every Approval block. If a check fails, a message starting "Couldn't publish:" names the block:
| The message says | What to do |
|---|---|
| the approval is not set up completely | Give it a request, at least one approver, valid fields and a time of 20 hours or more |
| the approval step is inside a loop or inside a parallel branch | Move the block out of the loop or the parallel branch |
| the approval is reached by steps that include a loop or parallel branch | Place the approval where no loop or parallel branch leads to it |
| the approval comes after a Response step, which has already answered | Put the approval before the Response block |
| the approval has nothing connected to its Approved branch | Connect a step to Approved |
| the approval has a connection from a branch it does not have | Delete the leftover connection and connect the branch again |
| the approval has nobody to ask once you, its publisher, are left out | Add another approver, or have someone else publish |
| a step calls a workflow that waits for an approval, which nobody could answer from here | Move the approval into the calling workflow |
| the approval needs your organisation's server to be updated first | Ask your administrator |
See Publishing changes for how publishing works.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| An approver got no notification | They published the workflow, the workflow runs as them, or they sent the form — these people are never asked. Or the run was a test run, which asks only the person testing |
| I was asked instead of the approvers | You started the run with Run in the editor. Test runs ask only you |
| The run stopped at the approval with an error | Nobody on the list could be asked, or — under Everyone must approve — one approver can no longer sign in. Choose the approvers again |
| The run was cancelled at the approval | The Time to answer ran out. Give more hours, or ask more people |
| The approver sees This approval can't be opened | They opened someone else's link, or are signed in with another account |
| The approver cannot download a file | The request is closed, or the file's retention period has ended |
| The workflow will not publish | See When publishing is refused |
Related pages
- Forms — collect the request that needs approving
- Blocks — what each step does
- Running Workflows — activating and publishing a workflow
- Logs — see which runs are waiting and what was decided
- The Notification Bell — where approvers find their requests
- Task Approvals — approvals on tasks, a different feature