Skip to main content

Node: Approval

The Approval node interrupts the workflow execution and sends a decision request to one or more approvers. The process only advances — or follows the timeout path — after someone clicks one of the configured decision buttons. It is the ideal node for any step that requires human review before continuing.

While waiting, the instance has the status Awaiting approval, visible in the "Last step" column on the instances screen of the workflow.


When to use

Use the Approval node whenever the process needs human validation before advancing. Common examples:

  1. Purchase authorization — a manager needs to approve or reject a request before the order is forwarded to the supplier.
  2. Approval levels — different levels of hierarchy approve values or decisions within defined limits.
  3. Content validation — a reviewer analyzes a document, form, or proposal and decides whether it is correct or needs adjustments.
  4. Compliance — a legal or quality officer confirms that an action is within standards before proceeding.
  5. Access release — an administrator approves or denies a request for access to systems or resources.

The node is versatile: you can configure as many results (outcomes) as needed, going beyond the simple "Approve / Reject" when the process requires more nuance.


Configuration

To configure the Approval node, click on it in the workflow editor canvas. The configuration panel opens on the right.

FieldRequiredDescription
Recipients (approvers)YesList of people who will receive the approval email. Can be an internal platform user, the respondent of the trigger or ancestor form, the value of a form email field, or an external email address typed freely. You can add multiple recipients; all receive the email, and the first response received ends the wait.
Outcomes (results)YesDefines the possible decisions for the approver. Each outcome has a label (text that appears on the email button and on the canvas output) and a color (button visual). Each registered outcome automatically generates an output (connector) on the canvas node, allowing routing the workflow through different paths depending on the decision made. At least two outcomes are required.
TimeoutNoMaximum wait time for the decision. Configure a duration and a unit (Minutes, Hours, Days, or Weeks). If the deadline expires without a response, the workflow follows through the TIMEOUT output of the node. When not configured, the node waits indefinitely.
Email subjectYesSubject line of the email sent to approvers. Supports variables in the format {{field_name}} to personalize the subject with instance data, such as the requester's name or the request title.
Email bodyYesMain content of the approval email. Editor with support for formatting, variable insertion ({{field_name}}), tables, and artifacts. Use this field to present the approver with all information needed to support the decision.
Artifact attachmentsNoAllows attaching to the email PDFs generated by ancestor nodes (such as exports or form responses in PDF) and files submitted in ancestor form fields. The approver receives the files directly in the email for review.

Configuring Outcomes

Outcomes define which decisions the approver can make. To configure them:

  1. In the node configuration panel, locate the outcomes section.
  2. Click Add outcome to include a new decision option.
  3. Fill in the outcome label — this text will appear on the email button the approver receives and will also identify the output on the canvas.
  4. Choose the button color to visually indicate the nature of the decision (for example: green for approval, red for rejection, yellow for review).
  5. Repeat the process for each possible decision.
  6. To remove an outcome, click the delete icon next to it.

After saving, each registered outcome automatically generates an output (connector) on the node in the canvas. In the canvas, connect each output to the next node corresponding to the path the workflow should follow for that decision:

  • The output labeled with the "Approved" outcome can connect to a Send email node for confirmation.
  • The "Rejected" output can connect to a Set status node that records the rejection.
  • The "Review" output can connect to a Request Follow-Up node.

Do not leave outputs disconnected — every output must lead to some node, even if it's just a Set status node to record the result.


Configuring the Timeout

The timeout is the maximum time the workflow will wait for a decision before automatically following the exception path.

  1. In the node configuration panel, locate the Timeout section.
  2. Enable the timeout and enter the numeric duration value.
  3. Select the time unit: Minutes, Hours, Days, or Weeks.
  4. Save the configuration.
  5. In the canvas, connect the TIMEOUT output to the node responsible for handling the deadline expiration — for example, a Send email node notifying that the approval was not completed on time, or a Set status node that records the situation.

When no timeout is configured, the node waits indefinitely for a response. The instance will remain in the Awaiting approval status until someone responds or the workflow is manually canceled.

Don't leave critical workflows without timeout

In processes with operational or financial impact, always configure a timeout. Without it, an instance can be stuck indefinitely if the approver doesn't receive or ignores the email — blocking the process for an indefinite time. A well-defined deadline ensures the workflow always advances, even in situations of absence or communication failure.


How the Approver Responds

The approver does not need to have access to the Hashdata panel to respond. The process is entirely conducted by the received email:

  1. The approver receives an email with the subject and body configured in the node, including contextual information and any attached artifacts.
  2. In the email body, decision buttons are displayed, one for each configured outcome, with their respective colors and labels.
  3. The approver clicks the button corresponding to their decision.
  4. An approval page opens in the browser, confirming the selected decision. On this page, the approver can optionally add a comment explaining the reason for the decision.
  5. After confirming, the decision is recorded and the workflow advances immediately through the path corresponding to the chosen outcome.
Use variables to contextualize the approver

Include variables in the subject and email body to present the approver with the most relevant information about the request. For example: Purchase request for {{product}} in the amount of {{total_value}} by {{requester_name}}. The more context the approver has in the email itself, the more agile and accurate the decision will be — without needing to search for information in other systems.

The approval link is single-use

Each approval email contains an exclusive link for that instance and that recipient. The link can only be used once: after the first decision is recorded, attempts to access the same link again will result in a message informing that the approval has already been completed. Also, if a timeout is configured, the link automatically expires at the end of the defined deadline.


Node Outputs

The Approval node can have the following outputs on the canvas:

OutputWhen it occurs
[Outcome label]When the approver clicks the button corresponding to that outcome. Each configured outcome generates a distinct output with its label.
TIMEOUTWhen the configured deadline expires without any approver having responded. Only appears when the timeout is enabled.

Recipient Types

When adding approvers, you can combine different recipient types in the same list:

TypeDescription
Platform userAn internal user registered in Hashdata. Ideal for fixed approvers such as managers or area leads.
Form respondentThe person who submitted the trigger or an ancestor form in the workflow. Useful when the requester themselves needs to confirm something.
Form email fieldThe value of an email-type question in an ancestor form. Allows addressing the approval to someone dynamically informed in the response, such as the email of a supervisor indicated by the requester.
External emailAn email address freely typed in the configuration. Useful for approvers outside the platform with a known fixed address.

Best Practices

  • Be objective in the email body: present only the information the approver needs to decide. Very long emails reduce engagement.
  • Use meaningful colors for outcomes: green for positive decisions, red for negative ones, and yellow or gray for neutral ones like "Request review".
  • Always handle the TIMEOUT path: connect the TIMEOUT output to a node that notifies stakeholders and sets a clear status for the instance.
  • Consider multiple approvers with care: when there are several recipients, the first response ends the approval. Make sure any of the listed people has the authority to decide alone.
  • Document outcomes in the label: use descriptive labels like "Approve and forward" instead of just "Yes" so that the instance history is more readable.