The HTTP Response node sends a response back to whatever called your webhook — letting you control the status code, body, and headers the caller receives, instead of leaving them with a generic acknowledgment.
This node only does something when your flow was triggered by a webhook. If the flow was started by a schedule, a different integration, or anything else, there's no caller waiting for a response, so this node has nothing to send back to.
Use an HTTP Response node whenever your flow is triggered by an incoming webhook and the system calling it expects a specific reply, such as:
Returning a 200 OK with a confirmation payload after processing an order webhook
Returning a 4xx/5xx error response with details when something went wrong
Echoing back data the caller sent, with extra fields added
Sending a specific format (JSON, plain text, HTML, or XML) that the calling system expects
Field Required Description Step name Yes (defaults to httpResponse) A name for this step's output, used to reference it later in your flow. Status code Yes (defaults to 200) The HTTP status to send back, picked from a list of common codes (200, 201, 202, 204, 400, 401, 403, 404, 409, 422, 429, 500). Content type Yes (defaults to JSON) JSON, Plain text, HTML, or XML. This is also sent as the response's Content-Type header automatically. Quick templates No Pre-built starting points: Success, Echo data, Order confirmed, Error, Plain text. Response body No The actual content sent back, written as a Handlebars template. Supports {{variables}} and {{json object}} for embedding data from earlier steps. Custom headers No Any additional headers to include, as key/value pairs. Values support {{variable}} syntax.
If your Response body is valid JSON once your variables are filled in, it's automatically pretty-printed before being sent.
The Content type you choose is automatically set as the Content-Type response header — you don't need to add it again under Custom headers, though you can override it there if you specifically need to.
Quick templates are just starting points to fill in the body and content type for you — feel free to use one then tweak it.
The result is stored under the Step name you chose, with these fields available:
Reference Returns {{httpResponse.sent}} Whether the step ran (see note below) {{httpResponse.statusCode}} The status code that was set {{httpResponse.body}} The final, resolved response body {{httpResponse.sentAt}} Timestamp the step ran
(Replace httpResponse with whatever Step name you chose.)
Important: {{httpResponse.sent}} will show true even when the flow wasn't triggered by a webhook and nothing was actually sent anywhere — it currently reflects that the step ran, not that a response was genuinely delivered. Don't rely on this field to confirm a response reached the caller; it's only meaningful in webhook-triggered flows.
Each webhook call can typically only be responded to once. If you have multiple HTTP Response nodes that could both run in the same flow (for example, on different branches), make sure your flow's logic only allows one of them to actually execute per run — sending a second response to an already-answered webhook call is unlikely to work as expected.
For JSON responses, write your body exactly as JSON (including quotes around variables you want as strings), and use {{json someVariable}} rather than {{someVariable}} when inserting an object or array — this matches how the Set Variable node's json helper works and ensures the data is embedded as proper JSON rather than as plain text.
Navigate