Skip to content

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)
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;
}
Terminal window
vantage domains add <websiteId> --domain joesplumbing.com --kind site

What happens:

  1. Domain row created in vantage-domains with status: "pending"
  2. Melbora calls Vercel’s API to add the domain to the website’s Vercel project
  3. Vercel returns the DNS records that need to be set (A/AAAA/CNAME/TXT)
  4. The CLI prints those records — you set them at your registrar
  5. Vercel verifies them in the background; status flips to verified when DNS resolves

For email domains:

Terminal window
vantage domains add <websiteId> --domain mail.joesplumbing.com --kind email

Email 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.

Terminal window
vantage domains list <websiteId>
const { domains } = await vc.domains.list("wb_01J7...");
Terminal window
vantage domains remove <websiteId> joesplumbing.com

This:

  1. Calls Vercel to remove the domain from the project
  2. Deletes the row from vantage-domains
  3. Does not alter your registrar’s DNS records — those stay until you remove them