n8n
Pause an n8n workflow for an ActionBox approval, branch on the decision, and report what happened afterward.
The ActionBox node asks a person to approve or reject a request and keeps the n8n execution waiting for their answer. After approval, your workflow performs the operation and reports its outcome to ActionBox.
Install from npm
n8n-nodes-actionbox is
available for n8n instances you administer. The tested compatibility target
is n8n 2.38.7. It has not been verified for n8n Cloud. ActionBox itself runs at
https://actionbox.cloud.
Install the node
On your n8n instance, sign in as an owner or admin:
- Open Settings → Community Nodes and select Install.
- Enter
n8n-nodes-actionboxas the package name. - Read and accept n8n's notice about community nodes, then select Install.
- Add an ActionBox node to a workflow.
See n8n's community-node installation guide if the installation option is unavailable. To build from source instead, follow the public repository's Docker guide. That setup runs n8n locally and connects it to hosted ActionBox.
Configure callback delivery
Give n8n a public HTTPS callback address before requesting approval. For local Docker testing, use an HTTPS tunnel. Keep the address unchanged while any execution is waiting.
Keep n8n's data volume and execution records for at least as long as your approval timeout. They hold the state needed to resume after a restart.
A local n8n editor is enough to build a workflow. Live approval delivery also needs that reachable callback address: the hosted ActionBox service cannot call an address that is accessible only on your computer.
Add ActionBox credentials
Create a dedicated Source in the ActionBox dashboard. Copy its live Source key and webhook signing secret when they are shown.
In n8n, create ActionBox API credentials and save both values. The Source key authenticates API requests; the signing secret verifies callbacks. Keep both in n8n credentials, away from workflow parameters and Action descriptions.
Test Action ID is an existing Action owned by that Source. The connection test reads this Action to check the Source key. If the Source is new, save the credentials first, create a request, and then use its ID for the test. This check does not test the signing secret; receiving a valid callback does.
Run your first approval
Import the repository's example workflow. For the Docker installation, first generate the local example as described in the Docker guide. Custom nodes use a different node identifier from npm-installed nodes, and that step adjusts the import.

The example workflow in n8n. Report Success uses the ActionBox Report Outcome operation. Select the image to view it at full size.
- Select your ActionBox API credentials on both ActionBox nodes.
- Open Request Approval, which uses Request Approval and Wait. Give the request a clear title and enough description for the reviewer to understand it. For a first test, use a title such as “Approve this n8n test?” and a timeout of five minutes.
- Start the workflow. Open the request in the ActionBox inbox and choose Approve.
- Check that n8n continues through the approved branch and reports the demo operation's success. The demo performs no external operation.
- Start another execution and choose Reject. This execution should take the Not Approved branch.
Replace the demo step with your operation after these checks pass. Add a failure path that reports a failed outcome when the operation fails.
Configure the request
| Field | What to enter |
|---|---|
| Title | The decision the reviewer needs to make |
| Description | The context needed to make that decision |
| Priority | Low, normal, high, or urgent |
| Reviewer Emails | Comma-separated reviewer emails to restrict access; leave empty for workspace access |
| Approve Label / Reject Label | The button text; the option IDs stay approve and reject |
| Timeout (Minutes) | How long n8n waits; the default is 1,440 minutes (24 hours) |
Pass one input item to the waiting operation. A batch is rejected before any request is created. Use separate executions for concurrent approvals.
Branch on the result
Configure the IF node to test this boolean expression:
{{ $json.actionbox.approved }}Continue with the operation only when the value is true. The connector checks the callback signature and reads the current Action before returning approval. The decision must approve the same version and fingerprint that n8n originally submitted for review.
The result keeps the original input in input and the decision in actionbox:
| Field | Meaning |
|---|---|
input | The original input JSON |
actionbox.action_id | The Action to inspect or report an outcome for |
actionbox.approved | Whether this execution received a valid approval |
actionbox.decision_status | approved, rejected, expired, cancelled, timed_out, snapshot_changed, or invalid_response |
actionbox.action_version | The version submitted for review |
actionbox.fingerprint | The fingerprint of that version |
actionbox.response | Response data when available |
A rejection, expiry, cancellation, timeout, or changed review snapshot returns
approved: false. While the execution is waiting, its saved result is a timeout
placeholder. It is not a completed decision.
Report the execution outcome
Approval records permission to run. Report Outcome records what happened when your operation ran. Send Success only after it succeeds, or Failed from your failure path.
Map the approved result into these fields:
| Report Outcome field | Expression |
|---|---|
| Action ID | {{ $('Request Approval').item.json.actionbox.action_id }} |
| Action Version | {{ $('Request Approval').item.json.actionbox.action_version }} |
| Fingerprint | {{ $('Request Approval').item.json.actionbox.fingerprint }} |
These expressions use the node name in the example. Adjust the name if you rename that node. Preserve these values through your workflow rather than substituting a newer Action snapshot.
Protect the downstream operation with its own business idempotency key. Retrying an API request inside the connector reuses the original request payload and idempotency key, but starting a new n8n execution creates a new approval request. Neither approval nor outcome reporting prevents another service from executing a side effect twice.
Handle missed callbacks and cancellations
If no usable callback arrives before the deadline, n8n continues with
approved: false and decision_status: timed_out. A callback that arrives before
n8n has saved its waiting state can also be rejected and leave the execution
waiting until timeout. This version has no background polling fallback.
Use Get Action with the saved Action ID to inspect the latest state. Before recovering manually, compare its version and fingerprint with the saved approval request and check whether your operation already ran. Get Action does not turn an earlier timeout into automatic approval.
Use Cancel Action to cancel an outstanding request. Stopping the n8n execution alone does not cancel the Action; cancel it explicitly or let it expire.
Before using the workflow for real work, test rejection, cancellation, timeout, and restarting n8n while it waits. Keep waiting executions on the same connector and n8n versions until they finish.