Webhook
Trigger · Stable
Start a workflow via an inbound HTTP POST with optional secret validation.
Receives an HTTP POST at /flows/webhook/<workflow_id> (the exact URL is shown in the Webhook trigger panel, ready to copy). The request JSON body is available as payload (dict or raw string). An optional shared secret can be validated in workflow settings. Good for integrations with Stripe, GitHub, or any external service that supports outbound webhooks.
When to use
Section titled “When to use”Use when an external service (Stripe, GitHub, a payment gateway, another app) needs to push data into a workflow and delivers it as an HTTP POST. The payload dict flows directly into downstream steps — no polling needed.
When not to use
Section titled “When not to use”If the trigger is an internal platform state change, use Event instead — it carries typed event keys rather than a raw payload dict. For scheduled runs use Schedule (Cron); for email-initiated runs use Incoming email. Heads-up: a run from this trigger has no signed-in user, so {{ user.* }} and {{ actor.* }} are empty. Bind any recipient or owner — a send_email to, a deal owner_actor_id, a task assigned_to — to a concrete email or actor_id, never {{ user.* }}; or collect it at run time with an Ask-a-person step.
Inputs
Section titled “Inputs”secret
Section titled “secret”string · optional
If set, the webhook receiver verifies X-Webhook-Secret against this.
Auto-generated from the skill registry (load_skills()). Do not edit by hand.