← Blog  ·  October 2026

Domain Expiry Alerts: Never Lose a Domain You Forgot to Renew

How to set up email reminders before your domain expires — registrar settings, a cron script, and automated monitoring services.

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.


Why registrar reminders aren't enough

Most registrars send expiry reminders, but they have real failure modes:

The real cost of losing a domain: A lapsed .com for a live business can be registered within minutes by automated squatters. Recovery — if possible at all — typically costs $1,000–$10,000+. Three extra email reminders are worth it.

Method 1: Verify your registrar settings now

Before anything else, make sure your registrar's built-in reminders are configured correctly.

  1. Log in to your registrar (GoDaddy, Namecheap, Google Domains, Cloudflare, etc.)
  2. Check the account email address — make sure it's an inbox someone actually reads
  3. Enable auto-renew and verify the payment method is current
  4. Check notification settings — most registrars let you add additional email addresses for renewal reminders
  5. Check spam right now for any recent registrar emails you may have missed

This takes five minutes and should be done regardless of what else you set up.


Method 2: Shell script + cron job

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.


Method 3: Dedicated domain expiry monitoring service

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:

🔍 Check when your domain expires right now: Free domain expiry checker — see days remaining, expiry date, and registrar →

🔔 DomainWatch — email alerts before your domain expires

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 free

Recommended setup for most teams

The safest approach combines all three layers:

  1. Registrar auto-renew — your first line of defense, but not reliable alone
  2. Registrar email reminders — verify they're going to an active, monitored inbox
  3. External monitoring service — independent of your registrar, alerts at multiple thresholds, separate email delivery path

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.

← All articles  ·  DomainWatch  ·  Free domain checker