Overview
Checkly’s synthetic checks and API monitors fire webhook alerts the moment something fails. Wire those webhooks at Rootly and every failure becomes a normalized alert that can page on-call, route to the right service, or auto-create an incident through alert workflows. Recovery events from Checkly close the same alert automatically, so your timeline stays clean. Checkly has first-class support as a dedicated alert source in Rootly — you don’t need the Generic Webhook source. The integration ships with vendor-specific payload parsing, pre-mapped fields, asecret-header authentication path, and a guided setup wizard in the Rootly dashboard.
Page On-Call
Auto-Create Incidents
Auto-Resolve On Recovery
rootly_alert_status and the alert closes itself when the check comes back.Per-Check Routing
Before You Begin
- In Rootly — the On-Call Admin or On-Call User role so you can create alert sources. See Schedule Permissions.
- In Checkly — permission to add and configure alert channels under Alert Settings.
Add the Alert Source in Rootly
The Rootly side hands you a webhook URL and asecret value — paste those into Checkly in the next section.
Open Alerts → Sources
Choose Checkly
Checkly — Production Synthetics.Set The Default Routing Target (Optional)
Copy The Webhook URL And Secret
secret. Copy both — they go into Checkly next.Without a default routing target:Configure the Webhook in Checkly
Create a webhook alert channel in Checkly, point it at the Rootly URL, and use the payload template Rootly expects.Create A New Webhook Alert Channel
Paste The Payload Template
{{ }} Handlebars variables with values from the failing check at send time.- Basic Alert
- Per-Check Routing
- Recovery (Auto-Resolve)
Save And Attach To Checks
Payload Reference
Rootly’s Checkly source parses these fields from each incoming webhook. The full raw payload is also preserved on the alert record, so any extra fields Checkly sends remain accessible to alert routes, workflows, and field mappings.alert_title using " - " to form the Rootly alert’s summary.check_name for the alert summary.type (Service, Group, or EscalationPolicy) and id (the Rootly resource’s internal ID).resolved on recovery channels so Checkly’s “check is back” event closes the original Rootly alert.Routing Alerts
Two ways to point a Checkly alert at the right responder. URL-based routing takes precedence when both are set on the same request.- By URL (One Target)
- By Payload (Per Check)
Auto-Resolution
Checkly fires a recovery event whenever a failing check comes back to passing. Rootly closes the original alert automatically when the recovery payload includes"rootly_alert_status": "resolved".
The cleanest pattern is two separate Checkly alert channels scoped to different alert events:
- Failure channel — uses the Basic Alert payload from the Configure step above, unchanged. No
rootly_alert_statusfield needed; Rootly defaults to a triggered state when one isn’t present. - Recovery channel — uses the Recovery (Auto-Resolve) template, which hardcodes
"rootly_alert_status": "resolved".
check_id) and transitions the same alert from triggered to resolved.
See Alert Statuses for the full lifecycle.
Test the Integration
After saving the alert channel in Checkly, run a test to confirm the connection works end-to-end.Send A Test Webhook From Checkly
Confirm The Alert Appears In Rootly
Optional — Trigger A Real Failure
secret header, and the payload template are all wired correctly. You’re ready to attach the channel to production checks.Troubleshooting
The webhook returns 200 but no alert appears in Rootly
The webhook returns 200 but no alert appears in Rootly
- Confirm the routing target referenced in the URL or payload exists and isn’t archived
- Inspect the source’s recent activity in Rootly to verify the payload was received
- Verify
check_nameandalert_titlearen’t empty in the payload template
Recovery events don't resolve the original alert
Recovery events don't resolve the original alert
check_id than the failure event, or the rootly_alert_status field isn’t set to resolved (case-sensitive). Confirm both events come from the same Checkly check and that the recovery channel’s template hardcodes "rootly_alert_status": "resolved".Alerts route to the wrong team or service
Alerts route to the wrong team or service
/notify/<type>/<id>, that target wins regardless of the JSON body. Either remove the URL target and rely on payload routing, or update the URL target to the correct destination.Checkly retried the webhook five times
Checkly retried the webhook five times
401, check the secret header. If Rootly returned 500, contact Rootly support with the timestamps so they can correlate against server logs.Frequently Asked Questions
Do I need to use the Generic Webhook source for Checkly?
Do I need to use the Generic Webhook source for Checkly?
secret-header authentication shown above. Use it instead of the Generic Webhook source for a cleaner setup and built-in field mappings.Can one Checkly account feed multiple Rootly alert sources?
Can one Checkly account feed multiple Rootly alert sources?
Does the integration support HMAC signatures?
Does the integration support HMAC signatures?
secret custom header, not HMAC. Checkly’s optional x-checkly-signature SHA-256 signature isn’t required and isn’t validated.What if I want to page on-call directly instead of just creating an alert?
What if I want to page on-call directly instead of just creating an alert?
rootly.notification_target) to an Escalation Policy. Rootly triggers the escalation as soon as the alert is created, paging the on-call responder per the policy’s steps.Can I customize the alert title beyond what the payload contains?
Can I customize the alert title beyond what the payload contains?
check_name and alert_title Handlebars variables can be combined with static text — for example, "alert_title": "[{{SEVERITY}}] {{CHECK_NAME}} failing". Rootly stores whatever string you produce as the alert summary.