Domain expiration monitoring
Upcheck queries the registry behind every domain you own, tracks the days left on each registration, and tells the right people long before one lapses — by email, Slack, Discord, Teams, or webhook.
$10/month base · $1 per website · registration checked daily
The renewal nobody owns until it is too late
A domain registration is the only piece of infrastructure most companies renew on a calendar measured in years, using a payment card that expires in three, at an account created by someone who may no longer work there. Nothing about that arrangement fails loudly. The renewal notice goes to a contact address nobody reads, the card is declined in silence, and the first sign of trouble is the site, the email, and every OAuth callback pointing at it going dark at once.
An expired domain is worse than an expired certificate in one specific way: it is not always yours to fix. A certificate can be reissued in minutes. A registration that runs past its recovery window is released, and anyone can take it.
The stages a lapsed gTLD registration passes through under ICANN's expired registration policy. Exact durations are set per registry and vary by extension.
Auto-renew is the right answer, and it is not a monitoring strategy, because it fails without telling anyone. A card expires. A registrant-contact verification email goes unanswered and the registrar suspends the name. An invoice is disputed and the registry puts a hold on it. In each case the registrar's renewal job reports nothing at all, and the only record that has changed is the one held by the registry.
So that is the record Upcheck reads — directly, over RDAP, on every domain you monitor, every day.
Monitoring domain expiration in three steps
- 01
Add the websites you own
Upcheck resolves the registrable domain behind each hostname through the Public Suffix List — api.example.co.uk is looked up as example.co.uk — and queries the registry that is authoritative for it. No registrar API keys, no account linking, no access to your registrar at all.
- 02
The registry is re-queried daily
A scheduled job runs a fresh RDAP lookup for every website once every 24 hours. An annual expiry date moves rarely, and registries rate-limit, so daily is the cadence that stays well inside their limits while still catching a hold the day it lands. You can refresh any website on demand too.
- 03
Alerts fire at your thresholds
Set the warnings that suit your renewal process — 60 days, 30 days, 14 days, on the expiry date itself — and pick where each one lands. Rules can cover every website in the workspace or just the ones that matter.
The expiry date is one field of many
A monitor that reads only the expiry date will tell you a suspended domain is perfectly healthy for another three hundred days. Upcheck keeps the whole registration record on every lookup — including the registry's own status codes, which are where a hold, a redemption, or a pending deletion shows up first.
Because every lookup is kept, you also get the change over time: nameservers that moved when nobody moved them, a registrar transfer you did not initiate, an expiry date that jumped a year forward when the renewal finally landed. Each website carries its own check history, and the workspace activity feed records the renewal when it happens.
Every state a registration can be in
Expiry is the failure everyone plans for. Suspension is the one that takes a site down with no warning at all — and it is invisible to any tool that only compares dates. Each of these is a status on the board.
- Registered
The registry answered, the expiry date is more than 30 days out, and nothing about the name is flagged.
- Renewal Due
Inside 30 days of expiry. Wide on purpose: it is roughly when a registrar starts attempting auto-renewal, so you hear about it while that attempt is still in progress.
- Suspended
The registry reports clientHold or serverHold. The name has been pulled out of DNS and the site does not resolve — regardless of what the expiry date says.
- Expired
The date has passed, or the registry reports redemption period or pending delete. Still recoverable from the registrar, usually for a fee, and the window is closing.
- No Expiry Published
The registry answered but withholds expiry dates as policy — .de, .nl and .ch among them. Reported as what it is, not dressed up as an error.
- Lookup Failed
No registry record came back. Kept separate from the certificate's state, so a registry outage never makes a healthy certificate look broken.
Anything inside 30 days of expiry is flagged on the dashboard independently of the alert rules you configure — three times wider than the 21-day window used for certificates, because the two failures are renewed on different timescales by different people.
Rules that watch the domain, not just the certificate
Every alert rule names the clock it watches: the SSL certificate or the domain registration. That separation is the point — a rule warning you three weeks before a certificate expires is far too late for a registration, so a new registration rule starts at 30 days rather than the certificate’s 7, and you add the further thresholds your renewal process needs.
A rule carries as many thresholds as you want it to, expressed in days or weeks, plus a trigger for the expiry date itself. Suspension sits outside all of them: a registry hold arrives without a countdown, so it fires on any registration rule watching that website, whatever thresholds you gave it — with wording that says the domain has been removed from DNS rather than quoting a reassuring expiry date.
Each rule then picks a cadence: fire once when the threshold is crossed, daily until expiry, or every 12 hours for the ones that genuinely cannot slip. Rules apply to the whole workspace by default, or you can scope one to specific websites — so the domain your billing runs on and a redirect you keep for old links do not have to share an escalation policy.
Delivery goes to email, Slack, Discord, Microsoft Teams, or your own webhook. Email recipients live in named lists you define once and point any rule at, which means the people who hear about a domain can change without anyone rewriting rules. Thresholds need a published expiry date to count down from, so on the few extensions that withhold one there is nothing to count — but a hold or a redemption on those still alerts, because neither depends on a date.
What to look for in domain expiration monitoring tools
Most domain expiry tracking arrives as one row in an uptime suite, or as a spreadsheet somebody maintains by hand. If losing a domain is the thing you are actually trying to prevent, these are the capabilities that decide whether it works.
- 01
Registry holds, not just dates
A suspended domain is down today and its expiry date still reads healthy. If a tool only compares dates, the outage it misses is the sudden one.
- 02
Multiple thresholds per rule
One warning is a single point of failure. A rule should fire at 60, 30, and 7 days so a missed notification is not a lost domain.
- 03
Alerts where the team already is
Registrar renewal notices go to whoever registered the name, often years ago. Look for Slack, Discord, Teams, and a plain webhook for your own tooling.
- 04
Separate from certificate expiry
The two clocks run on different timescales and are fixed by different people. A tool that folds them into one status hides whichever is not the worst.
- 05
History, not just current state
You need to answer "when did this change" — which means per-website check history and an activity trail that records a renewal when it lands.
- 06
Recipients that outlive people
A domain outlasts job tenure by years. Named recipient lists you point rules at beat an address hard-coded by whoever registered the name.
Both clocks, one price
$10 per month for the workspace, plus $1 per website per month — which covers the domain registration and the SSL certificate on that website, not one or the other. The per-website charge is metered daily, so adding a website mid-cycle costs only the days it was tracked, and removing one stops the charge that day. Every feature on this page is included at every size; there is no tier that withholds Slack, or webhooks, or history. A workspace can track up to 500 websites.
Certificates on the same websites are re-checked every 12 hours — see SSL certificate expiration monitoring.
Frequently asked questions
What is domain expiration monitoring?
Domain expiration monitoring is the practice of automatically checking the registration behind each domain you own, tracking how many days remain before it expires, and alerting a responsible team before it lapses. A monitor queries the registry that is authoritative for the domain, reads the expiry date and the registry's status codes, and compares them against thresholds you set — so the warning arrives while renewal is still routine rather than a recovery job.
How is domain expiry different from SSL certificate expiry?
They are two independent clocks on the same website. A certificate lives months and is usually renewed by automation; a registration lives a year or more and is renewed by a human with a payment card. An expired certificate breaks HTTPS but the name still resolves; an expired registration eventually takes the name out of DNS entirely, along with your email. Upcheck tracks both separately, with their own checks, statuses, and alert rules, and shows the worse of the two as the website's overall status.
How often does Upcheck check domain registration expiry?
Every website's registration is re-looked-up automatically once every 24 hours. Registries operate the RDAP servers these lookups go to and many rate-limit them, and an annual expiry date changes only a handful of times in its life, so a daily cadence catches everything worth catching without straining the registries. You can also refresh any website on demand from the dashboard, which runs both the registration lookup and the TLS handshake immediately.
Can Upcheck detect a domain that has been suspended by the registry?
Yes. Upcheck reads the registry's EPP status codes on every lookup. A clientHold or serverHold means the registry has removed the name from DNS — the site is down now, whatever the expiry date says — and Upcheck reports that as Suspended rather than as healthy. Redemption period and pending delete are read the same way and reported as expired, because at that point the date is moot and the recovery window is what matters.
Which domain extensions are supported?
Upcheck looks registrations up over RDAP, using IANA's bootstrap registry to find the authoritative server for a TLD, hand-verified endpoints for TLDs that serve RDAP but are absent from that registry, and a public redirector as a last resort. Coverage is broad across gTLDs and good across ccTLDs. Some registries — .de, .nl and .ch among them — answer RDAP but withhold the expiry date as a matter of policy. Upcheck reports those as "No Expiry Published" rather than as a failure. Expiry thresholds have no date to fire from on those TLDs, but registry holds and redemptions still alert, because neither is a countdown.
Does registrar auto-renew make domain expiration monitoring unnecessary?
No. Auto-renew fails quietly, and it fails on the most ordinary things: an expired payment card, a changed billing address, a renewal notice sent to an inbox nobody owns any more, a registrant-contact verification nobody completed. In each case the registrar's job reports nothing and the name keeps counting down. Monitoring reads what the registry actually publishes, which is the only record that decides whether the name resolves tomorrow.
Where can Upcheck send domain expiry alerts?
Email, Slack, Discord, Microsoft Teams, and your own webhook endpoint. Email alerts go to reusable recipient lists you name and point rules at, so changing who hears about a domain does not mean editing every rule.
Can I monitor domain expiration for free?
You can run a WHOIS or RDAP query by hand for free. That works for one domain at a single moment, but it tells you nothing next month, catches no registry hold, and does not scale past a handful of names. Upcheck costs $10 per month for the workspace plus $1 per website per month, which covers both the registration and the certificate on every website.
Never lose a domain to a declined card.
Add the websites you own, set the thresholds your renewal process needs, and choose where the warnings land.