Webhooks & Integrations
Availability monitoring without blind spots
Configure Outgoing Webhooks
Route UptimeGuard alerts directly to your internal systems, Slack channels, or custom dashboards. Define your endpoint, set retry policies, and control payload formatting.
Endpoint Configuration
Enter your HTTPS endpoint in the Integration panel. UptimeGuard sends POST requests with Content-Type: application/json. Include a secret header X-UG-Signature to verify payload authenticity using HMAC-SHA256.
Retry & Timeout Logic
We attempt delivery up to 5 times with exponential backoff (2s, 10s, 30s, 2m, 5m). Requests time out after 8 seconds. Failed deliveries trigger a fallback email to the account owner.
Accept Incoming Webhooks
Push external metrics or status updates into UptimeGuard for unified tracking. Each workspace receives a dedicated inbound URL that parses JSON and maps fields to your existing monitors.
Use the inbound endpoint to sync third-party health checks, CI/CD pipeline results, or custom infrastructure telemetry. UptimeGuard validates the payload schema, extracts monitor_id and status, and updates your dashboard in real time. Rate limiting is set to 60 requests per minute per workspace.
Payload Mapping
Map external fields to UptimeGuard properties: service_name → monitor title, latency_ms → response time metric, is_healthy → operational status. Mismatched fields are logged but do not block ingestion.
Authentication & Routing
Secure inbound traffic with a workspace-specific API key passed in the Authorization: Bearer header. Requests are routed to the correct project based on the workspace_id field in the JSON body.
Failure Webhook Structure
When a monitored endpoint transitions to down, degraded, or timeout, UptimeGuard delivers a standardized JSON payload. Copy the structure below to build your parser or webhook handler.
{
"webhook_id": "wh_8f3a9c2e1b",
"event": "monitor.status_change",
"timestamp": "2024-06-15T14:32:08Z",
"monitor": {
"id": "mon_7d4e2a1f",
"name": "API Gateway - EU West",
"url": "https://api.example.com/v2/health",
"check_type": "https",
"interval_seconds": 30
},
"status": {
"previous": "up",
"current": "down",
"downtime_duration_seconds": 0,
"last_successful_response_code": 200,
"current_response_code": 503,
"error_message": "Connection refused after 8000ms"
},
"alerting": {
"severity": "critical",
"channels_notified": ["slack-ops", "pagerduty-primary"],
"acknowledged_by": null
}
}
All timestamps use ISO 8601 format. The webhook_id is unique per delivery attempt and can be used for deduplication. Retry payloads include a retry_count field starting at 1.