Domains expire. Most of the time, your registrar sends an email reminder, you click renew, and nothing breaks. But registrar emails go to spam. You change email addresses. The credit card on file expires. And before you know it, your domain has lapsed and someone else has registered it — sometimes a domain squatter who'll sell it back at 10× the original price.
The best defense is redundant reminders: registrar notifications plus an independent monitoring service that alerts you at 60, 30, 14, and 7 days before expiry. Here's how to set that up.
Most registrars send expiry reminders, but they have real failure modes:
Before anything else, make sure your registrar's built-in reminders are configured correctly.
This takes five minutes and should be done regardless of what else you set up.
For developers who want full control and already run Linux servers, a daily cron script that checks WHOIS expiry dates is straightforward:
#!/bin/bash
# domain-expiry-check.sh — run daily via cron
ALERT_EMAIL="you@company.com"
WARN_DAYS=30
DOMAINS=(
"yourcompany.com"
"yourproduct.io"
"yourcompany.net"
)
for DOMAIN in "${DOMAINS[@]}"; do
# Use whois to get expiry date
EXPIRY=$(whois "$DOMAIN" 2>/dev/null | grep -iE "expiry|expiration|expires" | head -1 | grep -oE "[0-9]{4}-[0-9]{2}-[0-9]{2}")
if [ -z "$EXPIRY" ]; then
echo "Could not check $DOMAIN (whois parse failed)" | \
mail -s "Domain check failed: $DOMAIN" "$ALERT_EMAIL"
continue
fi
EXPIRY_EPOCH=$(date -d "$EXPIRY" +%s 2>/dev/null || date -j -f "%Y-%m-%d" "$EXPIRY" +%s)
NOW_EPOCH=$(date +%s)
DAYS_LEFT=$(( (EXPIRY_EPOCH - NOW_EPOCH) / 86400 ))
if [ "$DAYS_LEFT" -le "$WARN_DAYS" ]; then
echo "$DOMAIN expires in $DAYS_LEFT days ($EXPIRY)" | \
mail -s "⚠️ Domain expiry warning: $DOMAIN ($DAYS_LEFT days)" "$ALERT_EMAIL"
echo "ALERT sent for $DOMAIN: $DAYS_LEFT days remaining"
else
echo "$DOMAIN: $DAYS_LEFT days remaining (OK)"
fi
done
Add to crontab for daily 9am check:
0 9 * * * /opt/scripts/domain-expiry-check.sh >> /var/log/domain-check.log 2>&1
Pros: No external service dependencies. Works with any domain. Full control over alert thresholds.
Cons: WHOIS parsing is fragile — different registrars format the expiry date differently. Rate limiting on WHOIS queries. If your server is down or the script fails, you get no alert. Requires ongoing maintenance.
A purpose-built service checks your domain registrations from external infrastructure on a schedule and emails you at multiple thresholds — 60, 30, 14, and 7 days before expiry. No scripts to maintain, no server required.
What good domain monitoring looks like:
DomainWatch monitors your domain registrations and sends email alerts 60, 30, 14, and 7 days before any domain expires. Never lose a domain because a reminder went to spam. $9/month for up to 25 domains.
Join the DomainWatch waitlist → Check a domain freeThe safest approach combines all three layers:
For a single personal domain, enabling auto-renew and using a free external checker occasionally is probably enough. For business domains that your product, brand, or operations depend on, all three layers are worth the minimal effort and cost.