Webhook Trigger

Receives inbound HTTP events from external systems and starts workflow execution. Use this for integrations with services like Stripe, GitHub, Clerk, or any system that sends webhook notifications.

When to Use

Use Webhook Trigger when:

  • An external service sends a POST (or other method) to notify you of an event
  • You want to react to events asynchronously (no synchronous response required)
  • The sender does not wait for your workflow to finish

If you need to return a response synchronously (the caller waits for your workflow), use API Endpoint instead.

Output

HandleTypeDescription
payloadobjectThe full incoming request envelope

The payload (accessed as {{ webhook.* }}) shape:

FieldTypeDescription
bodyanyParsed request body (JSON, text, or form data)
headersobjectAll request headers
queryobjectURL query parameters
methodstringHTTP method used
pathstringRequest path
rawBodystringUnparsed body string
contentTypestringValue of the Content-Type header

Settings

SettingTypeDefaultDescription
pathstring/webhookRoute suffix for this endpoint. Example: /stripe/events
methodselectPOSTHTTP method accepted. Most providers send POST.
verificationTypeselectnoneHow to verify the sender: none, static-secret, or hmac-signature
secretsecretSigning key or static secret. Only shown when verificationType is not none.
signatureHeaderNamestringX-Signature-256Header containing the signature sent by the provider.
signatureAlgorithmselectsha256HMAC algorithm: sha256 or sha512.
timestampHeaderstringX-Webhook-TimestampHeader with Unix-seconds timestamp for replay protection.
signatureToleranceSecondsnumber300Max age of a request in seconds. Set to 0 to disable.
missingTimestampselectallowWhether to accept requests without a timestamp header.
responseModeselectack-immediatelyack-immediately returns 200 instantly. use-workflow-response holds the connection until a Return node fires.
mockPayloadJSONTest body injected during canvas testing.
mockHeadersJSONTest headers injected during canvas testing.

Example

To receive GitHub push events with HMAC verification:

  1. Set path to /github/push
  2. Set verificationType to hmac-signature
  3. Set signatureHeaderName to X-Hub-Signature-256
  4. Set signatureAlgorithm to sha256
  5. Set secret to your GitHub webhook secret
  6. In GitHub, point the webhook to your deployed URL with content type application/json

Access the push event payload in downstream nodes:

{{ webhook.body.repository.full_name }}
{{ webhook.body.commits }}
{{ webhook.headers["x-github-event"] }}

Common Gotchas

  • Stripe webhooks: Use hmac-signature, set signatureHeaderName to Stripe-Signature, and set signatureAlgorithm to sha256. Stripe embeds the timestamp in the signature header — the built-in parser handles this automatically.
  • Response mode: Most webhook providers do not wait for a response. Set responseMode to ack-immediately unless you have a specific reason to hold the connection.
  • Path collisions: Each workflow has a unique base URL. The path setting is only a suffix — you cannot create conflicting routes across workflows.

See Also

On this page