$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.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 usesalert_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_uuidand 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_uuidandstateare 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
stateisresolved attributesis empty: the field has a value only when the alert uses a group by