Skip to content
For LLMsView as Markdown·

Respond to Webhook

In a workflow started by a Webhook Trigger, this node sets the HTTP status and body returned to whoever called the webhook. Without it, a webhook workflow returns a generic 202 Accepted and runs in the background; with it, the caller gets your response synchronously — so you can answer their request with real data.

When to use

  • A third-party system (or your own front end) calls your webhook and expects a response — a validation result, a computed value, an acknowledgement payload.
  • You're building a small request/response API on top of a workflow.

Configuration

FieldRequiredWhat it does
statusNoThe HTTP status code to return (100–599, default 200). Supports {{...}} refs.
bodyNoThe response body — JSON or plain text. Supports {{...}} refs, so you can return data computed earlier in the workflow.

If body is a JSON string it's returned as JSON (application/json); otherwise it's returned as text.

Example

[Webhook Trigger] → [API Call: look up player] → [Respond to Webhook]
                                                    status: 200
                                                    body: { "risk": "{{gateway_call.data.risk}}" }

The system that POSTed to your webhook receives 200 with that JSON body, instead of a 202.

What it outputs

{ status: 200, body: { … } }

Gotchas

  • Webhook workflows only. In a schedule- or event-triggered workflow there's no HTTP caller waiting, so the node has nothing to respond to.
  • The workflow runs while the caller waits. The response is synchronous and bounded by a timeout — keep the path to the Respond node fast. Long-running work should stay on the background (no-Respond) path.
  • One response wins. If more than one Respond node is on the executed path, the last one to run sets the response.
  • Back-compatible. A webhook workflow without a Respond node behaves exactly as before — it returns 202 and runs in the background.