Skip to main content
Use a Metoro webhook to send alert triggers and recoveries to Flashduty On-call. The firing and resolved notifications of one fire instance update one Flashduty alert. You write the Metoro webhook body yourself in Body Template, and Metoro substitutes variables such as $alert_name with real values. The template on this page is the format Flashduty parses, so copy it as is.

In Flashduty On-call

Create either a dedicated or shared Metoro alert integration and copy its complete Push URL.

Configure Metoro

1

Add a webhook in Metoro

Where: Metoro › Settings › Integrations › Webhooks › Add Webhook
$metric_name and $breaching_datapoint_value are only set for metric and trace alerts; $attributes is only set when the alert uses group by.
Keep both the alert_fire_uuid and state fields, and do not remove the quotes around the variables. Flashduty rejects the request when alert_fire_uuid is missing or state is not firing / resolved, because it cannot reliably tie later recoveries to the alert.
2

Make the webhook an alert destination and turn on recovery notifications

Where: Metoro › Alerts › create or edit an alert › Select Destination › Add Destination › WebhookSelect the webhook from the previous step and check Notify when alarm recovers. The UI expands two webhook selectors; pick the same webhook for both firing and recovery. Without the checkbox, Metoro only sends firing and the Flashduty alert does not recover automatically. Save the alert.
3

Verify the lifecycle

Metoro has no standalone test button. Let an alert that uses this webhook as its destination actually fire. After a few seconds, go back to Flashduty. If the integration shows a Latest event time, the setup works. When the condition clears, confirm the original alert recovers. To debug deliveries, filter Metoro’s Logs page by environment=metoro-internal and service.name=metoro-webhooks.

Alert key

Flashduty uses alert_fire_uuid (Metoro’s $alert_fire_uuid, the UUID of one fire instance) as the Alert Key. Metoro’s own Rootly integration guide pairs firing and resolved notifications on this same field (identifier $.metoro_alert_fire_uuid, state field resolved), and states that for alerts with a group by, each group value has its own $alert_fire_uuid while $alert_uuid is the same for all of them.
  • For an alert with a group by, each group value maps to its own Flashduty alert and recovers independently
  • When the same alert definition fires again, it gets a new alert_fire_uuid and opens a new Flashduty alert
  • Changes to description, value, and similar fields don’t change the Alert Key

Status and severity

Metoro alerts have no severity field, so every alert is treated as Warning. An empty or other state value is rejected. To distinguish severity, adjust it with rules in the Flashduty channel.

Troubleshooting

  • Metoro reports a webhook failure (400): confirm the Body Template is valid JSON and that alert_fire_uuid and state are not empty. Metoro escapes variables automatically for JSON requests, so don’t add escaping yourself
  • 404 or 401: confirm the Push URL is complete and includes integration_key
  • The alert doesn’t recover: confirm the destination has Notify when alarm recovers selected with the same webhook, and that state is resolved
  • attributes is empty: the field has a value only when the alert uses a group by
For more variables, see the Metoro webhook documentation.