Search all guides

Reference · Tools

Webhook node

Start a workflow by receiving an external HTTP request, supporting various methods and authentication.

Webhook trigger Core Nodes v1

The Webhook node turns your workflow into an HTTP endpoint: when a request arrives at its URL, the workflow starts with the body, headers, query parameters and method available. It needs no credentials. A typical build is receiving callbacks from any service that has no dedicated trigger node.

Works as
Webhook trigger
Tool name
core_webhook
Parameters
11
Outputs
Output
Credentials
None required

What you can build with Webhook

  • Trigger workflow from an API call.
  • Listen for incoming webhooks.
  • Start when an HTTP POST is received.
  • Receive data from an external service.

Overview

Starts a workflow when an external HTTP request hits the webhook URL. Supports GET, POST, PUT, PATCH, DELETE methods with configurable authentication and response modes.

Node Type

Trigger — webhook (receives incoming HTTP callbacks)

Input / Output

DirectionPort(s)
InputNone (trigger node)
OutputOutput

Credentials

This tool does not require any credentials.

Parameters

ParameterTypeRequiredDefaultDescription
HTTP MethodoptionsNoPOSTThe HTTP method to listen for.
Options: GET, POST, PUT, PATCH, DELETE, * (All — accepts any method)
PathstringNo—Custom webhook path suffix. Leave empty for auto-generated path.
AuthenticationoptionsNononeAuthentication method for incoming requests.
Options: none, basicAuth, headerAuth
UsernamestringNo—Username for Basic Auth. (shown when Authentication is basicAuth)
PasswordstringNo—Password for Basic Auth. (shown when Authentication is basicAuth)
Header NamestringNox-webhook-tokenName of the header to check. (shown when Authentication is headerAuth)
Header ValuestringNo—Expected value of the auth header. (shown when Authentication is headerAuth)
Response ModeoptionsNoonReceivedWhen to send the HTTP response.
Options: onReceived (Immediately — reply as soon as the request is accepted)
Response CodenumberNo200HTTP status code for the response. (shown when Response Mode is onReceived)
Response DataoptionsNofirstEntryJsonWhat data to include in the response.
Options: firstEntryJson (First Entry JSON — returns the first data entry as JSON), noData (No Response Body — returns an empty response body)
Bot DetectionbooleanNofalseBlock requests from known bots and crawlers (uses User-Agent detection).

Output Data

Each incoming request produces one output item describing that request:

  • headers — the request headers
  • params — the route parameters
  • query — the query-string parameters
  • body — the parsed request body
  • method — the HTTP method the caller used
  • url — the requested URL
  • _trigger — always webhook
  • _timestamp — ISO 8601 timestamp of when the request arrived

Reference the payload downstream by expression, e.g. {{ $json.body.orderId }}.

Example Configuration

Basic webhook with no authentication:

{
  "id": "webhook-node",
  "type": "core_webhook",
  "position": [0, 0],
  "parameters": {
    "httpMethod": "POST",
    "path": "my-webhook",
    "authentication": "none",
    "responseMode": "onReceived",
    "botDetection": false,
    "responseCode": 200,
    "responseData": "firstEntryJson"
  }
}

Webhook protected with basic authentication:

{
  "id": "webhook-basic-auth",
  "type": "core_webhook",
  "position": [0, 0],
  "parameters": {
    "httpMethod": "POST",
    "path": "secure-webhook",
    "authentication": "basicAuth",
    "basicAuthUser": "admin",
    "basicAuthPassword": "secretpassword",
    "responseMode": "onReceived",
    "botDetection": true,
    "responseCode": 200,
    "responseData": "noData"
  }
}

Webhook protected with header authentication:

{
  "id": "webhook-header-auth",
  "type": "core_webhook",
  "position": [0, 0],
  "parameters": {
    "httpMethod": "PUT",
    "path": "api/webhook",
    "authentication": "headerAuth",
    "headerAuthName": "X-API-Key",
    "headerAuthValue": "your-api-key-here",
    "responseMode": "onReceived",
    "botDetection": false,
    "responseCode": 201,
    "responseData": "firstEntryJson"
  }
}

GET webhook on an auto-generated path:

{
  "id": "webhook-get",
  "type": "core_webhook",
  "position": [0, 0],
  "parameters": {
    "httpMethod": "GET",
    "path": "",
    "authentication": "none",
    "responseMode": "onReceived",
    "botDetection": false,
    "responseCode": 200,
    "responseData": "noData"
  }
}

Webhook accepting any HTTP method:

{
  "id": "webhook-any-method",
  "type": "core_webhook",
  "position": [0, 0],
  "parameters": {
    "httpMethod": "*",
    "path": "flexible-endpoint",
    "authentication": "none",
    "responseMode": "onReceived",
    "botDetection": true,
    "responseCode": 200,
    "responseData": "firstEntryJson"
  }
}

Use this pattern for secure API endpoints that require authentication:

{
  "id": "api-webhook",
  "type": "core_webhook",
  "position": [0, 0],
  "parameters": {
    "httpMethod": "POST",
    "path": "api/v1/webhook",
    "authentication": "headerAuth",
    "headerAuthName": "Authorization",
    "headerAuthValue": "Bearer your-token-here",
    "responseMode": "onReceived",
    "botDetection": true,
    "responseCode": 200,
    "responseData": "firstEntryJson"
  }
}

Use this pattern for handling form submissions:

{
  "id": "form-handler",
  "type": "core_webhook",
  "position": [0, 0],
  "parameters": {
    "httpMethod": "POST",
    "path": "form-submit",
    "authentication": "none",
    "responseMode": "onReceived",
    "botDetection": true,
    "responseCode": 200,
    "responseData": "noData"
  }
}

Use this pattern for internal system integrations:

{
  "id": "internal-webhook",
  "type": "core_webhook",
  "position": [0, 0],
  "parameters": {
    "httpMethod": "POST",
    "path": "internal/webhook",
    "authentication": "basicAuth",
    "basicAuthUser": "system",
    "basicAuthPassword": "internal-password",
    "responseMode": "onReceived",
    "botDetection": false,
    "responseCode": 202,
    "responseData": "noData"
  }
}

Trigger Behavior

  • Activation: When the workflow is activated, the node’s webhook URL starts accepting requests.
  • Deactivation: The URL stops accepting requests when the workflow is deactivated.
  • Payload: The incoming request body, headers and query parameters are output as workflow items.
  • Response: The node replies to the caller according to its response settings.

Tips

This tool receives incoming HTTP requests, acting as an API endpoint for external services. It is ideal when a workflow needs to be initiated by an external system sending data or a signal via an HTTP call. It produces the full details of the incoming request, including its body, headers, query parameters, and method.

Important Notes

  1. Authentication Conditional Logic: When using authentication, ensure you include the appropriate authentication parameters (basicAuthUser/basicAuthPassword for basic auth, or headerAuthName/headerAuthValue for header auth).

  2. Response Configuration: The responseCode and responseData parameters are only available when responseMode is set to "onReceived".

  3. Path Handling: Leave path empty ("") to use an auto-generated webhook path, or specify a custom path suffix.

  4. Bot Detection: Enable botDetection to automatically block requests from known bots and crawlers based on User-Agent headers.

Frequently asked questions

Can I require authentication?

Yes — with basic auth supply `basicAuthUser` and `basicAuthPassword`; with header auth supply `headerAuthName` and `headerAuthValue`. Include the parameters matching the method you selected, or the check cannot be applied.

What does the workflow receive?

The request body, headers, query parameters and HTTP method, so you can branch on any part of the incoming request.

When should I use this over a service-specific trigger?

When no dedicated trigger exists for the service. A dedicated trigger usually registers the webhook and verifies signatures for you, which this node leaves to you.

Does it need credentials?

No — any authentication is configured on the node itself.

Build with the Webhook node

Drop it into a workflow, wire it to an agent, or call it on a schedule.

Open BusyBot

Last reviewed . Spotted something wrong? Tell us.