Webhook payloads
Payload shapes Happy Uptime sends to webhook alert channels on each event.
Webhook payloads
When you configure a webhook alert channel, Happy Uptime sends a POST request with the following payload on each alert event.
Monitor down
Fired when a monitor transitions to down from any other state.
json{ "event": "monitor.down", "timestamp": "2026-03-07T14:22:00Z", "monitor": { "id": "mon_abc123", "name": "API Server", "url": "https://api.example.com/health", "type": "http" }, "check": { "status": "down", "status_code": 503, "response_time_ms": 30012, "error_message": "HTTP 503 Service Unavailable", "region": "us-east", "checked_at": "2026-03-07T14:22:00Z" } }
Monitor recovery
Fired when a monitor transitions from down back to up. Includes a downtime object with the total duration.
json{ "event": "monitor.recovery", "timestamp": "2026-03-07T14:35:00Z", "monitor": { "id": "mon_abc123", "name": "API Server", "url": "https://api.example.com/health", "type": "http" }, "check": { "status": "up", "status_code": 200, "response_time_ms": 142, "region": "us-east", "checked_at": "2026-03-07T14:35:00Z" }, "downtime": { "duration_seconds": 780, "started_at": "2026-03-07T14:22:00Z" } }
Delivery guarantees
Webhooks are delivered with exponential backoff retries on 5xx responses or connection failures. If your endpoint returns any 2xx status, delivery is considered successful. Non-2xx responses (other than 5xx) are treated as permanent failures and not retried.
Signing secret (optional)
If you set a headers.X-Secret on the channel config, Happy Uptime forwards that header on every request. Verify the value on your side to ensure the request came from Happy Uptime.