All integrations
n8n
Gate any n8n workflow behind a human approval step. Use the HTTP Request node to submit and poll, or configure outbound webhooks for real-time decisions.
Submit an approval request from n8n (HTTP Request node)
n8n HTTP Request
Node: HTTP Request
Method: POST
URL: https://app.cheqpoint.io/api/webhooks/inbound
Authentication: Header Auth
Name: x-api-key
Value: {{ $env.CHEQPOINT_API_KEY }}
Body (JSON):
{
"action": "{{ $json.action }}",
"summary": "{{ $json.summary }}",
"details": {{ $json.details | json }},
"riskLevel": "high",
"webhookUrl": "https://your-n8n-instance.com/webhook/cheqpoint-decision"
}
Output: { "id": "req_abc123", "status": "PENDING" }Node: HTTP Request
Method: POST
URL: https://app.cheqpoint.io/api/webhooks/inbound
Authentication: Header Auth
Name: x-api-key
Value: {{ $env.CHEQPOINT_API_KEY }}
Body (JSON):
{
"action": "{{ $json.action }}",
"summary": "{{ $json.summary }}",
"details": {{ $json.details | json }},
"riskLevel": "high",
"webhookUrl": "https://your-n8n-instance.com/webhook/cheqpoint-decision"
}
Output: { "id": "req_abc123", "status": "PENDING" }Poll for the decision (Loop node + HTTP Request)
n8n Flow
1. Store requestId from previous node: {{ $json.id }}
2. Add a Wait node - 10 seconds
3. HTTP Request (poll):
Method: GET
URL: https://app.cheqpoint.io/api/approvals/{{ $json.id }}
Header: x-api-key: {{ $env.CHEQPOINT_API_KEY }}
4. IF node:
Condition: {{ $json.status }} is not equal to PENDING
True → Continue workflow (check status === APPROVED)
False → Back to Wait node (loop)
5. IF node (approved?):
Condition: {{ $json.status }} equals APPROVED
True → Execute the action
False → Stop / send alert1. Store requestId from previous node: {{ $json.id }}
2. Add a Wait node - 10 seconds
3. HTTP Request (poll):
Method: GET
URL: https://app.cheqpoint.io/api/approvals/{{ $json.id }}
Header: x-api-key: {{ $env.CHEQPOINT_API_KEY }}
4. IF node:
Condition: {{ $json.status }} is not equal to PENDING
True → Continue workflow (check status === APPROVED)
False → Back to Wait node (loop)
5. IF node (approved?):
Condition: {{ $json.status }} equals APPROVED
True → Execute the action
False → Stop / send alertReceive decisions via webhook (recommended)
n8n Webhook node
1. Add a Webhook node to your n8n workflow:
Path: /cheqpoint-decision
Method: POST
2. In Cheqpoint Settings → Integrations → n8n:
Webhook URL: https://your-n8n.com/webhook/cheqpoint-decision
Events: request.approved, request.rejected
3. Decision payload received by the webhook node:
{
"event": "request.approved",
"requestId": "req_abc123",
"status": "APPROVED",
"action": "transfer_funds",
"summary": "Transfer £1,000 to IBAN GB29...",
"decisionNote": "Approved under delegated authority",
"decidedAt": "2025-03-18T14:32:00.000Z"
}
4. Route on status:
IF {{ $json.status }} === "APPROVED" → execute transfer
ELSE → send alert to Slack1. Add a Webhook node to your n8n workflow:
Path: /cheqpoint-decision
Method: POST
2. In Cheqpoint Settings → Integrations → n8n:
Webhook URL: https://your-n8n.com/webhook/cheqpoint-decision
Events: request.approved, request.rejected
3. Decision payload received by the webhook node:
{
"event": "request.approved",
"requestId": "req_abc123",
"status": "APPROVED",
"action": "transfer_funds",
"summary": "Transfer £1,000 to IBAN GB29...",
"decisionNote": "Approved under delegated authority",
"decidedAt": "2025-03-18T14:32:00.000Z"
}
4. Route on status:
IF {{ $json.status }} === "APPROVED" → execute transfer
ELSE → send alert to SlackFull n8n workflow example (JavaScript Function node)
JavaScript
// Function node: Build Cheqpoint payload
const item = $input.first().json;
return [{
json: {
action: "process_refund",
summary: `Refund £${item.amount} for order ${item.orderId}`,
details: {
orderId: item.orderId,
amount: item.amount,
currency: "GBP",
reason: item.reason,
customerEmail: item.email,
},
riskLevel: item.amount > 500 ? "high" : "medium",
}
}];// Function node: Build Cheqpoint payload
const item = $input.first().json;
return [{
json: {
action: "process_refund",
summary: `Refund £${item.amount} for order ${item.orderId}`,
details: {
orderId: item.orderId,
amount: item.amount,
currency: "GBP",
reason: item.reason,
customerEmail: item.email,
},
riskLevel: item.amount > 500 ? "high" : "medium",
}
}];