Skip to main content
Webhooks let your application receive real-time HTTP notifications when events happen in Mavio. Instead of polling the API for changes, register a webhook endpoint and Mavio pushes event data to you as it happens.

Setting up a webhook

1

Open webhook settings

Navigate to Settings > Developer > Webhooks and click Add Endpoint.
2

Configure the endpoint

Provide:
  • URL — the HTTPS endpoint where Mavio sends events (must be publicly accessible)
  • Events — select which events trigger this webhook (see event types below)
  • Description — optional label for this endpoint
3

Receive the signing secret

Mavio generates a signing secret for this endpoint. Copy it and store it securely. You use this to verify that incoming requests are genuinely from Mavio.
4

Test the endpoint

Click Send Test Event to verify your endpoint receives and responds correctly. Mavio sends a ping event and expects a 200 response.
Use a service like webhook.site during development to inspect incoming payloads before building your handler.

Event types

Payload format

All webhook payloads follow this structure:

HTTP headers

Each webhook request includes the following headers:

Signature verification

Verify webhook signatures to ensure requests are genuinely from Mavio. Each request includes an HMAC-SHA256 signature in the X-Mavio-Signature header.
Always verify webhook signatures before processing the payload. Without verification, an attacker could send fake events to your endpoint.

Retry logic

If your endpoint does not return a 2xx response, Mavio retries the delivery with exponential backoff: After 5 failed attempts, the delivery is marked as failed. You can view and manually retry failed events from Settings > Developer > Webhooks > [Endpoint] > Deliveries.
If an endpoint consistently fails (10+ consecutive failures), Mavio disables it and sends an email notification. Re-enable it from the webhook settings after fixing the issue.

Troubleshooting

Verify the URL is publicly accessible over HTTPS. Check that your server responds with a 200 status within 10 seconds. Use the Send Test Event button to debug.
Ensure you are comparing against the raw request body (not a parsed/re-serialized version). The signature is computed over the exact bytes sent by Mavio.
Webhook deliveries are at-least-once. Your endpoint may receive the same event more than once during retries. Use the X-Mavio-Delivery header as an idempotency key to deduplicate.
Mavio sends webhooks from a fixed set of IP addresses listed in the webhook settings page. You can allowlist these in your firewall.
Yes. Toggle the Active switch on any endpoint to pause deliveries. Events that occur while paused are not queued and are skipped.