Skip to content

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.

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.

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.

string · optional

A token the sender must echo back in the X-Webhook-Secret header on every POST. Leave empty to accept any POST to the URL — fine for a quick internal test, risky once the URL might leak into logs, browser history, or a shared channel.

Example: wf_shared_9c2a1e

  • wf_shared_9c2a1e — a long random token, generated once and pasted into both Routario and the sending service’s webhook config
  • password123 — guessable — anyone who finds the URL can also guess the secret; generate a random token instead

Auto-generated from the skill registry (load_skills()). Do not edit by hand.