Domains
import { Aside } from ‘@astrojs/starlight/components’;
A Domain is a custom hostname attached to a Website. Each Website can have multiple Domains. There are two kinds:
site— the public URL of the website (e.g.joesplumbing.com)email— a domain configured for sending email (used by the Resend integration)
Data shape
Section titled “Data shape”type DomainStatus = "pending" | "verified" | "failed";
interface DnsRecord { type: string; // A | CNAME | TXT | NS | ... name: string; // @ or _resend, etc. value: string; ttl?: number; priority?: number; purpose?: "verification" | "routing" | "nameserver";}
interface Domain { websiteId: string; domain: string; // joesplumbing.com kind: "site" | "email"; status: DomainStatus; dnsRecords: DnsRecord[]; // what to set at your registrar externalId?: string; // Resend domain id (email only) vercelManaged?: boolean; // true if delegated to Vercel nameservers resendApiKeyId?: string; // per-domain Resend API key (email only) createdAt: string; updatedAt: string;}Adding a domain
Section titled “Adding a domain”vantage domains add <websiteId> --domain joesplumbing.com --kind siteWhat happens:
- Domain row created in
vantage-domainswithstatus: "pending" - Melbora calls Vercel’s API to add the domain to the website’s Vercel project
- Vercel returns the DNS records that need to be set (
A/AAAA/CNAME/TXT) - The CLI prints those records — you set them at your registrar
- Vercel verifies them in the background; status flips to
verifiedwhen DNS resolves
For email domains:
vantage domains add <websiteId> --domain mail.joesplumbing.com --kind emailEmail domains go through Resend’s verification flow (TXT/DKIM/SPF records), not Vercel’s.
DNS modes: Vercel-managed vs registrar-managed
Section titled “DNS modes: Vercel-managed vs registrar-managed”Vercel-managed (vercelManaged: true): you delegate your domain’s
nameservers to Vercel. Vercel adds the right A/CNAME records itself.
Easier ongoing — no DNS records to copy. Tradeoff: every DNS change
goes through Vercel’s UI.
Registrar-managed (vercelManaged: false): your domain stays at
its current registrar; you copy the records Vercel tells you into your
registrar’s DNS console. More control, more steps. This is what most
clients use because they want to keep their domain at GoDaddy /
Cloudflare / Namecheap.
Melbora auto-detects mode based on what records exist when you add the domain — no flag to set.
Reading domains
Section titled “Reading domains”vantage domains list <websiteId>const { domains } = await vc.domains.list("wb_01J7...");Removing a domain
Section titled “Removing a domain”vantage domains remove <websiteId> joesplumbing.comThis:
- Calls Vercel to remove the domain from the project
- Deletes the row from
vantage-domains - Does not alter your registrar’s DNS records — those stay until you remove them
See also
Section titled “See also”- Add custom domains — step-by-step setup walkthrough
- Concepts → Websites — what Domains attach to