Rootly + Metoro Integration Benefits
- Automatically create incidents in Rootly when Metoro alerts are triggered
- Page on-call responders through Rootly’s incident response workflows
- Auto-resolve incidents when alerts recover in Metoro
- Centralize incident management while leveraging Metoro’s deep observability
How it Works
Rootly integration with Metoro works through webhooks. When an alert is triggered in Metoro, it sends a webhook notification to Rootly, which can then create an incident and page the appropriate teams. When the alert recovers, Metoro can send a recovery notification to auto-resolve the incident in Rootly.Requirements
- A Rootly account with webhook access
- Admin access in Metoro to configure integrations
- A webhook URL and authentication token from Rootly
Support
If you need help with this integration, please email support@metoro.io or join our Community Slack.Integration Walkthrough
Step 1: Create a Webhook in Rootly and Add it to Metoro
Access Rootly Settings
Create New Webhook

Alert Sources Page in Rootly with Generic Webhook
Configure Webhook Name and Owning Team
- Name: Give your webhook a descriptive name (e.g., “Metoro Alerts”)
- Owning Team: Select the team that will manage this webhook

Rootly webhook create screen
Configure Webhook Routing

Rootly webhook alert routing screen
Copy Webhook URL and Token

Rootly webhook URL and token
Add Copied Webhook in Metoro

Metoro Add Webhook button
Fill in the Webhook Details
- Name: “Rootly Alert Webhook” (or your preferred name, can be the same as in Rootly)
- URL: Paste the webhook URL from Rootly (make sure to replace any placeholders with actual values)
- HTTP Method: POST
- Headers: Add the Authorization header
- Click Add Header
- Header Name:
Authorization
- Header Value:
Bearer YOUR_ROOTLY_TOKEN
(replace with your actual token)
- Body Template: Leave empty to use the default JSON payload, or customize it as needed.

Metoro Webhook Configuration Page
$
is an alert template variable and will be populated dynamically depending on the alert.Define Alert Content in Rootly
{{alert.data.alert_name}}
. This will use the alert_name
JSON field from the Webhook body that we defined earlier.
Alert Description: Enter any details you want to include in the alert description. You can use fields from the webhook body like {{alert.data.alert_name}}
, {{alert.data.state}}
, etc.
Alert Source Link: Enter {{alert.data.metoro_alert_link}}
. This will create a link to the alert in Metoro.Click Save to save the alert content configuration.
Rootly Alert Content Preview Page
Define Alert Urgency in Rootly

Rootly Alert Urgency Configuration
Configure Auto-Resolve in Rootly
alert_state
field in the webhook body to “resolved”.metoro_alert_fire_uuid
to identify alert triggers that are sent to Rootly and state
field to identify the alert state. When the alert state changes to “resolved”, Rootly will automatically resolve the incident.
Enter the following details in the Auto-Resolve section:
Identifier: $.metoro_alert_fire_uuid
Field location: $.state
Field Value: resolved

Rootly Auto-Resolve Configuration
$metoro_alert_uuid
field as the identifier. Please read more in Handling Grouped Alerts section below to pick the best option that suits your use case.Step 2: Use Rootly Webhook as Alert Destination in Metoro
Create or Edit Alert
Add Webhook Destination
- Click Add Destination
- Select Webhook from the dropdown
- Choose your Webhook from the list (the one you created in Rootly and added to Metoro in the previous step)

Selecting Rootly webhook as alert destination
Save Alert
Configuring Auto-Resolve (Recovery Notifications)
Rootly supports auto-resolving incidents when alerts recover. This feature ensures incidents are automatically closed when the underlying issue is resolved.Enable Recovery Notifications
Enable Recovery in Alert in Metoro
- Check the “Notify when alarm recovers” checkbox next to the webhook destination
- This expands the interface to show two webhook selectors, one for firing and one for recovery.
Configure Recovery Webhook
- Use the same Rootly webhook for both firing and resolved states
- Rootly will handle the state change based on the
alert_state
field
- Configure a different Rootly webhook specifically for recovery
-
Useful if you have different workflows for incident creation vs resolution
You need to have a field in the body JSON for indicating the state of the alert for the auto-resolve feature to work. Use the
$state
variable in your Webhook body.
Rootly Auto-Resolve Configuration
In Rootly, configure your webhook to handle the recovery state:Configure Auto-Resolve in Rootly
- Go to the Configure tab and scroll down to the Auto-Resolve section.
- Enable the auto-resolve feature by toggling the switch.
Map Resolution Fields
- The
alert_state
field (or the key you used in webhook body that corresponds to$state
value) with value"resolved"
triggers incident resolution. - Use
alert_fire_uuid
oralert_uuid
to match the specific incident to resolve.
Important: Handling Grouped Alerts
$alert_fire_uuid
and $alert_uuid
is crucial for proper incident management in Rootly.Understanding Alert UUIDs
$alert_uuid
: The unique identifier for the alert definition. This is the same for all firing instances of the alert you created in Metoro.$alert_fire_uuid
: The unique identifier for a specific firing instance (each group by attribute value) of the alert. This is generated each time the alert fires.
$alert_fire_uuid
for auto-resolve to work correctly.
This is because each group by attribute (e.g., service.name
, environment
) will generate a unique firing instance, and using $alert_uuid
would not correctly match the specific incident to resolve. For example, if service.name
MyServiceX
and MyServiceY
are firing for the same alert, they will have the same $alert_uuid
but different $alert_fire_uuid
s.
Using $alert_fire_uuid
ensures that Rootly resolves the correct incident for the specific service or environment that recovered. If you use $alert_uuid
, when MyServiceX
recovers, it would resolve the incident for MyServiceY
as well, which is not the intended behavior.
Troubleshooting
Webhook not triggering in Rootly
Webhook not triggering in Rootly
- Verify the webhook URL is correct
- Check the Authorization header has the correct Bearer token
- Look for errors in Metoro Logs: filter by
environment=metoro-internal
andservice.name=metoro-webhooks
Auto-resolve not working
Auto-resolve not working
- Ensure recovery notifications are enabled in the Metoro alert
- Ensure that the correct webhook body is being sent to Rootly from the Payload tab. For example, if you are using JSON as the body format and the body is not a valid JSON, Metoro won’t be able to send the webhook with the defined body.
- Verify you’re using
$alert_fire_uuid
for matching (especially with grouped alerts) - Check that Rootly’s auto-resolve feature is enabled
- Confirm the
alert_state
field correctly shows “resolved”
Missing incident details
Missing incident details
- Review your webhook body template in Metoro to ensure it is a valid JSON (if using JSON format)
- Check what Rootly receives in the Payload tab of the webhook configuration
- Ensure all required Rootly fields are included
- Check that template variables are properly formatted with
$
prefixVariables such as$environment
and$service
will only get populated if you are using group bys withenvironment
orservice.name
/server.service.name
/client.service.name
.
Authentication errors
Authentication errors
- Regenerate the Bearer token in Rootly
- Update the Authorization header in Metoro webhook configuration
- Ensure the Authorization header format is exactly:
- Header Name:
Authorization
- Value:
Bearer YOUR_TOKEN
- Header Name:
Monitoring Integration Health
You can monitor the health of your Rootly integration:-
Check Webhook Logs in Metoro
- Go to Metoro Logs
- Filter:
environment=metoro-internal
andservice.name=metoro-webhooks
- Look for successful deliveries and any errors
-
Verify in Rootly
- Check the webhook activity log in Rootly
- Confirm incidents are being created and resolved as expected