A paying customer’s site went dark right after they renewed. Not a billing failure. The renewal went through fine. The domain that should have come back online with it just never did.

The missing step

The renewal ran through a payment path that had never had the domain-restore step wired into it at all. Every other payment path on the account restored a removed domain automatically when the account came current again. This one path had simply never been connected to that logic. Fixed that the same evening: the missing step got added, and the customer’s site was back up within hours.

The overcorrection

While looking at that code, another thing stood out. Domain restoration only ran automatically if the domain had been removed within a set window, something like a month. Past that window, the renewal just did nothing, silently, and the account was left with a paid-up plan and no domain. That looked like the same bug wearing a different hat: a customer could renew, believe everything was fine, and never know their site was still down.

The fix that got written removed the window entirely. Reconnect the domain on renewal no matter how long it had been off, and tell the relevant team how long it had sat, just as a heads-up. That went onto the same branch that same night, still waiting behind the missing-step fix.

What was actually wrong with that

Less than two days later, before any of it reached production, the reasoning behind removing the window got a second look, and it didn’t hold up. A domain that has sat disconnected for a long stretch, months rather than days, carries a real risk the short-window case doesn’t: the underlying domain registration itself might have been allowed to lapse at the registrar. Automatically re-pointing a live site’s DNS at a domain nobody has confirmed is still actually registered isn’t a fix. It’s a new way to fail, just one that takes longer to notice.

The window had been right all along. What was actually broken was never the window. It was that going past it produced total silence.

The real fix

The window came back, unchanged. What changed is what happens when a renewal hits it. Instead of returning nothing, the system now sends the domains team a notice naming the account, the domain, the date it was removed, how long it has been off, a direct link to check the domain’s live registration status, and one plain sentence explaining exactly why it was not automatically restored, whether that’s the age window, a domain permanently retired by staff, or the name having been reassigned to a different account since. Every one of those cases used to fail the same way, silently. Now they all produce the same kind of message, built from one shared block so a person reading it always finds the same facts in the same order.

The lesson underneath it

A safeguard that occasionally gets in someone’s way is not automatically the bug. The actual question is whether the thing it protects against is real. Here it was: a stale domain removal genuinely can mean a lapsed registration, and a human genuinely does need to check that before DNS gets pointed back at it. The bug was that the safeguard, once triggered, told no one. Removing the safeguard fixed the complaint and created a worse, quieter failure in its place. Keeping the safeguard and making its failure loud fixed both.