> ## 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.

# Pulsetic alert integration

> Send Pulsetic website down, recovery and SSL certificate expiry alerts to Flashduty On-call through a monitor webhook.

Use the webhook notification of a Pulsetic monitor to send down (`monitor_offline`), recovery (`monitor_online`) and SSL certificate expiring (`certificate_expires_soon`) notifications to Flashduty On-call. Each monitor maps to one Flashduty alert: the alert triggers when the monitor goes down and closes automatically when it recovers.

<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, go to **Channels** and open a channel
  2. Select **Configuration** → **Integrations** → **Private integration**, then click **Add an integration**
  3. Select **Pulsetic** and click **Save**
  4. Open the new integration card and copy the **push URL**

  ### Use a shared integration

  1. In the Flashduty console, go to **Integration Center → Alert Events**
  2. Select **Pulsetic** 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>

## In Pulsetic

***

<Steps>
  <Step title="Open the monitor's webhook settings">
    1. Log in to Pulsetic, go to **Monitors**, click **···** next to the monitor and select **Alerts**
    2. Under **Developer Tools**, select **Webhook**
    3. Paste the complete Flashduty push URL into **Webhook URL** and click **Save**

    You can also configure it once under **Account → Alerts** so it applies to all monitors (General Alerts).

    <Note>
      The free plan allows 1 webhook URL per monitor. Webhook notifications do not need a paid plan.
    </Note>
  </Step>

  <Step title="Send a test request (optional)">
    After saving, click **Send test** to show three buttons: **Send Online Request**, **Send Offline Request** and **Send SSL Expires Soon Request**. The Online and Offline buttons each create an Info alert titled `Pulsetic test notification` in Flashduty and do not affect the real alert of the monitor. The SSL button sends the real remaining days of the monitored address's certificate, which cannot be told apart from a real reminder, so Flashduty handles it as one and creates a Warning alert. The test alert does not recover on its own, so close it manually after verifying.
  </Step>

  <Step title="Verify the lifecycle">
    Let a monitor go down for real (for example, point it to a URL that returns 5xx) and confirm Flashduty receives a Critical alert. Restore the target and confirm the alert closes.
  </Step>
</Steps>

## Payload

***

Pulsetic POSTs the following fields as JSON. Flashduty parses them directly, with no template to configure:

| Field | Meaning | In Flashduty |
| :- | :- | :- |
| `alert_type` | `monitor_offline`, `monitor_online` or `certificate_expires_soon` | Trigger or recovery, label `alert_type` |
| `monitor.id` | Monitor ID | Alert Key, label `monitor_id` |
| `monitor.name` | Monitor name | Alert title, label `check` |
| `monitor.url` | Monitored URL | Labels `url` and `resource` |
| `monitor.response_code` | HTTP status code returned when down | Label `response_code` |
| `monitor.fail_reason` | Failure reason, for example `Check failed with 500 code` | Label `fail_reason`, added to the description |
| `monitor.downtime` | How long the monitor was down, sent on recovery | Added to the description |
| `monitor.tags` | Monitor tags | Label `tags` |
| `days_left` | Days left on the SSL certificate | Label `days_left`, added to the description |

The alert title is the monitor name. When the name is empty, the monitored URL is used.

## Alert Key

***

Flashduty uses `monitor.id` as the Alert Key for down and recovery alerts. The down, repeated down and recovery notifications of one monitor carry the same `monitor.id`, so they land on the same alert. Renaming the monitor or changing its URL or tags does not change the Alert Key.

SSL certificate expiry notifications get their own Alert Key built from `alert_type` and `monitor.id`. Repeated reminders for one monitor merge into one alert, and they never close or update the down alert.

When `monitor.id` is missing, Flashduty returns a parameter error because the recovery cannot be matched to the original alert.

## Status and severity

***

Pulsetic notifications carry no severity. Flashduty maps them as follows:

| `alert_type` | Flashduty status or severity |
| :- | :- |
| `monitor_offline` | Critical |
| `monitor_online` | Recovery, original severity Critical |
| `certificate_expires_soon` | Warning, does not recover on its own |

Any other `alert_type` (for example, a type Pulsetic adds later) is acknowledged and ignored without creating an alert.

## FAQ

***

<AccordionGroup>
  <Accordion title="Does the SSL expiry alert close on its own?">
    Pulsetic sends no recovery notification for certificate reminders. Turn on [**auto-close**](/en/on-call/channel/create-edit) in the Flashduty integration or channel, with a suggested duration of 24 hours. A new reminder after the certificate is renewed triggers again.
  </Accordion>

  <Accordion title="Can the test buttons affect a real alert?">
    The Online and Offline test buttons cannot. They send fixed sample values (for example the failure reason `fail reason`), so Flashduty recognises them and creates a separate Info alert, and never triggers, updates or closes the monitor's real alert. The SSL test button creates a Warning alert (see above); close it manually after the check.
  </Accordion>

  <Accordion title="I did not receive an alert right after the monitor went down?">
    Pulsetic probes at the check interval set on the monitor, and you can set how long it waits after a failure before notifying under **Intervals**. Flashduty receives nothing until Pulsetic sends the notification.
  </Accordion>
</AccordionGroup>

## Troubleshooting

***

* **Pulsetic does not push**: confirm the monitor's Alerts → Webhook is saved and the Webhook URL is the complete push URL including `integration_key`
* **Flashduty returns a parameter error**: confirm the request body contains `alert_type` and `monitor.id`
* **An alert does not recover**: confirm the recovery comes from the same monitor; `monitor.id` must match

For field details, see Pulsetic's [Webhook Notifications](https://help.pulsetic.com/article/235-webhook-notifications) article.
