Overview
Push real-time alerts directly into your own tools and workflows the moment a monitor changes state: no polling, no middleware, no delays. Webhook integrations let UptimeRobot send HTTP requests to any URL you specify whenever a monitor goes down, comes back up, or an SSL/domain certificate is about to expire.
Key capabilities:
Instant delivery — Receive alerts as HTTP requests the moment an incident starts or resolves
Custom headers — Authenticate with receiving systems by adding your own HTTP headers (e.g.,
Authorization,X-Api-Key)Rich payloads — Get all the context you need in a single notification: dashboard URL, incident timestamps, monitoring regions, monitor type, HTTP status code, tags, and group
Flexible delivery formats — Send data as JSON, POST parameters, query string values, or a fully custom POST body
Custom POST body — Define your own payload structure using built-in notification variables
API management — Create, update, and manage webhooks programmatically through the public API v3
Webhook integrations are available on Team and Enterprise plans.
Example Use Cases
Use Case | How Webhooks Help |
Route alerts to your incident management tool | Push structured alert data directly into your on-call workflow, your team gets notified instantly with full context |
Trigger automated remediation scripts | Fire a webhook to your automation platform to restart services or scale infrastructure the moment downtime is detected |
Feed monitoring data into your observability platform | Stream incident events into your centralized dashboard so downtime data lives alongside metrics and logs |
Post alerts to an internal chat channel | Deliver formatted alert messages to your team's communication tool via an incoming webhook URL |
Sync incidents with your ticketing system | Automatically create and resolve tickets when monitors go down and come back up, no manual triage needed |
Build a custom status dashboard | Consume webhook events to power a real-time status board tailored to your organization's needs |
Log incidents to an audit trail | Forward every alert to a logging service so you have a complete, searchable record of all monitoring events |
Filter and route alerts by tag or group | Use the |
How It Works
Setting up a webhook
Go to Integrations in the left sidebar and click Add Integration
Select Webhook from the list
Fill in the Webhook URL — the endpoint where UptimeRobot will send notifications
Configure how default notification variables are delivered (see Delivery Formats)
Optionally add a custom POST value to define your own payload structure
Optionally add custom headers for authentication or routing (see Custom Headers)
Under Events to notify about, choose which events trigger a notification:
Down events — When a monitor goes down
Up events — When a monitor recovers
SSL & Domain expiry — When an SSL certificate or domain is about to expire
Click Save to create the webhook
After saving, the webhook will fire automatically whenever a connected monitor triggers a matching event.
Editing a webhook
When editing an existing webhook, you can also set a Friendly name to help identify the integration in your list.
Custom Headers
Add custom HTTP headers to authenticate with receiving services or pass routing metadata, without needing to build a proxy in between.
Add up to 10 custom headers per webhook
Each header is a key-value pair (e.g.,
Authorization: Bearer your-token)Headers are included in every outgoing webhook request
Header names must follow standard HTTP header naming rules
Duplicate header names (case-insensitive) are not allowed
Total combined header size must not exceed 4 KB
This is especially useful when your receiving endpoint requires authentication headers, API keys, or custom routing identifiers.
Notification Variables
Every webhook notification includes a set of built-in variables that provide context about the event. You can use these variables in the webhook query string, POST parameters, or a custom POST body by wrapping them in asterisks (e.g., *monitorURL*).
List of variables
Variable | Description |
| The ID of the monitor |
| The URL of the monitor |
| The friendly name of the monitor |
| 1: down, 2: up, 3: SSL & Domain expiry |
| "Down" or "Up" |
| Additional info about the alert (if available) |
| Duration in seconds (only for up events) |
| Timestamp of the alert (Unix timestamp) |
| The alert contacts associated with the alert |
| SSL certificate expiry date (only for SSL expiry notifications) |
| Days until SSL expiry (only for SSL expiry notifications) |
| Direct link to the monitor in the UptimeRobot dashboard |
| When the incident began |
| When the incident was resolved (only for up events) |
| The monitoring regions that detected the event |
| The type of monitor (HTTP, Keyword, Ping, Port, etc.) |
| The HTTP status code returned (for HTTP-based monitors) |
| Tags assigned to the monitor |
| The group the monitor belongs to |
| Response time in milliseconds (only for response-time-related alerts) |
Delivery Formats
You can control how notification data is delivered in each webhook request. These options are found under Send default variables in the webhook form.
Format | Description |
As query string of webhook URL | Appends default variables as query parameters to the webhook URL |
As POST parameters | Sends default variables as form-encoded POST parameters |
POST value (custom body) | Define a fully custom request body using notification variables |
Send as JSON (application/json) | When using a custom POST value, sends the body with |
You can enable multiple delivery methods at once. For example, you can send default variables as query string parameters while also including a custom JSON POST body.
Custom POST body example
In the POST value field, you can define a custom JSON structure using notification variables:
{
"monitor": "*monitorFriendlyName*",
"status": "*alertTypeFriendlyName*",
"url": "*monitorURL*",
"details": "*alertDetails*"
}Enable Send as JSON (application/json) to ensure the receiving endpoint gets a properly formatted JSON payload.
API Access
Webhook integrations are fully supported in the public API v3. You can create, list, update, and delete webhooks programmatically.
Create a webhook integration
curl -X POST https://api.uptimerobot.com/v3/integrations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "Webhook",
"data": {
"friendlyName": "Production Alerts",
"urlToNotify": "https://your-server.com/webhook",
"sendAsJSON": true,
"postValue": "{\"monitor\": \"*monitorFriendlyName*\", \"status\": \"*alertTypeFriendlyName*\"}",
"sendAsQueryString": false,
"sendAsPostParameters": false,
"enableNotificationsFor": "UpAndDown",
"sslExpirationReminder": true,
"customHeaders": {
"Authorization": "Bearer your-service-token",
"X-Source": "uptimerobot"
}
}
}'
Update a webhook integration
curl -X PATCH https://api.uptimerobot.com/v3/integrations/12345 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "Webhook",
"data": {
"customHeaders": {
"Authorization": "Bearer updated-token",
"X-Environment": "production"
}
}
}'
List integrations
curl https://api.uptimerobot.com/v3/integrations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
The response includes all integration details, including configured custom headers.
