← All guides

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

Right now, no account: the free instant check looks any domain up in RDAP and shows the expiry date, days left and registrar in one click (curl 'https://watchpup.watchpup.workers.dev/api/check?kind=domain&url=example.com' from a script).

Or do the same lookup yourself — 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".

The 20-second fix: an email before it expires

You don't even need an account. Enter a domain and an email address; confirm the one email that arrives; Watchpup then re-checks the registry record daily and emails you 30, 14, 7, 3 and 1 day(s) before expiry — and immediately if the domain expires or drops. Every email has a one-click stop link.

Scripts can do the same: curl -X POST https://watchpup.watchpup.workers.dev/api/watch-domain -d '{"domain":"example.com","email":"you@example.com"}' (docs).

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: 30 is 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.