webhook trigger to a workflow — it’s an additional trigger, so the workflow stays request-callable too. Zite mints a stable ingress URL per webhook workflow:
The workflow
The upstream’s JSON body arrives directly asinput. Constrain inputSchema to the exact event so off-type deliveries fail validation (visible in run history) instead of running with the wrong shape:
inputSchema.
Rules
context.userisnullon webhook fires — the event body is your only input.- Respond within ~30s — upstreams retry on timeout, re-running your code.
- Dedup on a stable delivery id — usually in the body (
input.idfor Stripe,input.event_idfor Slack). GitHub’s is header-only atinput.__webhook.headers['x-github-delivery']. Inbound headers are lowercased (authorization/cookiestripped). - One webhook per workflow. For two upstreams, create two workflows sharing helper code.
- Don’t try/catch the
inputSchemaparse — let Zod errors bubble so failed deliveries show in run history. - Scope the upstream to send only the event types you handle, or Zod rejects most of the fan-out.