Hesklo watches your services and runs the escalation you drew. Here is the whole thing, from the checks that find an outage to the steps that get the right person on it.
A monitor runs one check type on its own interval, with its own timeout. Each one confirms a real outage before it ever pages anyone.
Every monitor runs from several locations across North America, Europe and Asia. A failure seen in one region is re-run from another before it counts as an outage, so a bad network path between one probe and your server never wakes anyone up.
When one location sees a check fail, another region re-runs it before the incident opens. A broken route between a single probe and your server never becomes a page on its own.
A service can be perfectly healthy in its own datacentre and unreachable from another continent. Checking from three of them is how you find that out before a customer tells you.
Every check records its own latency against the region it ran from, so slow from Asia and fine from Europe reads as exactly that, rather than averaging into one number that hides it.
Every monitor has a canvas. Draw from its down port and the flow runs exactly as it reads. Logic modules shape the path, notify modules send the alert. These are all the pieces.
Route the flow on a condition: whether the monitor is up, is down, has been down longer than N minutes, just recovered, has not been acknowledged in N minutes, or has a certificate expiring within N days. True and false paths run different steps.
Run a live probe mid-flow (HTTP, ping, TCP or SSH) and take the pass or fail path from the result. A point-in-time test, not a tracked monitor.
Hold the steps after it until the monitor has been continuously down for a set number of minutes. The building block of tiered escalation.
While the monitor stays down, fire the steps after it again on an interval. Keep paging until someone acts. Resets automatically on recovery.
Only let the flow through during set hours and days, in your timezone. Supports overnight windows. Put noise behind it, keep the critical path open.
Call an endpoint to take an action: restart a service, scale a group, trigger a runbook. Fires once per incident, or on every check while down.
Write a note to the monitor timeline without sending an alert. Useful for marking escalation levels in the incident history.
Add a destination once, then reference it from any notify step in any policy. Connect as many as you like.
Post to a channel via an incoming webhook.
Post to a channel via a webhook.
Post to a channel via an incoming webhook.
Built in, nothing to set up. Send to your own address or any team member, with an optional Acknowledge link.
Text a number through your own Twilio account.
Trigger an incident on the Events API. Resolves itself on recovery.
Open an issue in a project. Closes on recovery using the same key.
POST to any URL with an optional bearer token. Wire up anything.
Publish a status page at your own subdomain and choose which monitors appear on it. Anyone can check whether your services are up without opening a ticket.
Invite the rest of your team onto the same account, page a named engineer, and move to the next one when nobody picks up.
Everyone signs in as themselves and works on the same monitors, connections and history. Nothing is set up twice.
Enter a name and an address. They set a password from the link and are straight in, showing as pending until they do.
Read-only members see everything and change nothing. Full members build like you do. Billing stays with the owner.
Team members become recipients on the Email notify, so a flow can page one engineer and escalate to the next.
An email alert can carry an Acknowledge button. If it goes unclaimed, the flow moves on to the next person.
Access is revoked at once and the seat frees up. Every monitor and all history stays with the account.
Drag shifts across a repeating week, one engineer at a time. When an email alert set to follow the rota fires, it goes to whoever is on duty right then. No calendars, no rotations to configure.
The quieter controls that keep alerting honest and your history complete.
Require several failed checks in a row before a monitor counts as down, so a single blip never wakes anyone.
A cooldown per notify step. A service bouncing up and down does not turn into a hundred messages.
Each notify and action step fires once per incident by default, or on every matching check when you want a steady drumbeat.
Pause a monitor during planned work so a known outage pages no one. It keeps its history and resumes exactly as it was, with an optional auto-resume time.
Every outage is recorded with its cause and duration. Per-monitor uptime and response-time charts, plus a full event log.
An optional Monday recap of how your monitors did the week before. Off by default.
Probe any monitor on demand and see the exact result, without waiting for the next scheduled run.
The dashboard runs in dark by default, with a light theme a click away.
Three monitors are free forever. Add a check, draw what happens when it fails, and watch the policy fire.