Endpoint monitoring that checks your URLs and tells you when they stop responding.

WatchTower sends HTTP requests to your endpoints on a schedule. If a monitor's status code doesn't match what you expect for a configurable number of consecutive checks, it opens an incident and notifies you. When the endpoint starts responding again, it resolves automatically.

watchtower.works/dashboard
Monitors
4 up1 down
Production API/health
1m99.98%12ms
Marketing siteexample.com
5m100.0%145ms
Stagingstaging.example.com
1m98.2%timeout
Webhook ingest/api/ingest
1m100.0%8ms
Documentationdocs.example.com
5m99.99%89ms

How it works

Scheduled checks, consecutive failure detection, multi-channel alerts.

1Check execution

GET https://api.example.com/health
200 OK (12ms)
  → body contains "healthy"
check passed

GET https://staging.example.com
503 Service Unavailable
  → expected 200, got 503
consecutive failures: 2 of 3

Sends an HTTP request at your configured interval. Validates the status code and optionally checks for a keyword in the response body.

2Failure detection

UP
  ──[check fails]──→ failures: 1/3
  ──[check fails]──→ failures: 2/3
  ──[check fails]──→ failures: 3/3 → DOWN
                      ├ open incident
                      └ dispatch alerts

DOWN
  ──[check passes]──→ UP
                       ├ resolve incident
                       └ send recovery

A monitor transitions to DOWN only after the failure threshold is met across consecutive check intervals. Default is 3. Configurable per monitor. One passing check resolves the incident.

3Alert channels

@

Email

Monitor name, URL, status, error, timestamp.

#

Slack

Incoming webhook. Posts to your channel.

{}

Webhook

POST JSON with HMAC-SHA256 signature. Route to PagerDuty, Opsgenie, or your own handler.

4Uptime badge

![uptime](https://watchtower.works/api/badge/{id})

uptime99.9%

Public SVG endpoint with 60-second edge cache. Embed in your README, docs, or status page. Color scales with uptime: green > 99.9%, amber > 99%, red below.

Specs

Technical details

Check typesHTTP / HTTPS
MethodsGET, POST, HEAD
Check interval1 min or 5 min
Timeout30s default, configurable
Failure thresholdConfigurable per monitor
Regionsus-east-1
ValidationStatus code + keyword match
Alert channelsEmail, Slack, webhook
Webhook authHMAC-SHA256
Data retention7 or 30 days
AuthPasswordless magic link
SSRF protectionPrivate IPs blocked

Pricing

Two tiers. No per-seat fees.

Free — $0Starter — $5/mo
Monitors1050
Interval5 min1 min
AlertsEmailEmail, Slack, webhook
Retention7 days30 days
BadgeYesYes
Card requiredNoYes