Skip to Content

Guide

How to Let Your Customers Manage Their Own Domains

A practical guide to replacing DNS tickets, shared logins, and coaching calls with a flow your customers run themselves.

Custom domains are one of those features customers love and support teams learn to dread. The customer owns the domain, your platform owns the infrastructure, and between the two sits a DNS control panel that neither side wants to be responsible for. When the handoff is manual, every connected domain starts life as a support ticket.

It does not have to work that way. This guide covers how to let your customers manage their own domains: what manual setup really costs, how the self-serve model keeps credentials out of your hands, what customers should control, what your platform should never give up, and the two implementation paths that get you there.

What manual domain setup actually costs

If connecting a domain on your platform involves a human on your side, the process probably follows one of three patterns, and none of them age well.

  • The ticket thread. A customer emails "how do I use my own domain?" and someone on your team replies with instructions. The customer tries, misreads a record type, and replies with a screenshot. Three or four round trips later the domain works. Multiply by every new customer, forever.
  • The shared login. To skip the back and forth, the customer hands over their registrar username and password so your team can "just set it up." Now you hold credentials that can transfer the domain, change its nameservers, or take down their email. That is one password reuse away from a serious incident, and a liability you never asked for.
  • The DNS coaching session. A screen share where an engineer walks a customer through their provider's panel, explaining the difference between an apex record and a CNAME while everyone waits for a TTL to expire. Educational, maybe. Scalable, no.

All three patterns have the same shape: skilled people spend hours on work that adds nothing to your product, activation stalls for days while a paying customer stares at a certificate warning, and the first thing a new customer experiences is a chore. The people most likely to give up in that window are the ones who just decided to put your product on their own domain, which is to say, your most committed customers.

The self-serve model: customers authorize, you never touch credentials

The fix is a role reversal. Instead of your team operating the customer's DNS, the customer authorizes their own provider and the platform does the technical work programmatically. One principle anchors the whole model: your platform never sees, stores, or asks for the customer's registrar credentials.

Here is what that looks like with Custom Domain running under your product:

  1. The customer enters a domain inside your app: docs.acme.com, or acme.com itself.
  2. The provider is detected automatically. Custom Domain recognizes 25+ DNS and registrar providers and picks the smoothest path for each one.
  3. The customer approves the change at their provider. With one-click provider authorization, they land on their own provider's pages, log in there, and grant scoped permission. Providers with API tokens accept a pasted token instead. When neither is available, a guided manual flow shows the exact records to add and verifies them automatically the moment they resolve.
  4. Everything else is automatic. Records are written, ownership is verified, and a TLS certificate is issued. A typical connection is live in minutes.

Notice where the trust lives. Authorization happens on the provider's own login pages, in the customer's own session, scoped to what the connection needs. There is no password in your database, no shared login sitting in a ticket, and nothing for your team to rotate when an employee leaves. The customer remains the owner of their domain in every meaningful sense, which is the whole point of bring your own domain.

What customers can manage on their own

Once the flow is self-serve, the customer's domain lifecycle stops involving your support queue. Without filing a ticket, customers can:

  • Connect a domain. Subdomain or apex domain, through whichever authorization path their provider supports.
  • Verify ownership. Verification runs automatically during connection, and re-verification is just as automatic if records ever need to be confirmed again.
  • Keep TLS current by doing nothing. Certificates are issued at connection time and renewed before expiry, with no action from the customer or from you. The details are in how to automate TLS for customer domains.
  • Disconnect cleanly. When a customer leaves or moves a domain elsewhere, they remove the connection themselves, and your platform finds out through a webhook rather than through a confused email three weeks later.

Notice the pattern: the only operations customers actively perform are connect and disconnect. Verification and certificate renewal are automated out of existence. Good self-serve domain management is mostly the absence of management.

What your platform keeps control of

Letting customers manage their own domains does not mean handing them the keys to your infrastructure. The division of responsibility is sharp, and that sharpness is what makes the model safe.

  • Routing stays yours. Your platform decides which tenant, app, or environment each connected domain serves. Customers connect domains to their own account and nothing else, and strict multi-tenant isolation means one customer's domain can never point at another customer's content.
  • TLS stays yours. Certificates are issued, stored, and terminated at a managed reverse proxy edge. Private keys never pass through your application or the customer's hands. See multi-tenant TLS for how isolation works at the certificate layer.
  • Monitoring stays yours. Connected domains are re-checked continuously. If a customer edits a record and breaks their setup six months from now, you get a webhook when it breaks and another when it recovers, so your dashboard shows the real state and your team can reach out before the customer even notices.

The clean way to say it: customers manage their domain, you manage everything the domain points at. Neither side can break the other's half.

Two ways to implement it

There are two paths to putting this in front of your customers, and both end in the same place.

The embeddable widget

The widget is a drop-in "connect your domain" flow you embed in your dashboard with a small snippet. It handles provider detection, one-click provider authorization, the guided manual fallback, verification, and live status. It inherits your branding, so customers never feel like they left your product. For most teams this is the right answer: it ships in an afternoon and covers the entire flow described above.

The REST API

If your onboarding is bespoke, build the flow yourself on the REST API. Endpoints cover connections, DNS records, TLS status, monitoring, webhooks, and registrar search and purchase, so you can design every screen while the control plane does the heavy lifting underneath. The SDK wraps the common paths if you would rather not write raw HTTP calls.

WidgetAPI
Time to shipAn afternoonA few days
UI controlYour branding, prebuilt flowEntirely yours
Best forMost platformsBespoke onboarding and automation

One more path is worth knowing about: if AI agents operate parts of your platform, an MCP server exposes the same connect, verify, and monitor operations to them. There is a separate guide on connecting domains with AI agents.

Where to start

If you are still designing the feature, how to add custom domains to your SaaS covers the architecture decisions, how it works shows the connection flow end to end, and the features page lists everything the platform handles for you.

When you are ready to see it, create a free account, connect a test domain, and time it. Pricing starts at $0 on the free tier, and if you would rather talk through your setup first, book a demo. Your next domain ticket can be your last one.

Frequently asked questions

Is it safe to let customers manage their own domains?

Yes, because the scope is narrow. Customers authorize their DNS provider directly on the provider's own pages, so your platform never holds registrar credentials. They can only connect, verify, or disconnect domains on their own account, and strict multi-tenant isolation keeps every other tenant untouched. Routing, TLS, and monitoring stay under your platform's control.

What happens if a customer breaks their DNS records after connecting?

Monitoring catches it. Connected domains are re-checked continuously, and a webhook fires when a record breaks and again when it recovers. The customer sees the real status in your dashboard and can rerun verification themselves, usually without opening a ticket.

Do my customers need to understand DNS to use a self-serve flow?

No. Their provider is detected automatically, and with one-click provider authorization the records are written for them. If their provider requires a manual step, the flow shows the exact values to paste and verifies them automatically once they resolve. Most customers never learn what a CNAME is, which is the goal.

Can customers connect apex domains, or only subdomains?

Both. Apex domains and subdomains follow the same self-serve flow, and the correct record types are handled per provider. See the glossary entry on apex domain vs CNAME for the technical background.