Healthchecks.io
Cron miss / recovery on your lock screen - uniquely solved here.

Healthchecks.io is the de-facto cron monitor - your jobs ping a URL, Healthchecks fires alerts when a ping is late or missing. Chirp's @healthchecks schema turns those alerts into a Live Activity that *persists* through the down state and updates in place when the check recovers (vs. a normal alert that's just a one-off push notification).
The killer feature is the 8-dot timeline: the activity card shows the last 8 pings as colored dots - green for on-time, yellow for late, red for missed. You see the recent history at a glance from the lock screen, not just "something is broken now." Recovery transitions update the same card to green without a second push.
Prerequisites
- A Healthchecks.io account (the SaaS, or a self-hosted instance - same API).
- At least one check configured.
- A Chirp inspector / webhook URL.
Setup
- 1
Add the Webhook integration to your project
Healthchecks → your project → Integrations → Add Integration → Webhook. Healthchecks supports per-event URLs (different for
downandup), but Chirp accepts both at the same endpoint. - 2
Paste the Chirp URL for both down and up events
Use the same URL for both fields - Chirp's normalizer reads the event type from the payload and updates the activity in place. Tick "Send a request when a check goes down" and "...when a check goes up."
shell# URL for both fields: https://api.chirpapp.dev/v1/webhooks/healthchecks?key=YOUR_KEY # (Optional) HTTP method: POST (default). # (Optional) Request body: leave blank - Healthchecks sends the # default JSON payload which Chirp's normalizer expects. - 3
Assign the integration to your checks
Webhook integrations in Healthchecks are project-scoped but per-check assigned - go to each check's settings and tick the new "Webhook" integration in the notifications list. Bulk-assign via the integration's edit page.
- 4
(Optional) Self-hosted Healthchecks
Same flow on a self-hosted Healthchecks instance. The Chirp inspector accepts the standard payload format; you don't need to configure anything Chirp-side beyond the inspector key.
What you’ll see
Card header: Healthchecks logo + check name + project tag. The 8-dot timeline shows the last 8 pings - green dots for on-time, yellow for late, red for missing. When a check goes down, the card flips to a red "DOWN" state with the time of the last successful ping. When it recovers, the *same* card updates to green with a small "recovered" badge. The card stays around for 30 minutes after recovery, then auto-dismisses.
Troubleshooting
- Card never appears even though Healthchecks is sending alerts.
- Healthchecks shows webhook delivery status under each integration's settings. If you see HTTP 401/403, the inspector key is wrong. If you see successful 2xx but no card, check that your inspector hasn't been disabled in the Chirp dashboard.
- I'm getting both an email and a Chirp alert - too noisy.
- Healthchecks lets you toggle integrations per-check. Disable email on the checks where you only want Chirp, or use a separate notification policy for after-hours.
- Self-hosted Healthchecks fires but Chirp doesn't normalize the payload correctly.
- Confirm your self-hosted version is recent (Healthchecks v2+). The payload format changed between v1 and v2 - Chirp's normalizer expects v2 fields. If you're on v1, upgrade or pass
?legacy=1on the inspector URL. - Multiple checks fire at once and I get multiple cards.
- Each check creates its own card (keyed by check UUID) - that's by design so you can see which is down. To consolidate, use a Healthchecks Project URL instead and route through a generic webhook inspector.