---
title: "Reliable uptime alerts: Pushover via Cloudflare Workers"
description: "Wire Monitive webhooks to Pushover notifications via Cloudflare Workers. $5 one-time per platform. Retries every 30s for 30 min. Acknowledgement required."
doc_version: "1"
canonical: "https://uptimemonitoring.com/guides/reliable-alerts/"
---

# Reliable uptime alerts: 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 bypasses DND on iOS and Android, retries every 30s for 30 min, and requires acknowledgement. Wire it to Monitive webhooks via a Cloudflare Worker. Setup: 5 minutes.

**Deploy bridge:** https://deploy.workers.cloudflare.com/?url=https://github.com/uptimemonitoring/alerts-bridge

## Prerequisites

- A [Pushover account](https://pushover.net) with the app installed on your phone ($5 one-time per platform)
- Your Pushover **API Token** and **User Key** from the Pushover dashboard
- A [Cloudflare account](https://cloudflare.com) — free tier is sufficient
- Node.js 20+ with `npx` available

## Quick start

### Step 1: Sign up with Pushover

Create an account at https://pushover.net and install the Pushover app on your phone ($5 one-time per platform). Copy your API Token and User Key from the Pushover dashboard.

### Step 2: Clone and install the alerts-bridge

Run: git clone https://github.com/uptimemonitoring/alerts-bridge && cd alerts-bridge && npm install

### Step 3: Deploy the bridge to Cloudflare Workers

Set PROVIDER and your provider credentials as Wrangler secrets, then run: npx wrangler deploy. Cloudflare assigns the bridge a URL like https://alerts-bridge.yourworker.workers.dev.

### Step 4: Connect Monitive and set the signing secret

In Monitive, open a monitor → Webhooks → set the URL to your bridge URL. Monitive issues a signing secret for that webhook — copy it and set it on the bridge with: npx wrangler secret put MONITOR_WEBHOOK_SECRETS. Secrets apply to the live Worker immediately, no redeploy needed.

### Step 5: Send a test alert

Trigger a test webhook from Monitive. Your phone should receive a notification within seconds. The emergency-priority alert retries every 30s until acknowledged.

## Deploy commands

```bash
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 from the output and paste it into Monitive as the webhook destination.

## Pushover details

$5 one-time per platform. Retries every 30s for 30 min. Acknowledgement required.

Cost: $5 one-time per platform (iOS or Android)

Free tier: 100k requests/day free. No credit card required.

## Troubleshooting

**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. MIT license. No telemetry, no vendor lock-in.

Bridge source: https://github.com/uptimemonitoring/alerts-bridge