Webhook triggers

A webhook trigger turns your workspace into a listener: a secret URL that runs one of your saved actions or Smart Tools with every payload another service POSTs to it. GitHub pushes, Stripe events, form submissions, Zapier hooks, anything that can send an HTTP POST can now drive a flow you designed.

How a flow works

Ask your agent to design one: it builds (or picks) the tool that should handle the event, then calls create_webhook_trigger pointed at it. The payload arrives on the tool's input under webhook, with the body (parsed when it is JSON), the sender's x- headers (where services put event names and delivery ids), and when it arrived, so the tool reads webhook.body and acts on it. The receive URL comes back exactly once; paste it into the sending service's webhook settings.

When my repo gets a new release, post the notes to Slack.
Build the action, then create_webhook_trigger pointed at it with a
$0.50/day budget, and give me the URL for GitHub's webhook settings.

Why a budget is required

An inbound URL lets the outside world start billed runs while you are away, so a trigger never exists without two things beside it: a daily budget it may not cross, and you as the member who approved it. Deliveries run as you, within your own spend limits, and each one is priced before it runs; the moment a delivery would cross what is left of the day's budget, the trigger pauses and says so on the Webhooks page. The counter resets at UTC midnight. If the member who approved a trigger leaves the workspace, it turns itself off rather than keep spending on their behalf.

The URL is the credential

The URL carries 256 bits of entropy and is stored only as a hash, like an API key. Requests with a wrong URL are answered with a plain not-found, payloads are capped at 64 KB, each trigger is rate limited, and the payload itself is only ever handed to your tool as data. Turn a trigger off with its switch (the URL then tells the sender to stop), and rotate a leaked URL by deleting the trigger and creating a new one. Every delivery lands in the audit trail with what it ran and what it cost.

Something went wrong on our side. Reload ✕
Interactive features couldn't start. The realtime connection is being blocked. If this domain sits behind Cloudflare or a WAF, allow websockets to /_blazor. Retry ✕