# Custom domain onboarding checklist

What a platform team checks before its customers connect their own domains. Each item links the CustomDomain™ docs page that covers it.

Source: https://customdomain.ai/resources/custom-domain-onboarding-checklist, updated October 30, 2026.

## Before you build

- [ ] **Decide where domains point.** Customer domains point at the CustomDomain™ edge, which issues certificates on Growth and up, or at your own servers, which serve TLS. Docs: [Where domains point](https://docs.customdomain.ai/docs/connect-flow/routing)
- [ ] **Run the flow in test mode.** A test mode application connects made up .test names, goes live on a simulated clock and sends the same webhooks. Docs: [Test mode](https://docs.customdomain.ai/docs/guides/test-mode)
- [ ] **Pick your way in.** The console for your own domains, the API server to server, the widget inside your product, or MCP for agents. Docs: [Which path are you on?](https://docs.customdomain.ai/docs/getting-started/overview)

## While your customer connects

- [ ] **Detect the DNS provider.** The domain's nameservers name its DNS provider, so your customer never picks one from a list. Docs: [Connection paths by provider](https://docs.customdomain.ai/docs/dns/providers)
- [ ] **Write records where you can.** Where the provider allows it, a sign-in, Domain Connect or an API key writes the records. Elsewhere your customer copies the exact rows. Docs: [How the connect flow works](https://docs.customdomain.ai/docs/connect-flow/overview)
- [ ] **Catch copy mistakes.** A full hostname typed into the Name field, a proxy left on or an old record in place is caught and named. Docs: [Troubleshooting](https://docs.customdomain.ai/docs/troubleshooting)
- [ ] **Handle root domains.** A root like acme.com gets an ALIAS-style record or A records, by provider, with www offered as the fallback. Docs: [Root domains (apex)](https://docs.customdomain.ai/docs/dns/root-domains)
- [ ] **Show live status.** Your customer sees `pending`, `propagating`, `live` or `failed`, updated as each check runs. Docs: [Apply records and go live](https://docs.customdomain.ai/docs/connect-flow/verify-and-go-live)
- [ ] **Name the record at fault.** A failed setup names the record and its fix, through the connection's error code, never just that something went wrong. Docs: [Connections](https://docs.customdomain.ai/docs/concepts/connections)
- [ ] **Never show live too early.** A domain reads `pending`, `propagating` or `failed` until every record resolves, and HTTPS starts only after `live`. Docs: [Which path are you on?](https://docs.customdomain.ai/docs/getting-started/overview)

## Before you launch

- [ ] **Check the certificate path.** On Growth and up, certificates issue on the first HTTPS request after live. Any CAA record must allow Let's Encrypt. Docs: [Certificates](https://docs.customdomain.ai/docs/connect-flow/certificates)
- [ ] **Subscribe to webhooks.** Your backend hears `connection.live` and `connection.failed`, and checks each signature. Docs: [Webhook events and delivery](https://docs.customdomain.ai/docs/webhooks/overview)
- [ ] **Write the customer help text.** Help text tells your customer what they will actually do: sign in, approve, paste a key or copy records. Docs: [Setup types and the ask gate](https://docs.customdomain.ai/docs/concepts/ownership-and-setup-types)

## After launch

- [ ] **Re-check records on a schedule.** Live domains are checked against their records, and a missing or changed record is found and named. Docs: [Monitoring and services](https://docs.customdomain.ai/docs/connect-flow/monitoring)
- [ ] **Plan for removal.** Removing a domain stops serving it, and you choose whether its DNS records come out or stay. Docs: [Removing a domain](https://docs.customdomain.ai/docs/connect-flow/offboarding)
