Skip to Content

FOR SITE BUILDERS

Ship every site on its own domain, inside your publish flow.

Your user types acme.com and clicks Publish. Custom Domain detects their DNS provider, writes the records, verifies ownership, and issues HTTPS, then a webhook flips the site to its domain. They never leave your product or open a DNS panel.

One embed, 25+ providers auto-configured, apex and www both covered. Live on their brand in about 30 seconds.

See how it works

Your publish flow

Connect a custom domain

acme.com
Publish to acme.com
✓ Namecheap detected ✓ Records written, ownership verified ✓ HTTPS issued for acme.com and www domain.live webhook sent to your app
One embed, rendered under your brand.
Live on their domain in about 30 seconds · 25+ DNS providers auto-configured · Apex and www, no pinned IP · Wildcards for tenant subdomains

The problem, for you

The domain step is where finished sites stall.

A user drags out a site, hits Publish, and lands on their-site.yourplatform.com. The one thing they actually wanted, their own domain on the door, becomes a support article, a registrar they have never seen, and a CNAME they are supposed to paste correctly on the first try.

Most never finish. The site stays on your subdomain, the upgrade you gated behind "custom domain" never converts, and the users who do try flood your inbox with "my domain is not working" tickets that are really trailing dots and host-field mistakes in someone else's zone.

0

DNS records your users ever touch. Custom Domain detects their provider, writes the records, verifies ownership, and issues HTTPS.

The last thirty seconds of publishing is the one step your users cannot finish alone, and it should not be the one that churns them.

Apex, www, and wildcard covered on 25+ providers.

How it works for you

Publish to a live domain, in one flow.

  1. 01

    Embed, drop one connect widget into your publish flow, or call the API from your backend. Your styling, no redirect.

  2. 02

    Detect, we fingerprint the DNS provider the moment your user types their domain, from GoDaddy to Cloudflare.

  3. 03

    Write, records land via provider sign-in, provider-hosted one-click setup, a BYO token, or guided manual with a live check.

  4. 04

    Serve, ownership is verified and the certificate issues before the first request, apex and www included.

  5. 05

    Flip, a domain.live webhook fires and your app switches the site to its domain. No polling, no review queue.

Webhook events →
your backend
POST /v1/connections curl https://api.customdomain.ai/v1/connections \ -H "Authorization: Bearer sk_live_…" \ -d '{ "hostname": "acme.com" }'
domain.live webhook
{ "event": "domain.live", "hostname": "acme.com", "provider": "namecheap", "https": "issued", "state": "live" }
pending_ownership verifying live you get the webhook, we keep it live.
records · acme.com
TYPE
NAME
VALUE
TTL
CNAME acme.com edge.customdomain.ai 3600 CNAME www.acme.com edge.customdomain.ai 3600 CNAME *.acme.com edge.customdomain.ai 3600

Apex, www, wildcards

The records that trip your users up, written for them.

The root domain works on every provider without a pinned IP, so a user pointing acme.com at your product does not need a paid ALIAS plan or a support ticket. The www host is never forgotten, and one wildcard connection covers *.acme.com when your users hang tenant subdomains off their own domain.

Certificates issue in the TLS handshake and renew themselves, so nothing expires on a customer's site. Drift is re-checked hourly. If a user edits their zone and breaks the connection, your app hears about it before their visitors do.

What you get

Built for platforms, not one-off setups.

Embed connect widget

A drop-in connect widget

One embed or SDK call inside your existing publish flow. No DNS UI to design, no registrar quirks to learn, rendered under your brand.

CNAME *.acme.com → edge.customdomain.ai

Wildcards for tenant subdomains

Serve *.acme.com under one connection when your users hang subdomains off their own domain, without a certificate per site.

volume tier · included

Volume that scales with you

Flat tiers with included volume, priced for platforms connecting thousands of domains. You know what a connection costs before you make it.

CNAME acme.com + www, no pinned IP

Apex and www, handled

The root domain works on every provider without a pinned IP, and www never gets forgotten.

25+ providers auto-configured · one-click setup

Every registrar your users showed up with

GoDaddy logo GoDaddy
Namecheap logo Namecheap
Cloudflare logo Cloudflare
Squarespace logo Squarespace
Porkbun logo Porkbun
IONOS logo IONOS
Hover logo Hover
Gandi logo Gandi
Dynadot logo Dynadot
Name.com logo Name.com
OVH logo OVH
Route 53 logo Route 53

Your users arrive on whatever host they already bought from. We configure it for them.

Questions

The things a platform team asks first.

Does the connect flow stay inside my product?

Yes. The widget renders in your UI under your styling and your users never leave your publish flow to reach a DNS panel. Prefer to own the UI entirely? Drive the same steps from the REST API and render your own screens.

How is pricing structured for thousands of domains?

Flat tiers with included connection volume, built for platforms rather than single sites. Wildcard connections cover per-user subdomains without one certificate per site. The full breakdown is on the pricing page.

What is the security posture for our customers' domains?

Ownership is verified before any site goes live, certificates issue in the TLS handshake and renew automatically, and provider tokens are scoped to the records we write. Details and current attestations live on the security page.

Can I migrate domains that are already on my subdomains?

Yes. Create a connection for an existing user, we detect their provider and write the records, and the domain.live webhook tells your app when to flip. Nothing about their current site changes until the certificate is serving.

What happens if a user breaks their DNS later?

Drift is re-checked hourly. A webhook fires on break and again on restore, so your app can surface a fix-it prompt to the user before their visitors ever see an error.

Give every published site its own domain.

Wire the widget into your publish flow, or call the API from your backend. Live on their brand in about 30 seconds.

For creator tools · For ecommerce platforms · Pricing