Don’t let your domain expire: automated domain-expiry alerts
Updated 7 August 2026 · by Cassian Wei · 2 min read
An expired domain is the total outage: website, API, and — cruelly — the email address your registrar sends renewal warnings to. Well-known companies have briefly lost domains this way; for a small project with a card on file that expired two years ago, it's routine. And after expiry comes the grace-period ransom, or worse, a drop-catcher.
Why registrar reminders aren't enough
- They email the wrong person. The domain was registered by a co-founder who left, an agency, or an old address that now bounces.
- Auto-renew fails silently. Expired card, tripped fraud check, or auto-renew got switched off during a transfer and nobody noticed.
- Nobody owns the calendar. Multi-year renewals outlive team members, todo apps and calendar systems.
The fix is the same as for TLS certificates: check the authoritative data from the outside, on a schedule, with alerts that go where you actually look today.
Check it by hand
RDAP is the structured successor to whois — same registry data, machine-readable:
curl -s https://rdap.org/domain/example.com | \ python3 -c 'import json,sys; print([e["eventDate"] for e in json.load(sys.stdin)["events"] if e["eventAction"]=="expiration"])'
Fine for an audit. But as with certificates, the failure mode is "nobody ran the check this year".
Monitor it automatically
Watchpup's domain monitor kind queries registry RDAP data daily
and alerts when your registration enters the warning window (default 30 days before expiry) or
lapses:
curl -X POST https://watchpup.watchpup.workers.dev/api/monitors \
-H 'authorization: Bearer wp_...' -H 'content-type: application/json' \
-d '{"kind":"domain","name":"example.com registration","domain":"example.com","warn_days":30}'
The dashboard shows days-left continuously; the alert includes the exact expiry date. Use the
registrable domain (example.com, not www.example.com).
A sane setup
- One monitor per domain you own — including the ones only used for redirects and email. 30 seconds each; they're daily checks, so they barely count against any quota.
warn_days: 30is a good default; use more if renewal at your org involves procurement.- Route to a shared channel (team Slack/Discord), not one person's inbox — the whole point is surviving personnel changes.
- Check your registrar account today anyway: is auto-renew on, is the card current, is the contact email alive? Monitoring is the net, not the wire.
Free tier: 15 monitors, no card. A live domain monitor runs on the demo status page.
Watchpup is free uptime & cron monitoring — 1-minute checks, heartbeats, TLS/domain expiry, status pages, alerts everywhere. Sign up, try the live demo, or read more guides.