Healthchecks.io is a cron job monitoring service. AO Job Heartbeat does the same core job: your job pings a URL, and you are told when the ping is late.
Here is how the two line up on the numbers we have verified. We have not compared other features.
Prices we checked
| Service | Plan | Price | Checks |
|---|---|---|---|
| Healthchecks.io | Free | $0 | 20 |
| Healthchecks.io | Business | $20 a month | 100 |
| AO Job Heartbeat | Free | $0 | 10 |
| AO Job Heartbeat | Paid | $7 a month | 100 |
Source for the Healthchecks.io rows: healthchecks.io/pricing, seen 2026-09-15. Prices change. Check their page before you decide.
What is the same
- A check has a period and a grace time.
- Your job pings a URL each run.
- No ping in time means an alert.
What is different here
- Free checks. Their free plan has more checks than ours: 20 against 10. If you need more than 10 checks and want to pay nothing, they are the better fit for that.
- 100 checks. Ours cost $7 a month. Theirs cost $20 a month on the Business plan, per the page above.
- Signed events. Every alert we send is a JSON event signed with an Ed25519 key. You can verify it with the public key at
/v1/keys. - Email and webhooks only. We do not send SMS and we do not make phone calls, on any plan. If you need those channels, this is not the service for you.
If a feature matters to you and it is not on this page, check both product pages. We only list what we have checked.
Moving a check over
- Sign up:
POST /v1/signupwith your email. Save the API key; it is shown once. - Create a check with the same period and grace:
POST /v1/checkswith{"name", "period_s", "grace_s"}. - Swap the old ping URL in your job for the new
ping_urlfrom the reply. - Watch
GET /v1/checks/<id>show"status": "up"after the first ping.
The full curl walk-through is on the front page.