$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, go to Settings → Integrations → Webhooks, select Add Webhook and fill in:
- Name: for example
Flashduty - URL: the complete Flashduty Push URL, such as
https://api.flashcat.cloud/event/push/alert/metoro?integration_key=<your-integration-key> - HTTP Method:
POST - Headers: Metoro adds
Content-Type: application/jsonto POST requests by default, so you don’t need to add one - Body Template: paste the template below
2
Use the webhook as an alert destination and enable recovery notifications
Add the webhook from the previous step to the alert’s destinations and select Notify when alarm recovers. The interface then shows two webhook selectors; choose the same webhook for both firing and recovery. Without this option Metoro sends only
firing, and the Flashduty alert does not recover automatically.3
Verify the lifecycle
Metoro has no separate test button. Let an alert that uses this webhook fire for real and confirm that Flashduty receives an active alert; after the condition clears, confirm the alert recovers.
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_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