HTTP Action
Fire HTTP requests to any URL after a webhook delivery completes. Build integrations, sync data to third-party services, or trigger downstream workflows — all with Handlebars templates for dynamic payloads.
Overview
The HTTP Action node is a post-delivery action that makes an HTTP request to a configured URL after a webhook processes a webhook event. It supports all standard HTTP methods and full template interpolation for headers and body. The node appears on the canvas with an indigo color.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Friendly label for the HTTP action |
| url | string | Yes | Target URL for the HTTP request |
| method | string | Yes | GET, POST, PUT, PATCH, or DELETE |
| headers | object | No | Key-value pairs for request headers. Values support templates. |
| body | string | No | Request body template. Supports {{payload.*}}, {{response.status}}, {{response.body.*}}. |
| triggerOn | string | No | success, failure, or always. Default: success. |
| inputNodes | { nodeType, nodeId }[] | Yes | Upstream nodes that feed this one |
| isActive | boolean | No | Enable or disable without deleting. Default: true. |
Create an HTTP Action
curl -X POST /api/http-actions \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Sync to CRM",
"url": "https://crm.example.com/api/contacts",
"method": "POST",
"headers": {
"Authorization": "Bearer crm-api-key-xyz",
"X-Source": "hostwh"
},
"body": "{ "email": "{{payload.customer.email}}", "name": "{{payload.customer.name}}", "source_event": "{{payload.type}}", "delivery_status": {{response.status}} }",
"triggerOn": "success",
"inputNodes": [{ "nodeType": "webhook", "nodeId": "6642f1a2c3b4d5e6f7890123" }],
"isActive": true
}'Response
{
"_id": "6643a1b2c3d4e5f6a7890001",
"name": "Sync to CRM",
"url": "https://crm.example.com/api/contacts",
"method": "POST",
"headers": {
"Authorization": "Bearer crm-api-key-xyz",
"X-Source": "hostwh"
},
"body": "{ "email": "{{payload.customer.email}}", ... }",
"triggerOn": "success",
"inputNodes": [{ "nodeType": "webhook", "nodeId": "6642f1a2c3b4d5e6f7890123" }],
"isActive": true,
"organizationId": "6640a1b2c3d4e5f6a7890001",
"createdAt": "2025-05-14T12:00:00.000Z",
"updatedAt": "2025-05-14T12:00:00.000Z"
}Update an HTTP Action
curl -X PATCH /api/http-actions/6643a1b2c3d4e5f6a7890001 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"method": "PUT",
"triggerOn": "always",
"headers": {
"Authorization": "Bearer new-crm-key",
"X-Source": "hostwh",
"X-Event-Type": "{{payload.type}}"
}
}'Response
{
"_id": "6643a1b2c3d4e5f6a7890001",
"name": "Sync to CRM",
"url": "https://crm.example.com/api/contacts",
"method": "PUT",
"headers": {
"Authorization": "Bearer new-crm-key",
"X-Source": "hostwh",
"X-Event-Type": "{{payload.type}}"
},
"body": "{ "email": "{{payload.customer.email}}", ... }",
"triggerOn": "always",
"inputNodes": [{ "nodeType": "webhook", "nodeId": "6642f1a2c3b4d5e6f7890123" }],
"isActive": true,
"organizationId": "6640a1b2c3d4e5f6a7890001",
"createdAt": "2025-05-14T12:00:00.000Z",
"updatedAt": "2025-05-14T13:15:00.000Z"
}Canvas Integration
On the visual canvas, the HTTP Action node uses the type http-action and is rendered with an indigo color scheme. Connect it to any webhook node to trigger HTTP requests after deliveries.
The node displays the action name, the target URL (truncated), and the HTTP method badge. Edges from webhooks flow into the HTTP action node, indicating the post-delivery relationship.
Payload Examples
Incoming Webhook Payload
{
"type": "user.signup",
"customer": {
"email": "[email protected]",
"name": "Alice Smith",
"plan": "pro"
},
"metadata": {
"source": "landing-page",
"campaign": "summer-2025"
}
}Rendered HTTP Request
POST https://crm.example.com/api/contacts
Authorization: Bearer crm-api-key-xyz
X-Source: hostwh
Content-Type: application/json
{
"email": "[email protected]",
"name": "Alice Smith",
"source_event": "user.signup",
"delivery_status": 200
}Template Variables Available
| Variable | Description |
|---|---|
| {{payload.*}} | Any field from the original webhook event payload |
| {{response.status}} | HTTP status code from the webhook delivery |
| {{response.body.*}} | Parsed JSON body from the webhook response |
Use Cases
CRM Synchronization
Forward customer data from incoming payment webhooks to your CRM. Use the payload to extract customer information and the response to confirm the delivery was successful before syncing.
Slack Notifications via Incoming Webhooks
Point an HTTP Action at a Slack incoming webhook URL with a POST method. Build the Slack message payload using templates to include event details.
Error Logging to External Services
Set triggerOn to failure and POST failure details to services like Sentry, Datadog, or a custom error tracking webhook. Include {{response.status}} and {{response.body}} for diagnostic data.
Multi-Service Distribution
Attach multiple HTTP Actions to a single webhook to distribute data to several downstream APIs simultaneously after a successful delivery.
API Reference
| Method | Webhook | Description |
|---|---|---|
| GET | /api/http-actions | List all HTTP actions for your organization |
| POST | /api/http-actions | Create a new HTTP action |
| GET | /api/http-actions/:id | Get a single HTTP action by ID |
| PATCH | /api/http-actions/:id | Update an HTTP action |
| DELETE | /api/http-actions/:id | Delete an HTTP action |