Webhooks & Integrations

Availability monitoring without blind spots

Outgoing

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.

Incoming

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.

Payload Example

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.