Wake up when production breaks: Pushover via Cloudflare Workers
Browser push and email both get silently dropped by Do Not Disturb during sleep — exactly when an outage matters most. Pushover emergency priority bypasses DND on iOS and Android, retries every 30s for 30 min, and requires acknowledgement. Wire it to Monitive webhooks via a 50-line Cloudflare Worker. Setup: 5 minutes.
Quick start
Three steps from zero to a phone notification on every outage.
- 1
Sign up with Pushover
$5 one-time per platform (iOS or Android). You'll also need the Pushover app on your phone and a free Cloudflare account (full prerequisites in the markdown version of this guide).
Pushover sign-up → - 2
Deploy the bridge to Cloudflare Workers
Set PROVIDER and your provider credentials (PUSHOVER_TOKEN, PUSHOVER_USER) as Wrangler secrets — see the Deploy commands below — then run npx wrangler deploy.
Deploy to Cloudflare Workers → - 3
Connect Monitive and set the signing secret
Open a monitor → Webhooks → set the URL to your bridge URL. Monitive issues a signing secret — copy it and set it on the bridge as MONITOR_WEBHOOK_SECRETS (it applies live, no redeploy).
Open Monitive →
Deploy commands
git clone https://github.com/uptimemonitoring/alerts-bridge
cd alerts-bridge && npm install
# 1. Set provider secrets, then deploy
npx wrangler secret put PROVIDER # enter: pushover
npx wrangler secret put PUSHOVER_TOKEN # from pushover.net/apps
npx wrangler secret put PUSHOVER_USER # from pushover.net dashboard
npx wrangler deploy
# 2. Register the printed Worker URL in Monitive (monitor → Webhooks),
# then set the signing secret it issues (applies live, no redeploy):
npx wrangler secret put MONITOR_WEBHOOK_SECRETS
After wrangler deploy, copy the worker URL and set it as the webhook destination in Monitive. Monitive then shows a signing secret — set it on the bridge with wrangler secret put MONITOR_WEBHOOK_SECRETS (applies live, no redeploy).
Pushover details
Emergency alerts that bypass Do Not Disturb
How emergency priority works
When a monitor goes down, the bridge sends Monitive's webhook payload to Pushover with
priority=2 (emergency). This causes the Pushover app to:
- Bypass Do Not Disturb on iOS and Android
- Repeat the alert every 30 seconds for up to 30 minutes
- Require you to open the app and acknowledge before retries stop
When the monitor recovers (monitor.up), the bridge sends a normal
priority=0 notification — no retries, no DND override.
Pricing
Pushover charges $5 once per platform (iOS or Android). That's a one-time payment — no subscription, no per-alert cost. The bridge itself runs on Cloudflare Workers' free tier (100k requests/day). Total recurring cost: $0.
Verify DND bypass before an incident
After setup, enable DND on your phone, then trigger a test webhook from Monitive. The Pushover app should ring and vibrate through it. If it doesn't, go to Pushover → Settings → Override Do Not Disturb and confirm the toggle is on. On iOS, also add Pushover under System Settings → Focus → Allowed Apps.
More information
Pushover API documentation →Troubleshooting
Common failure modes and how to fix them.
- Webhook never fires
- Cause: Monitive cannot reach the bridge URL, or the monitor has no webhook configured.
- Fix: Open the monitor in Monitive and check its webhook delivery log. Confirm the bridge URL is reachable from the public internet.
- Bridge returns 401 Unauthorized
- Cause: MONITOR_WEBHOOK_SECRETS on the bridge does not match the signing secret Monitive issued for this monitor.
- Fix: Copy the signing secret from the monitor → Webhooks section in Monitive, then re-run npx wrangler secret put MONITOR_WEBHOOK_SECRETS with that exact value (no trailing whitespace).
- Bridge returns 500
- Cause: Provider credentials are missing or malformed.
- Fix: Check Cloudflare Workers logs in the dashboard. Confirm all required secrets are set: PROVIDER=pushover, PUSHOVER_TOKEN, PUSHOVER_USER, MONITOR_WEBHOOK_SECRETS.
- Phone rings but Do Not Disturb is not bypassed
- Cause: Pushover app DND override is not enabled, or iOS Focus allowlist is missing.
- Fix: Open the Pushover app → Settings → Override Do Not Disturb. On iOS, also add Pushover to your Focus allowlist under System Settings → Focus.
Why we built this
Monitive's own admin alerts — account suspensions, capacity events, kill-switch flips — run through the same bridge you're about to deploy. Same template, same provider, same code. The "we use this ourselves" line isn't a marketing claim; it's the literal setup.
We open-sourced it because a 50-line bridge shouldn't be behind a paywall or buried in a vendor integration. Audit the code before you trust it with your alerts. MIT license. No telemetry, no vendor lock-in.