Better Stack heartbeats vs CronPup: an honest comparison
Better Stack (formerly Better Uptime) bundles uptime checks, heartbeats, on-call scheduling, incident management, status pages and logs. CronPup does one slice of that: heartbeats for scheduled jobs and TLS certificate expiry. Prices below are from Better Stack's public pricing page, checked on 5 November 2026; check their site for current numbers. We make CronPup, so weigh our opinion accordingly.
| Better Stack | CronPup | |
|---|---|---|
| Free tier | 10 monitors and heartbeats combined, Slack and email alerts, 1 status page | 10 monitors |
| How heartbeats are priced | 10 included; extra heartbeats in packs of 10 at $20/mo ($17/mo billed yearly) | Flat plans: $12/mo for 100, $29/mo for 300 |
| ~50 heartbeats | about $80/mo in packs | $12/mo |
| ~300 heartbeats | about $580/mo in packs | $29/mo |
| People | Responder seats $34/mo ($29/mo yearly); their page doesn't say whether one is required for heartbeats alone | No per-user pricing |
| Phone and SMS alerts | Yes, unlimited on paid plans | No (email, ntfy push, Slack/Discord, PagerDuty, webhooks) |
| On-call schedules, escalation, incidents | Yes | No (use PagerDuty with CronPup) |
| Uptime checks, logs | Yes | No (TLS expiry only) |
| Cron schedules with time zones, /start + exit-code pings | Heartbeats with a period and grace | Yes, plus run durations and output capture (cronpup-run) |
Choose Better Stack if
- you want on-call rotations, escalation and phone calls in the same tool as your monitoring;
- you also need uptime checks, log management or polished status pages with incident updates;
- a per-pack price is fine because heartbeats are a small part of what you monitor.
Choose CronPup if
- you mainly need to know when scheduled jobs and backups don't run, fail or hang;
- you have dozens to hundreds of jobs and want a flat, predictable bill;
- you want cron-expression schedules with time zones, exit codes and job output in the alert.
The two also work together: many teams keep incident management where it is and send CronPup alerts into it via PagerDuty or a webhook. Try CronPup free, or read the full comparison.