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

# Formant alert integration

> Send Formant robot and device events to Flashduty On-call through event webhook forwarding.

When a Formant event triggers, its **Webhook forwarding** action sends the event as JSON to a URL you choose. Point the webhook at the Flashduty push URL and every Formant event creates one alert in Flashduty.

A Formant event is sent once and has no recovery notification, so the alert in Flashduty does not recover on its own. Turn on auto-close as described in [Recovery and auto-close](#recovery-and-auto-close).

<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 **Formant** 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 **Formant** 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 Formant

***

<Steps>
  <Step title="Create a webhook">
    1. Sign in to Formant, open the menu in the upper-left corner and click **Settings**
    2. Click **Integrations**, scroll down to **Webhooks** and click **Connect**
    3. Enter a webhook name. In **URL**, paste the full Flashduty push URL (starting with `https://` and including `integration_key`)
    4. Leave the parameters empty; Flashduty does not read them. Save
  </Step>

  <Step title="Turn on webhook forwarding for an event">
    1. Go to **Settings → Events** and open an existing event, or click **Add Event Trigger** to create one
    2. On the **Actions** tab, find **Webhook forwarding** and select the webhook from the previous step
    3. Under **Notification**, set the event severity (Info, Warning, Error, Critical). It sets the Flashduty alert severity
    4. Save. Select the webhook on every event you want to forward
  </Step>

  <Step title="Verify">
    Make a forwarded event trigger once (for example, take a device offline or push a datapoint over the threshold). Check that Flashduty shows an alert titled with the event message (for example `Oven temperature high`).
  </Step>
</Steps>

## Recovery and auto-close

***

Formant events cannot be changed after they trigger, and the webhook is sent once per event. The request body has no field that marks an event as ended or recovered, so the alert in Flashduty does not recover on its own.

Each Formant event is a separate Flashduty alert. Close it by hand, or turn on [auto-close](/en/on-call/channel/create-edit) in the channel that receives this integration. We suggest 2 hours; adjust to how quickly your team handles device problems.

## Alert Key

***

The Alert Key is the Formant event ID (`payload.id`). A repeated delivery of the same event merges into the same alert; different events, even from the same event trigger and device, are different alerts. If a request has no event ID, Flashduty generates a random Alert Key, and that alert is not merged either.

## Status and severity

***

The alert status equals its severity; it does not recover.

| Formant `severity` | Flashduty severity |
| :- | :- |
| `critical` | Critical |
| `error` | Critical |
| `warning` | Warning |
| `info` | Info |
| Missing or any other value | Warning |

## Alert content

***

* **Title**: the event `message`; if missing, `Formant event on <stream name>`; if that is missing too, `Formant event`
* **Description**: device ID, stream, datapoint value, event time and the event link in Formant

| Label | Source |
| :- | :- |
| `event_type` | `eventType`, for example `alert` |
| `event_id` | Event ID |
| `severity` | Severity set in Formant |
| `device_id` | Device ID |
| `stream_name` / `stream_type` | Stream name and type |
| `value` | Datapoint value that triggered the event; an object value is stored as JSON text |
| `source_url` | Event link in Formant |
| Device tags | Each key and value in the event `tags`; characters such as `.` and `-` in keys become `_`, and a tag never overrides the labels above |

## Troubleshooting

***

* **Flashduty receives nothing**: check that the event's **Actions** tab has the webhook selected under **Webhook forwarding**, and that the webhook URL is the full push URL including `integration_key`
* **Flashduty returns a parameter error**: the body is not JSON or has no `payload` object. Use Formant's built-in webhook forwarding and do not rewrite the body
* **Alerts never close**: Formant sends no recovery. Turn on auto-close in the channel, or close the alerts by hand


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.