Input & Output
Understand the data the Webhook Trigger node provides to downstream nodes after activation.
Trigger Nodes Have No Inputs
As a trigger node, the Webhook Trigger has no upstream inputs. It is always the first node in a workflow. All data it produces comes from the incoming HTTP request itself — the body, headers, query string, and path parameters are all captured and made available downstream.
Output Ports
| Port Name | When Triggered | Description |
|---|---|---|
main |
On every valid incoming HTTP request that passes authentication | The primary output port. Carries the full parsed webhook request as a structured data object. All downstream nodes in the workflow receive this data as their starting input. |
Authentication Failures
Requests that fail authentication are rejected before the workflow starts. They do not produce any output on the
main port and do not consume a workflow execution. The caller receives a 401 Unauthorized or 403 Forbidden HTTP response.
Output Data
The main output port provides a single item containing the following top-level keys:
| Key | Type | Description |
|---|---|---|
body |
Object / String | The parsed request body. For application/json, this is a deserialized JSON object. For application/x-www-form-urlencoded, it is a key-value object. For other content types, or when raw_body is true, this is a raw string. |
headers |
Object | All HTTP request headers as a key-value object. Header names are lowercased. Includes standard headers like content-type, user-agent, authorization, and any custom headers from the caller. |
query |
Object | URL query string parameters parsed into a key-value object. For example, a request to /orders?status=pending&limit=20 produces {"status": "pending", "limit": "20"}. All values are strings unless explicitly cast. |
params |
Object | Named path parameters extracted from the URL path. For a path configured as /orders/:orderId/items/:itemId, a request to /orders/ORD-001/items/ITEM-42 produces {"orderId": "ORD-001", "itemId": "ITEM-42"}. |
method |
String | The HTTP method used by the caller (e.g., POST, GET). Useful when the same workflow logic handles multiple methods or for audit logging. |
url |
String | The full URL of the incoming request, including protocol, host, path, and query string. Useful for debugging and audit trails. |
received_at |
ISO 8601 String | Server-side timestamp of when the webhook was received, in UTC. Format: 2024-06-15T14:32:00.000Z. |
execution_id |
String | Unique identifier for this workflow execution, assigned at trigger time. Useful for correlating logs and responding to the caller with a tracking ID. |
Data Flow Example
Below is a representative data object produced by the Webhook Trigger node for a POST request from a Stripe payment webhook. This is the object available to all downstream nodes as $trigger or via the node output reference.
{
"body": {
"id": "evt_3PQr0sLkdIwHu7ix0WZ1XYZQ",
"object": "event",
"type": "payment_intent.succeeded",
"created": 1718461920,
"livemode": true,
"data": {
"object": {
"id": "pi_3PQr0sLkdIwHu7ix0AbCdEfG",
"amount": 8500,
"currency": "usd",
"status": "succeeded",
"customer": "cus_Qr8MnLpZxYw001",
"metadata": {
"order_id": "ORD-20240615-0042",
"customer_email": "jane.doe@acmecorp.com"
}
}
}
},
"headers": {
"content-type": "application/json",
"user-agent": "Stripe/1.0 (+https://stripe.com/docs/webhooks)",
"stripe-signature": "t=1718461920,v1=a3f9c2b4e8d0...",
"x-forwarded-for": "54.187.174.169",
"host": "hooks.bizfirstai.com"
},
"query": {},
"params": {},
"method": "POST",
"url": "https://hooks.bizfirstai.com/webhook/stripe-payments",
"received_at": "2024-06-15T14:32:00.000Z",
"execution_id": "exec_7Hk2mNpQr9XwYz"
}
Accessing Data in Downstream Nodes
Use BizFirst expressions to access any part of the webhook data in subsequent nodes:
| Expression | Returns |
|---|---|
{{ $trigger.body.type }} | "payment_intent.succeeded" |
{{ $trigger.body.data.object.amount }} | 8500 |
{{ $trigger.body.data.object.metadata.order_id }} | "ORD-20240615-0042" |
{{ $trigger.headers["stripe-signature"] }} | The Stripe signature string |
{{ $trigger.received_at }} | "2024-06-15T14:32:00.000Z" |
{{ $trigger.execution_id }} | "exec_7Hk2mNpQr9XwYz" |