Daily Vercel domain health check in Slack
Catch expiring registrations, broken nameservers, and unverified domains across your Vercel account before they take a site offline.
Every morning at 8am in my local timezone, run an agent that audits every domain in my Vercel account and alerts me in Slack if anything is at risk of taking a site offline. Trigger is cron, once per day.
Step 1: Use Vercel's List Domains to fetch the full inventory of domains on the account. Page through if there are more than fit in one response.
Step 2: For each domain, call Vercel's Get Domain to read its expiration date, verification status, auto-renew setting, nameserver configuration, and whether the registrar is Vercel or external.
Step 3: Categorize every domain into one of three buckets. Critical: expiring within 14 days, OR not verified, OR nameservers are misconfigured (intended Vercel nameservers but pointing elsewhere, or vice versa). Warning: expiring within 30 days, OR auto-renew is turned off on a Vercel-registered domain. Healthy: everything else. For externally registered domains the expiration date may be unknown, so only the verification and nameserver checks apply to those.
Step 4: If any domains are in the critical or warning buckets, use Slack Bot's Send a Message to post a single message into the #ops channel (let me pick the exact channel when I set this up). Group the message by bucket with critical first, then warning. For each domain include the domain name, what is wrong in plain English, a one-line remediation (renew the registration, turn auto-renew back on, update the nameservers at the registrar, re-add the TXT record to verify, etc.), and a direct link to that domain's Vercel settings page in the format https://vercel.com/[team-slug]/domains/[domain].
Step 5: If every domain is healthy, do not post anything. Staying silent on good days is intentional so the channel does not become noise.
Use the Slack Bot integration for the alert (acts as a bot, posts into the channel). The Vercel List Domains and Get Domain operations are the only Vercel calls needed.
Additional information
What does this prompt do?
- Sweeps every domain in your Vercel account once a day and checks expiration, verification, auto-renew, and nameservers.
- Sorts the results into critical, warning, and healthy buckets so the most urgent risks rise to the top.
- Posts a prioritized Slack alert with one-line fixes and a direct link to each domain's Vercel settings.
- Stays silent on healthy days so the ops channel does not turn into noise the team learns to ignore.
What do I need to use this?
- A Vercel account with access to the domains you want monitored.
- A Slack workspace and an ops channel where alerts should land.
- A rough idea of which domains are business critical, so you can tune the thresholds later.
How can I customize it?
- Change the run time, or move it to twice a day for high-stakes domains.
- Adjust the warning and critical windows (default 30 and 14 days) to match your renewal lead time.
- Switch the destination channel, or @mention a specific on-call group when something hits critical.
Frequently asked questions
Will this work if some of my domains are registered outside Vercel?
What happens on a day when every domain looks fine?
Can I change how soon I get warned before a domain expires?
Does this renew domains for me or just notify?
Where does the Slack message get posted?
Stop finding out a domain expired from a customer.
Connect Vercel and Slack once, and Geni quietly checks every domain each morning, only pinging you when something actually needs a fix.