Skip to main content

Human-in-the-Loop (HIL)

The Human-in-the-Loop node introduces approval gates into your automation workflows. When a workflow reaches an HIL step, it pauses execution and sends an approval request email. The workflow resumes only after a recipient responds with an approval or rejection. This is essential for workflows that require human judgment, compliance sign-off, or managerial authorization before proceeding.

Before You Use This Node

What you may needWhere to set it upWhy it matters
Email connection (for a custom sender)ConnectionsAny sender other than the built-in platform mailer requires a saved connection.
Recipient addressesGlobal VariablesReuse the same recipient list across approval workflows.
Supporting files for approval decisionsFilesStore files centrally when recipients need to review documents or reports.

Actions

ActionDescription
hil:approvalEmailSend an approval request email and wait for a response

hil:approvalEmail

Sends an approval request email and pauses the workflow until a recipient responds. Configuration lives under approvalEmailDetails, with button labels under approvalOptions.

Parameters

ParameterTypeRequiredDescription
tostringYesRecipient address(es) for the approval email
subjectstringYesSubject line of the approval email
bodystringYesBody content of the email (HTML supported). Should explain what is being approved
senderstringNoWhich sender to use. Defaults to qinfinite (see below)
connectionIdstringConditionalRequired when sender is any value other than qinfinite
ccstringNoCC recipients; resolved and passed through as ccCsv
bccstringNoBCC recipients; resolved and passed through as bccCsv
approvalOptions.approveLabelstringNoText on the approve button
approvalOptions.disapprovalLabelstringNoText on the reject button

The sender field

  • qinfinite (default) — uses the platform's built-in mail configuration (spring.mail.*). No connection is needed.
  • Any other value — a custom sender that requires connectionId. If connectionId is missing, the step fails with HIL_VALIDATION_ERROR.

How It Works

  1. The workflow reaches the HIL step and enters a waiting state.
  2. An approval email is sent to the configured recipients. The email contains Approve and Reject buttons (links) that call back to the Qinfinite platform.
  3. When a recipient clicks a button, the platform records the decision.
  4. The workflow resumes on the appropriate branch (approved or rejected).

The approve and reject callbacks are handled by the platform — the callback URLs are built in and embedded in the email automatically; you do not configure them.

How the Approval Email Looks

The approval email is sent either from the platform's built-in mail service (default qinfinite sender) or from the connection identified by connectionId for a custom sender. Each email contains:

  • The subject you configured in the HIL step parameters.
  • The body content, rendered as HTML, providing context about what is being approved.
  • Two prominent buttons: Approve and Reject, labeled per approvalOptions.approveLabel and approvalOptions.disapprovalLabel. These are hyperlinks that point back to the platform's callback endpoint.

Connection

  • With the default qinfinite sender, the HIL node uses the platform's built-in email service and no separate connection is required.
  • With a custom sender, a saved email connection referenced by connectionId is required.

The callback URLs for approve/reject actions are generated and embedded by the platform. Ensure the platform's callback endpoint is network-accessible to recipients. If recipients are outside the corporate network, they need firewall rules or VPN access to reach the callback endpoint, or the endpoint must be exposed to the internet.

Output

The HIL result reports the approval outcome, which you can use to drive downstream logic.

Using the Decision in Next Steps

The approval outcome can drive downstream workflow logic:

  • Conditional branching: Connect the HIL node's output to a Conditional node that evaluates the decision and routes the workflow accordingly (for example, proceed on approval, notify on rejection).
  • Example flow: HIL node outputs a decision, followed by a Conditional node that branches on the approval result. The true branch proceeds with the approved action; the false branch sends a notification that the request was denied.