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

# Last9 Alert Integration

> Receive Last9 alerts through Last9's webhook notification channel using a Flashduty PagerDuty integration; resolve notifications close the alert automatically.

Last9's webhook notification channel sends PagerDuty Events API v2 JSON to the URL you enter, with fields such as `event_action`, `dedup_key` and `payload`. The Flashduty [PagerDuty integration](/en/on-call/integration/alert-integration/alert-sources/pagerduty) accepts this format, so no separate Last9 integration is needed: create a PagerDuty integration in Flashduty and paste its push URL into Last9.

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

  ***

  Get an integration push URL in either of the two ways below. **Choose the PagerDuty integration type** in both, not Last9.

  ### Use a dedicated integration

  1. In the Flashduty console, go to **Channels** and open a channel
  2. Go to **Settings** → **Integrations** → **Dedicated integrations** and click **Add an integration**
  3. Select **PagerDuty** and click **Save**
  4. Open the generated integration card and copy the **Push URL**, in the form `https://api.flashcat.cloud/event/push/alert/pagerduty?integration_key=<integration key>`

  ### Use a shared integration

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

***

1. In Last9, go to **Notification Channels** and click **Add Channel** → **Webhook**
2. Enter the full push URL copied above as the webhook URL, including `?integration_key=...`
3. Save, and assign the channel to the Alert Groups that should notify it

Last9 detects URLs for Microsoft Teams, Flock, Google Chat, Telegram, Jira and Zenduty and switches to their own formats. A Flashduty push URL is not one of them, so Last9 sends the generic format described here.

## Field mapping

***

| Last9 field | Flashduty |
| :- | :- |
| `dedup_key` | Alert Key. Events with the same `dedup_key` belong to one alert |
| `event_action` | `trigger` and `acknowledge` create or update the alert with the severity from `payload.severity`; `resolve` closes it |
| `payload.summary` | Alert title |
| `payload.severity` | `critical`, `error` → Critical; `warning` → Warning; `info` → Info |
| `payload.source` | Labels `source` and `resource` |
| `payload.component`, `group`, `class` | Label of the same name |
| `payload.custom_details` | Each key becomes a label |
| `links`, `images` | Labels keyed by the link text (or `link_N`, `img_N`) |

## Recovery and deduplication

***

* When Last9 sends a notification with `event_action` set to `resolve`, Flashduty closes the alert with the same `dedup_key`.
* `severity` must be one of `critical`, `error`, `warning`, `info`; Flashduty rejects other values.
* `trigger` and `acknowledge` events must include `payload`; a `resolve` event with only `dedup_key` is accepted.
* Last9's documentation does not describe test-button behavior. After the first setup, verify with a real alert that both the trigger and the recovery show up in Flashduty.

## Troubleshooting

***

* **Flashduty returns `Invalid parameters`**: the push URL is incomplete and lacks `integration_key`, or the integration type is not PagerDuty
* **Alerts do not recover**: confirm Last9 sent a `resolve` notification and that its `dedup_key` matches the trigger
