Alert channels
Webhook alerts
Forward downtime notifications from your monitors to any HTTPS endpoint. When a server agent monitor is marked down we immediately POST a JSON payload to your webhook URL, optionally including a bearer token so you can authenticate and process the alert safely.
How it works
- Create or edit an alert channel in Dash → Alerts → Channels and choose the webhook type.
- Provide a valid HTTPS URL. Optionally store a bearer token to include in the
Authorizationheader. - Attach the channel to one or more server monitors. When the monitor misses its heartbeat window we POST the payload below.
Webhook deliveries expect a 2xx response. Any other status is treated as a failure and logged so you can retry after fixing the destination.
Request details
https://your-webhook.example.xuptimemonitor.com/pathThe worker sends a single JSON object describing the downtime event.
- Content-Type —
application/json - Authorization (optional) —
Bearer <token>when you save a bearer token with the channel.
curl https://hooks.example.xuptimemonitor.com/uptime-alerts \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{ ...payload shown below... }'Payload example
This sample shows the body sent when a server agent named iad-app-01 misses its heartbeat window.
{
"monitorId": "b3f3d466-1a6d-4f67-af69-038b9f4403b6",
"monitorName": "Primary API",
"agentId": "agent-iad-01",
"agentHostname": "iad-app-01",
"status": "DOWN",
"detectedAt": "2025-01-07T14:22:11.893Z",
"downSince": "2025-01-07T14:18:02.441Z",
"duration": "4 minutes",
"monitorUrl": "https://xuptimemonitor.com/dash/server/monitors/view/b3f3d466-1a6d-4f67-af69-038b9f4403b6",
"ip": "203.0.113.42",
"message": "Primary API (iad-app-01) is DOWN"
}Values are always strings. Duration is human-readable, and the message string is safe to show directly in chat tools.
Field reference
| Field | Type | Description |
|---|---|---|
| monitorId | string | UUID for the affected monitor. |
| monitorName | string | Display name from your dashboard. |
| agentId | string | Unique identifier for the server agent that reported downtime. |
| agentHostname | string | Hostname supplied by the agent; may be empty when not configured. |
| status | string | Currently DOWN for heartbeat misses. |
| detectedAt | string | ISO-8601 timestamp when the worker confirmed the outage. |
| downSince | string | ISO-8601 timestamp for the last healthy heartbeat. |
| duration | string | Human-readable downtime length (minutes, hours, or days). |
| monitorUrl | string | Direct link to the monitor details inside the dashboard. |
| ip | string | Last IP address reported by the agent, when available. |
| message | string | Pre-formatted summary you can post directly into chat or ticketing tools. |
Slack & Discord ready
Every webhook channel can be pointed at Slack or Discord without additional glue code. When you select the Slack or Discord channel type in the dashboard we validate the official webhook format, render your custom message template, and send a chat-friendly payload (Slack blocks or Discord content) whenever an agent goes down.
- Use the Incoming Webhook URL from Slack (
https://hooks.slack.com/...). - Paste the Discord webhook URL from Server Settings → Integrations.
- Share a bearer token (for generic webhooks) to secure the endpoint without exposing secrets in the payload.
- Preview templates in the dashboard to confirm how placeholders render before you save.
Per-plan throttling
To prevent runaway alert loops we rate-limit deliveries per account. Limits reset every sliding minute and apply across all channel types. When a limit is reached we pause new deliveries until the window clears while continuing to track the incident internally.
| Plan | Alerts per minute |
|---|---|
| Free | 6 |
| Premium | 30 |
| Pro | 90 |
| Enterprise | 180 |
Need higher throughput? Contact support and we can raise the ceiling for Enterprise accounts.
Testing tips
- Point the webhook to a request bin (such as webhook.site) to inspect payloads during setup.
- Temporarily stop the associated server agent to trigger a real downtime event and confirm your integration.
- Edit the channel to rotate bearer tokens. Existing secrets are write-only for security.