Custom Domain

Introduction

What Customdomain is, the connect → secure → serve → monitor loop, and where to go next.

Open-source custom-domain onboarding for multi-tenant SaaS — DNS auto-configuration, automatic SSL, and a reverse proxy, in one self-hostable stack. Let your customers point their own domain at your product in minutes, with a drop-in widget and a REST API.

What it does

  • Connect — a customer enters their domain; the engine detects their DNS provider and applies the records through the best available rail — OAuth into the provider, Domain Connect, a scoped API token, or guided-manual — then watches propagation.
  • Secure — the edge issues a TLS certificate on demand during the handshake, but only for hostnames a live/propagating connection has authorized. (Certificates come from Let's Encrypt staging — not browser-trusted — until the edge is run with EDGE_ACME_PROD=1.)
  • Serve — the edge reverse-proxies the custom domain to your origin.
  • Monitor — webhooks, a developer console, usage metering, and DNS-drift detection keep you informed after go-live.

The two planes

Two independent planes share one database and talk over HTTP:

  • Connect plane (the control-plane) — the /v1 REST API, the connect rails, the propagation poller, quotas/metering, and webhooks.
  • Edge plane — on-demand TLS termination + reverse proxy, gated by a single internal ask call to the control-plane.

See Concepts for the full model and Self-hosting to run both planes.

Start here

If you want to…Read
Connect your first domain end to endQuickstart
Understand connections, rails, and statusConcepts
Authenticate API calls and the widgetAuthentication
Embed the connect modalThe widget SDK
Add email records / merge SPF safelyEmail DNS
Call the APIAPI Reference
React to eventsWebhooks
See which DNS providers auto-configureDNS providers
Run the stack yourselfSelf-hosting
Understand the security modelSecurity
Configure plans and quotasPlans & quotas
Look up enums, env vars, error codesReference
Fix a stuck connectionTroubleshooting

For AI agents

A machine-readable index of this documentation is at /docs/llms.txt, with a full-text version at /docs/llms-full.txt. Every page is also available as raw Markdown at /llms/<page-slug>.

On this page