Inbound provider webhooks
These routes receive callbacks from external providers. They are not called by your integration.Stripe
Stripe webhook routes process platform and connected-account payment events:Mailgun
Mailgun events update email delivery status:AssemblyAI
AssemblyAI transcription callbacks update media transcription state:Outbound webhook nodes (automations)
The automations engine ships awebhook node that POSTs a signed JSON payload to an endpoint you register. This is the current outbound webhook surface for customer integrations.
Webhook endpoints are hub-scoped and managed via:
webhook node fires inside an automation it POSTs a payload containing the automation context and enrollment metadata to your registered URL. Use the signing secret to verify the X-Mio-Signature-V1 header on your receiver, as described below.
See the Automations guide for the full node reference and lifecycle.
Delivery headers
Every delivery carries these headers:
Each retry is sent with a new
X-Mio-Timestamp and a new X-Mio-Signature-V1. Retries happen only on a timeout, a network error or a 5xx response. A 4xx response from your receiver is final, and that delivery is not retried.
Request bodies over 1 MiB are truncated to 1 MiB before sending, and both signatures cover the truncated bytes you receive.
Verifying a delivery
On every request:- Read the raw request body as bytes, before any JSON parsing. Re-serialized JSON won’t match.
- Check that
X-Mio-Timestampis only ASCII digits, and reject the request if it’s 300 seconds or more away from your clock, in either direction. - Compute
HMAC-SHA256(signing_secret, timestamp + "." + raw_body)using the exactX-Mio-Timestampstring you received, and format it asv1=plus lowercase hex. - Compare it with
X-Mio-Signature-V1using a constant-time comparison, never==. - Deduplicate on
X-Mio-Delivery-Id. A byte-for-byte copy of a delivery still verifies inside the 300-second window, and a retry can arrive after an earlier attempt you already processed.
X-Mio-Signature today, switch to X-Mio-Signature-V1. Both headers are sent during the deprecation window, so you can deploy the new check before the old header goes away.