What EPP status codes actually are
Every domain carries one or more EPP status codes — short machine-readable flags set by the
registry that describe what can and can't happen to the domain right now. They show up in WHOIS/RDAP output
as strings like clientTransferProhibited or pendingDelete. Most domain hunters skim
past them. That's a mistake — the status code tells you more about a domain's real state than the "expiration
date" field ever will.
The codes that actually matter for monitoring
ok
Default state. No restrictions, no pending action. A domain sitting at ok weeks before its
expiry date is not close to dropping — the registrant simply hasn't renewed yet, and may still.
clientHold / serverHold
The domain is deliberately removed from the DNS zone — it won't resolve — while remaining registered.
Registries and registrars set this for non-payment, abuse investigations, or legal disputes. A serverHold in particular is set by the registry itself and usually signals something more serious than a routine dispute.
clientTransferProhibited / serverTransferProhibited
Blocks domain transfers between registrars. client-prefixed locks are set by the current registrar
(often the default for active domains) and can be lifted by the owner. server-prefixed locks are
set by the registry and usually mean a dispute, court order, or fraud flag — these don't lift on request.
redemptionPeriod
The domain has expired and been deleted by the registrar, but the registry holds it for roughly 30 days before permanent deletion. The original owner can still reclaim it here — usually at a steep redemption fee — but new registration isn't possible yet. This is the code to watch closely if you're tracking a specific expiring target — see the full redemption vs. pending delete breakdown for the phase-by-phase timeline.
pendingDelete
The final 5-day window after redemption ends. The domain is locked from all changes and will drop into the available pool at the end of this window. This is the status your monitoring should treat as "drop imminent" — everything before it is still reversible by the original owner.
Why this beats watching the expiration date alone
Two domains can share the exact same "expires on" date and be in completely different states — one still ok and quietly renewed, the other already in pendingDelete and hours from release.
A monitoring setup that only checks the date field can't tell them apart. One that also reads the status code
can rank targets by how close they actually are to dropping, not by how close the calendar says they should be.