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

# Atatus Alert Integration

> Sync Atatus incident open and close notifications to Flashduty On-call through a Webhook notification channel.

Sync Atatus incidents to Flashduty On-call through an Atatus Webhook notification channel. Each Atatus incident maps to one Flashduty alert: it triggers when the incident opens (`Opened`) and closes when the incident closes (`Closed`).

<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 **Atatus** 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 **Atatus** and enter an integration name
  3. Configure the default route and pick a channel; add more rules under **Routes** later
  4. Click **Save** and copy the generated **push URL**
</div>

## In Atatus

***

<Steps>
  <Step title="Create a Webhook notification channel">
    1. Sign in to Atatus, go to **Alerting → Notification Channels** and click **Create new notification channel**
    2. Select **Webhook** as the channel type
    3. Enter `Flashduty` as the **Channel name**, paste the full Flashduty push URL into the URL field
    4. Click **Create channel**
    5. Open the channel and click **Send Test Notification** to check the URL: Flashduty returns success and opens a separate Info alert that you close manually
  </Step>

  <Step title="Attach the channel to an alert policy">
    Open an alert policy under **Alerting → Alert Policies**, click **Add notification channels**, tick the `Flashduty` channel and click **Add Channels**. Atatus notifies the channel when an incident under that policy is opened, closed or acknowledged.
  </Step>

  <Step title="Verify the lifecycle">
    Trigger an alert rule and confirm Flashduty receives an active alert. After the incident closes in Atatus (or after you change the rule so the condition no longer holds), confirm the alert recovers.
  </Step>
</Steps>

## Payload

***

Atatus POSTs these fields as `application/json`. Flashduty parses them directly, with no template to configure:

| Field | Meaning | In Flashduty |
| :- | :- | :- |
| `incident_id` | Incident ID | Alert Key, label `incident_id` |
| `rule_name` | Alert rule name | Alert title, label `check` |
| `status` | `Opened` or `Closed` | Trigger or close |
| `severity` | `Critical` or `Warning` | Severity |
| `description` | Firing condition, e.g. `Event Count goes below 1000 events` | Description |
| `alert_policy_name`, `alert_policy_id` | Alert policy | Labels `policy`, `policy_id` |
| `rule_id` | Rule ID | Label `rule_id` |
| `product` | Product, e.g. `Logs` | Label `product` |
| `duration` | Incident duration, sent on close only | Description |
| `incident_url` | Link to the incident in Atatus | Description |

Other fields, including `target_name`, `acknowledge_url`, `account_id`, `alert_url` and `timestamp`, are not stored.

## Alert Key

***

Flashduty uses `incident_id` as the Alert Key. The open and close notifications of one Atatus incident carry the same `incident_id`, so they land on the same alert. What counts as one incident is set by the policy's **Incident preference** (by policy, by rule, or by rule and target), and Flashduty follows it.

A request without `incident_id` is rejected with a parameter error, because its close notification could not be matched to the original alert.

## Status and severity

***

| Atatus field | Flashduty status or severity |
| :- | :- |
| `status` is `Opened`, `severity` is `Critical` | Critical |
| `status` is `Opened`, `severity` is `Warning` or anything else | Warning |
| `status` is `Closed` | Recovery, severity taken from the notification's `severity` |
| `status` is `Acknowledged` | No event is created; success is returned |

A request whose `status` is empty or any other value is rejected, so a request of unknown state never lands in the wrong lifecycle.

## FAQ

***

<AccordionGroup>
  <Accordion title="Does acknowledging an incident in Atatus affect the Flashduty alert?">
    No. Acknowledge notifications are accepted and ignored. Handle the Flashduty alert in Flashduty.
  </Accordion>

  <Accordion title="The channel test succeeded, but real alerts do not arrive?">
    The channel test only checks that the URL is reachable and opens a separate Info test alert. Confirm the alert policy uses the channel, the rule is enabled, and the condition held for the duration the rule requires.
  </Accordion>
</AccordionGroup>

## Troubleshooting

***

* **Atatus fails to deliver**: confirm the URL is the full push URL and includes `integration_key`
* **Flashduty returns a parameter error**: confirm the request has `incident_id` and that `status` is `Opened`, `Closed` or `Acknowledged`
* **The alert does not recover**: confirm the alert policy still uses the channel; the close and open notifications must carry the same `incident_id`

For the channel settings, see the Atatus docs [Webhook](https://docs.atatus.com/docs/product-guide/tool-integrations/webhook.html) and [Alert Incidents](https://docs.atatus.com/docs/alerting/alert-incidents.html).
