Webhook
PaidTrigger a flow when an external service calls your bot's webhook URL.
Fires when an external service POSTs to your bot’s webhook URL — so other systems (a CRM, a payment provider, your backend, Zapier/Make) can trigger your bot’s flow. The request body is saved to a variable so the flow can use it.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
| Save raw body to variable | text | — | The whole POST body is stored in this variable (e.g. body) |
| JSON path → variable | key/value | — | Map fields from a JSON body straight to variables — no code |
Outcomes
default— continue the flow.
No-code field mapping
If the incoming body is JSON, map its fields to variables with JSON path → variable — the
same mapping the HTTP request block uses for responses.
For a body like {"order":{"id":42,"total":"9.99"}}:
| JSON path | Variable |
|---|---|
order.id | oid |
order.total | amt |
…then use {{var.oid}} and {{var.amt}} downstream — no Code block needed. (For anything more
complex, save the raw body and parse it with Code (JS).)
How it works
Create a webhook for a deployed bot via the API
(or it returns a URL like https://api.devnulll.dev/v1/hooks/<id>). The <id> is unguessable
and acts as the secret — anyone with the URL can trigger the bot, so keep it private.
When something POSTs to that URL, the body lands in your variable and the flow runs. To send a
message back to a chat, include ?chat_id=<id> on the URL (or a top-level "chat_id" in a JSON
body) — that chat becomes the target for the flow’s send-message blocks.
Webhook order.id → oid, order.total → amt
└─ default → Send "New order {{var.oid}} for {{var.amt}}"