How webhooks work
When a speedtest run completes — successfully or with a failure — Zepeed sends an HTTPPOST request to each configured webhook URL with a JSON payload describing the result. Your endpoint receives the payload and can react however you like.
Prerequisites
- Zepeed is installed and running. See Using Docker Compose.
- At least one provider is enabled. See Providers and schedule.
- A reachable HTTP(S) endpoint that can accept JSON
POSTrequests.
Add a webhook
1
Open Settings
From the dashboard, click your profile menu and select Settings.
2
Go to Webhooks
In the Settings sidebar, click Webhooks.
3
Create a webhook
Click New Webhook and fill in:
- Name — A label that identifies the integration (e.g.,
Slack alerts). - URL — The full HTTPS endpoint that should receive events.
- Events — Which events to send (test completed, test failed, etc.).
4
Save and test
Save the webhook, then trigger a manual speedtest to confirm your endpoint receives the payload.
Example payload
A typicaltest.completed payload looks like:
Field names may vary depending on the provider. Always treat unknown fields as optional in your consumer.
Integration examples
- Slack
- Discord
- Home Assistant
- Custom endpoint
Create an Incoming Webhook in Slack, then paste the URL into Zepeed. Use a relay service or middleware if you need to reshape the payload into Slack’s format.
Troubleshooting
- No requests received? Verify the URL is reachable from the Zepeed container and that any firewall or reverse proxy allows the outbound request.
- TLS errors? Make sure the endpoint uses a valid certificate. Self-signed certificates may be rejected.
- Retries? Failed deliveries may be retried automatically. Check Zepeed logs for delivery attempts.