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, a secret-header authentication path, and a guided setup wizard in the Rootly dashboard.
Page On-Call
Trigger escalation policies the moment a Checkly check fails, paging the right responder in seconds.
Auto-Create Incidents
Turn a degraded check into a full Rootly incident with custom fields, workflows, and Slack channels.
Auto-Resolve On Recovery
Map Checkly’s recovery event to rootly_alert_status and the alert closes itself when the check comes back.
Per-Check Routing
Send API checks to one team, browser checks to another, all from a single Checkly alert channel.
You’ll need access to both sides of the connection.
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.
A clear routing plan helps too: decide whether every alert from this source should land on the same service or team, or whether routing varies per check.
The Rootly side hands you a webhook URL and a secret value — paste those into Checkly in the next section.
1
Open Alerts → Sources
In the Rootly dashboard, navigate to Alerts → Sources and click New alert source.
2
Choose Checkly
Select Checkly from the list of available sources and give the source a descriptive name — for example, Checkly — Production Synthetics.
3
Set The Default Routing Target (Optional)
If every alert from this source should always route to the same service, team, or escalation policy, set the target on the source configuration page. Leave it blank if you want routing to come from each check’s payload instead — covered under Routing Alerts.
4
Copy The Webhook URL And Secret
Rootly generates a unique webhook URL and a per-source secret. Copy both — they go into Checkly next.Without a default routing target:
Create a webhook alert channel in Checkly, point it at the Rootly URL, and use the payload template Rootly expects.
1
Create A New Webhook Alert Channel
In Checkly, navigate to Alert Settings → Alert Channels and click Add channel. Choose Webhook. For the latest Checkly UI specifics, refer to Checkly’s webhook alert channel documentation.
Key: secret — Value: the secret you copied from Rootly.
Rootly’s Checkly source authenticates the request using the custom secret header, not Bearer Token or HMAC. Without it, Rootly returns 401 Unauthorized and the alert is dropped.
3
Paste The Payload Template
Use the JSON template below. Checkly substitutes the {{ }} Handlebars variables with values from the failing check at send time.
Basic Alert
Per-Check Routing
Recovery (Auto-Resolve)
Standard template — alert lands in Rootly and routes based on the source’s default target.
Save the alert channel, then attach it to the checks (or check groups) you want forwarded to Rootly. New failures on those checks POST to the Rootly webhook URL within seconds.
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.
Optional. Sets the routing target for this specific alert. Used only when the alert source does not have a default URL-based target — if a URL target is configured on the source, it takes precedence and the payload target is ignored. Expects type (Service, Group, or EscalationPolicy) and id (the Rootly resource’s internal ID).
Every alert from this Checkly channel routes to that target — no payload-level routing needed.Best when: a single Checkly account corresponds to one Rootly team or service.
Leave the default target empty on the Rootly source. In each Checkly alert channel’s payload template, add a rootly object naming the target:
Valid type values are the Rootly resource class names: Service, Group, or EscalationPolicy. The id is the Rootly resource’s internal ID — open the resource in Rootly and copy it from the edit page. Names and slugs aren’t accepted.Best when: different checks need to page different teams. You can hardcode targets per channel, or use Checkly’s per-check variables to switch them dynamically.
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_status field 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".
Rootly matches the two events using the External Identifier (check_id) and transitions the same alert from triggered to resolved.See Alert Statuses for the full lifecycle.
After saving the alert channel in Checkly, run a test to confirm the connection works end-to-end.
1
Send A Test Webhook From Checkly
Open the alert channel you created and click Send test webhook. Checkly POSTs a sample payload to the Rootly URL.
2
Confirm The Alert Appears In Rootly
Open the Checkly alert source in Rootly. The test alert should appear in the source’s recent activity within a few seconds. Click into it to verify the title, started-at timestamp, and link populated correctly.
3
Optional — Trigger A Real Failure
For full end-to-end verification, deliberately fail a check (point an API check at a 500-returning endpoint, for example) and confirm the alert reaches Rootly with the correct routing target and triggers the workflow you expect.
A successful test alert in Rootly means the webhook URL, the secret header, and the payload template are all wired correctly. You’re ready to attach the channel to production checks.
The secret header is missing or doesn’t match the value shown on the Rootly source configuration. Re-copy the secret from Rootly, paste it as a custom header in the Checkly alert channel (header key: secret, value: the secret string), and re-send a test.
The webhook returns 200 but no alert appears in Rootly
Rootly processes webhooks asynchronously, so check again after a few seconds. If the alert still doesn’t appear:
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_name and alert_title aren’t empty in the payload template
Recovery events don't resolve the original alert
Either the recovery payload has a different 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
URL-based routing takes precedence over payload-based routing. If the webhook URL ends with /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 retries up to five times with 20-second backoff on any HTTP response above 399. If Rootly returned 401, check the secret header. If Rootly returned 500, contact Rootly support with the timestamps so they can correlate against server logs.
Do I need to use the Generic Webhook source for Checkly?
No. Rootly ships a dedicated Checkly alert source with vendor-specific payload parsing, pre-mapped fields, and the 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?
Yes. Create a separate Checkly alert channel for each Rootly source you want to feed — each with its own webhook URL and secret — and attach each channel to the relevant checks. Useful when different check groups need to route to different Rootly teams.
Does the integration support HMAC signatures?
Rootly’s Checkly source authenticates via the 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?
Set the source’s default routing target (or the payload’s 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?
Adjust the payload template in Checkly’s alert channel. The 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.