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.

Event received--▶Webhook delivery--▶HTTP Action fires

Configuration

FieldTypeRequiredDescription
namestringYesFriendly label for the HTTP action
urlstringYesTarget URL for the HTTP request
methodstringYesGET, POST, PUT, PATCH, or DELETE
headersobjectNoKey-value pairs for request headers. Values support templates.
bodystringNoRequest body template. Supports {{payload.*}}, {{response.status}}, {{response.body.*}}.
triggerOnstringNosuccess, failure, or always. Default: success.
inputNodes{ nodeType, nodeId }[]YesUpstream nodes that feed this one
isActivebooleanNoEnable or disable without deleting. Default: true.

Create an HTTP Action

bashCreate 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

json201 Created
{
  "_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

bashUpdate 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

json200 OK
{
  "_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.

Use HTTP Actions to build lightweight integrations without writing code. Chain a webhook to an HTTP Action to forward enriched data to Slack, Notion, Airtable, or any REST API.

Payload Examples

Incoming Webhook Payload

jsonEvent payload
{
  "type": "user.signup",
  "customer": {
    "email": "[email protected]",
    "name": "Alice Smith",
    "plan": "pro"
  },
  "metadata": {
    "source": "landing-page",
    "campaign": "summer-2025"
  }
}

Rendered HTTP Request

httpOutgoing 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

VariableDescription
{{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.

HTTP Action requests have a 30-second timeout. If the target URL does not respond within this window, the action is marked as failed. The action itself is not retried — only the primary webhook delivery has retry logic.

API Reference

MethodWebhookDescription
GET/api/http-actionsList all HTTP actions for your organization
POST/api/http-actionsCreate a new HTTP action
GET/api/http-actions/:idGet a single HTTP action by ID
PATCH/api/http-actions/:idUpdate an HTTP action
DELETE/api/http-actions/:idDelete an HTTP action
HTTP actions count toward your plan limits. Free plans allow up to 3 HTTP actions per organization.