Getting started
Documentation
Everything you need to go from a fresh account to a monitor that pages the right person at the right time, and a public status page to share. It takes about ten minutes.
01 Create an account
Head to the dashboard and choose Create one on the sign-in screen.
- Register.
Enter your email and a password of at least eight characters. A display name is optional. Complete the verification challenge and submit.
- Confirm your email.
We send a confirmation link to your address, and a screen reminds you to check your inbox. Click the link to activate the account. You can't sign in until your email is confirmed.
- Sign in.
Back on the sign-in screen, enter your details. We email you a six-digit code for two-factor authentication; enter it to finish signing in. The field submits as soon as the sixth digit lands, and the code expires after ten minutes.
02 Add a connection
A connection is a place an alert can go, such as a Slack channel or an email address. You set one up once, then any notify step in any flow can point at it. Connections live in the right-hand sidebar of the editor.
Start here rather than with a monitor: notify modules only become available once a matching connection exists.
- Open the connection form.
In the editor's right sidebar, choose + Add connection.
- Pick a type and name it.
Choose from Slack, Discord, Microsoft Teams, Email, SMS, PagerDuty, Jira or a generic Webhook. Give it a clear name like
ops-slackso it's easy to recognise later. - Fill in the details.
Each type asks for what it needs, for example an incoming webhook URL for Slack, or a recipient address for Email. Credentials such as tokens and API keys are encrypted at rest.
- Send a test.
Use Send test to confirm the alert arrives before you rely on it. Then Save connection.
03 Create a monitor
A monitor is one thing you watch, plus the escalation you draw around it. Each monitor is a single flow on its own canvas.
- Start a new monitor.
Choose New monitor in the header, give it a name like
Checkout API, and create it. You're dropped onto the canvas with one Monitor block already placed. - Open the monitor block.
Double-click it to set up the check itself.
- Choose the check type.
Pick how Hesklo probes the target:
- HTTP(S) — request a URL. Optionally require a specific status code or that the body contains some text. For HTTPS targets, Hesklo also tracks the TLS certificate and warns you as it nears expiry.
- Ping — send a real ICMP echo to a host or IP and measure the round-trip time. No port needed; enter a hostname like
example.comor an address like192.0.2.1. - TCP port — check a
host:portaccepts a connection, for example a database atdb.example.com:5432. - SSH command — run a command over SSH and treat exit code 0 as up. Optionally require the output to contain some text.
Then set the timing:
- Every — how often to check, in seconds. The minimum depends on your plan.
- Timeout — how long to wait for a response before treating the check as failed.
- Confirm down after — how many checks must fail in a row before the monitor counts as down. Raise this to absorb the odd flaky check; it trades a little delay for fewer false alarms.
Choose Apply to save the check. Hesklo runs one check straight away so the status reflects your new settings without waiting for the next interval. The Monitor block now shows a summary, and its two output ports become meaningful: a red down port and a green up port.
04 Draw a flow
A flow is what happens when the monitor changes state. You build it by dragging modules from the left palette onto the canvas and wiring them together. The flow runs from the Monitor's ports: the down port drives your escalation, the up port sends the all-clear.
- Drag in a module.
From the left palette, drag a logic, notify or action block onto the canvas. Notify blocks appear once you have a matching connection.
- Wire it up.
Drag from an output port (the dot on the right of a block, or the down/up ports on the Monitor) to the input port on the left of the next block. A line connects them. Blocks that branch, like the Monitor or a condition check, have two output ports for their two outcomes.
- Configure each block.
Double-click a block, or right-click it and choose Edit, to open its settings. Notify blocks let you choose the connection and the message, with placeholders like
{flow},{state},{detail}and{duration}. - Remove a block.
Right-click a block and choose Remove. The Monitor block can't be deleted; it's the root of the flow.
A simple example
A common first flow: from the Monitor's down port, add a Wait of five minutes, then a Slack notify. From the up port, add an Email notify. The result: if something is down for five minutes you get a Slack page, and when it recovers you get an email all-clear. Nothing fires for a blip that clears inside five minutes.
Going further
The same building blocks compose into richer policies. A Repeat alert after your first page keeps paging every few minutes until someone fixes the problem. A Condition check probes a second endpoint mid-flow and routes on the result, so you can ask "the API is down, but is the database also down?" and page a different team for each answer. An HTTP action can even try to fix things first: call an endpoint to restart a service, then use a condition check to re-probe, and only page a human if it's still down.
05 Module reference
A small set of blocks combines into any policy. Logic blocks shape the flow, notify blocks send the alert, and action blocks do something about the problem.
06 Run, save and watch
With the check set up and the flow drawn, put it to work.
- Run check — probe the target immediately and see the full result, without waiting for the next scheduled check. Good for confirming the monitor is configured right.
- Save — store the monitor. Changes also autosave as you work once the monitor exists.
- Settings — rename the monitor, pause it for planned work, show it on your status page, or delete it.
Open a monitor and switch to its History tab for the full picture of that one check: a 30-day uptime chart, a 24-hour response-time graph, its incident list and a recent event log, all alongside a sidebar of vital signs like current state, uptime and certificate status. The event log also captures notes left by Log blocks and the calls made by HTTP actions, so the timeline shows everything the flow did. Hover any chart for the exact figure behind a point.
Back on the Overview you'll see this monitor alongside the rest: status, 30-day uptime, certificate expiry and check interval, one row each. A second Incidents tab lists recent outages across all your monitors, with their start, duration and cause. Click any monitor row to open its flow again.
07 Publish a status page
A status page is a public, read-only page where anyone can check whether your services are up, no account required. It shows an overall banner, your chosen monitors with their 30-day uptime, and recent incidents. It's entirely opt-in: nothing is public until you set it up, and it's available on paid plans.
- Name your page and pick a subdomain.
Open the account menu, choose the Status page tab, and set a page title and a subdomain. Your page goes live at
yourname.status.hesklo.com. The page only publishes once both a title and a subdomain are set; clearing them takes it down again. - Choose which monitors appear.
Open a monitor's Settings and turn on Show on status page. Only the monitors you switch on are shown; everything else, including the incidents of private monitors, stays hidden.
- Share the link.
That's it. Anyone with the URL sees a live, branded status page that updates as your monitors do.
That's the whole loop. Add a connection, build a monitor, draw what happens when it breaks, let it run, and publish a page so everyone can see the state at a glance.
Ready to draw your first flow?
Add a monitor, wire it up, and let Hesklo handle the 3 a.m. part.
Open the dashboard