> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashduty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# UptimeRobot alert integration

> Send UptimeRobot Monitor down and up notifications to Flashduty On-call through a webhook.

Use an UptimeRobot webhook integration to send Monitor down, up, and SSL certificate and domain expiry notifications to Flashduty On-call. A Monitor's down notification and the up notification that follows it map to the same Flashduty alert.

<Note>
  UptimeRobot offers webhook integrations only on the Team plan and higher paid plans (such as Team, Scale, and Enterprise). Free and Solo plans cannot add them.
</Note>

<div className="hide">
  ## In Flashduty On-call

  ***

  You can get the integration push URL in either of the following ways.

  ### Use a dedicated integration

  1. In the Flashduty console, select **Channel** and open a channel
  2. Select **Configuration** → **Integrations** → **Private integration**, then click **Add an integration**
  3. Select **UptimeRobot** and click **Save**
  4. Open the new integration card and copy the **Push URL**

  ### Use a shared integration

  1. In the Flashduty console, select **Integration Center → Alert Events**
  2. Select **UptimeRobot** and enter an integration name
  3. Configure the default route and select a channel. You can add more rules under **Routes** after creation
  4. Click **Save** and copy the generated **Push URL**
</div>

## Configure UptimeRobot

***

<Steps>
  <Step title="Add a webhook integration">
    1. Sign in to the UptimeRobot dashboard, select **Integrations** in the left sidebar, and click **Add Integration**
    2. Select **Webhook**
    3. Paste the complete Flashduty integration push URL into **Webhook URL**
  </Step>

  <Step title="Configure the POST value">
    1. Under **Send default variables**, leave **As query string** and **As POST parameters** unchecked
    2. Paste the following JSON into **POST value** and check **Send as JSON (application/json)**

    ```json theme={null}
    {
      "monitor_id": "*monitorID*",
      "monitor_url": "*monitorURL*",
      "monitor_friendly_name": "*monitorFriendlyName*",
      "monitor_type": "*monitorType*",
      "alert_type": "*alertType*",
      "alert_type_friendly_name": "*alertTypeFriendlyName*",
      "alert_details": "*alertDetails*",
      "alert_duration": "*alertDuration*",
      "alert_datetime": "*alertDateTime*",
      "incident_start_time": "*incidentStartTime*",
      "incident_end_time": "*incidentEndTime*",
      "http_status_code": "*httpStatusCode*",
      "monitoring_regions": "*monitoringRegions*",
      "monitor_group": "*monitorGroup*",
      "monitor_tags": "*monitorTags*",
      "dashboard_url": "*dashboardUrl*",
      "ssl_expiry_date": "*sslExpiryDate*",
      "ssl_expiry_days_left": "*sslExpiryDaysLeft*",
      "domain_expire_date": "*domainExpireDate*"
    }
    ```

    <Warning>
      Keep `monitor_id` and `alert_type`. Flashduty rejects a request with a missing `monitor_id` or an `alert_type` other than `1`, `2`, or `3`, because it cannot determine the event state or match the up notification to the original alert.
    </Warning>
  </Step>

  <Step title="Choose events to notify about">
    Under **Events to notify about**, check both **Down events** and **Up events**. With only Down events checked, Flashduty alerts never recover automatically. To receive certificate and domain expiry reminders, also check **SSL & Domain expiry**. Click **Save**.
  </Step>

  <Step title="Attach Monitors">
    Edit each Monitor you want to connect, select the new webhook integration in its notification settings, and save. Only Monitors attached to the integration send notifications to Flashduty.
  </Step>

  <Step title="Verify">
    On the Monitor details page, click **Test Notification** and select the webhook. UptimeRobot sends a simulated Down notification followed by a simulated Up notification, which confirms that the push URL and POST value are correct. During a real outage, UptimeRobot sends the Up notification after the Monitor recovers, and the matching Flashduty alert closes.
  </Step>
</Steps>

## Alert Key

***

Flashduty uses `*monitorID*` (the `monitor_id` field) as the Alert Key. UptimeRobot includes the same Monitor ID in both Down and Up notifications, so a Monitor's outage, repeated reminders, and recovery land on one alert, and different Monitors produce different alerts.

Changes to the Monitor name, URL, alert details, HTTP status code, or timestamps do not change the Alert Key. A Monitor that is deleted and recreated gets a new Monitor ID and is no longer linked to its old alerts.

## Status and severity

***

| UptimeRobot `*alertType*` | Meaning                                      | Flashduty status or severity          |
| :------------------------ | :------------------------------------------- | :------------------------------------ |
| `1`                       | Down: the Monitor is down                    | Critical                              |
| `2`                       | Up: the Monitor recovered                    | Recovered; original severity Critical |
| `3`                       | SSL certificate or domain is about to expire | Warning                               |

An empty or other `alert_type` is rejected so that an ambiguous request cannot enter the wrong alert lifecycle.

SSL certificate and domain expiry reminders have no matching recovery notification. Each reminder creates a separate Warning alert that does not recover automatically, so close it manually once handled.

## Delivery

***

* UptimeRobot sends Down and Up notifications once. It does not retry after a timeout, a connection error, or a non-2xx response. If an Up notification is lost, the matching alert stays active until you close it manually
* Recurring notifications configured on a Monitor resend the Down notification with the same Monitor ID, and Flashduty merges them into the existing alert

## Troubleshooting

***

* **Flashduty reports an invalid parameter**: verify that **Send as JSON (application/json)** is checked, the POST value is valid JSON, and `monitor_id` and `alert_type` are unchanged
* **JSON parsing fails**: check whether the Monitor name or alert details contain double quotes or backslashes, which can make the rendered POST value invalid JSON
* **The alert does not recover**: verify that **Up events** is checked under **Events to notify about**, and that the Flashduty push URL was reachable when the Up notification was sent
* **No notifications arrive**: verify that the Monitor is attached to the webhook integration and that the UptimeRobot account is on the Team plan or higher
* **Custom headers**: UptimeRobot supports up to 10 custom headers per webhook. Flashduty authenticates with the `integration_key` in the push URL, so no extra header is needed

See [UptimeRobot Webhook Integration](https://help.uptimerobot.com/en/articles/14498593-webhook-integration) for the variable definitions.
