Skip to content

Custom-domain infrastructure for SaaS

Custom domains, without the DNS support queue.

Give every user a clear path from “connect my domain” to verified DNS. DoDomain handles provider detection, one-click Cloudflare, guided setup everywhere else, signed webhooks, and the checks that come after launch.

  • REST API available now
  • No proxy or traffic lock-in
  • SDKs on npm
DoDomain / live connection
dd_sess_4x9…
Connect your domain to YourProduct

Setting up

app.customer.com

Detecting DNS provider…
One-click connect with CloudflareWe write the records for you. You approve on Cloudflare's own page — we never see your password. Connect with Cloudflare
Prefer to add the records yourself?

Powered by DoDomain· Link expires in ~24h

Session mintedA short-lived token is ready for the hosted flow.

Your product sends a domain and the records it needs.

DoDomain returns proof when authoritative DNS is live.

One flow. The best available path for each provider.

DNS is fragmented; your product should not feel that way. DoDomain adapts the setup without changing the contract your backend integrates against.

A

Cloudflare: scoped OAuth

Your user approves the change on Cloudflare's own page. DoDomain writes only the requested records, verifies them, and never stores the grant.

One click
B

Everywhere else: guided, not generic

Provider detection opens the right dashboard and explains its host-field quirks. Every record has an exact value, a copy action, and its own live status.

22 provider guides
C

Every success: independently verified

OAuth consent and redirect callbacks are not proof. Success is declared only after the expected values are confirmed at the authoritative source — the domain's nameservers, or the provider's own API on one-click.

One truth signal

A specific guide beats “go update your DNS.”

Cloudflare is automated today. These providers have dedicated manual guidance and a universal fallback catches the rest.

Three boundaries. No DNS logic in your product.

The supported integration today is plain HTTPS plus a hosted link. The same contract will sit underneath the pre-release SDKs when they publish.

01

Mint a connect session

Your server sends the domain and the DNS records your product needs. The secret key stays server-side; the browser only receives a short-lived session token.

POST /api/v1/sessionsdomain + records + returnUrl
02

Hand the flow to your user

Open the hosted link. DoDomain detects the DNS provider, offers scoped Cloudflare OAuth when available, and falls back to provider-specific instructions everywhere else.

connectUrlone clear path, no dead end
03

Trust the verified event

A callback is never treated as proof. DoDomain verifies the records at the authoritative source first, records the connection, and then signs the webhook sent to your server.

connection.verifiedHMAC-SHA256 signed
03 / START WITH HTTP

The first connection is one request away.

Create an app, keep the dd_sk_… key on your server, and mint a 24-hour session. Send the returned connectUrl to your user. No framework or browser package is required.

Available now: REST API + hosted flow
Pre-release: @dodomain/node + @dodomain/connect

create-session.tssupported today
// Your server
const response = await fetch(
  "https://app.dodomain.io/api/v1/sessions",
  {
    method: "POST",
    headers: {
      authorization: `Bearer ${DODOMAIN_KEY}`,
      "content-type": "application/json"
    },
    body: JSON.stringify({
      domain: "app.customer.com",
      records: [{
        type: "CNAME", host: "app",
        value: "edge.yourproduct.com"
      }]}
    })
  })
});

const { connectUrl } = await response.json();
200 okhttps://app.dodomain.io/connect/dd_sess_…

A green check should not be the last time anyone looks.

Domains move, records get deleted, and certificates stop renewing. DoDomain keeps rechecking established connections against authoritative DNS and emits events only when the state changes.

  • Included on every plan, including Free
  • Exact failing records in the drift event
  • Recovery event when DNS becomes healthy again
  1. app.customer.com connectedconnection.verified
  2. CNAME no longer matchesconnection.failed · dns_drift
  3. Required records restoredconnection.verified · recovered

Start before procurement gets involved.

Every tier includes the full connect flow and ongoing monitoring. Choose by monthly connections, applications, and API throughput.

Free

$0forever

Verified connections
50 / mo
Applications
1
API rate
60 / min
  • 1 app
  • All connect tiers
  • Community support
  • DNS drift monitoring
Start free

Pro

Best for shipping

$24per month, billed annually

$29$288/yr2 months free

Verified connections
500 / mo
Applications
3
API rate
300 / min
  • 3 apps
  • Email support
  • DNS drift monitoring
Choose Pro

Scale

$82per month, billed annually

$99$984/yr2 months free

Verified connections
2,500 / mo
Applications
Unlimited
API rate
1,200 / min
  • Everything in Pro
  • Unlimited apps
  • Priority support
  • DNS drift monitoring
Choose Scale

Monthly verified-connection allowances come from the same plan definitions the application itself uses. No sales call is required for these self-serve tiers.

What your team will ask before the first API call.

What does DoDomain do?

DoDomain gives SaaS products a hosted custom-domain setup flow. Your server creates a session with the domain and required DNS records; DoDomain guides or applies those records, verifies them against authoritative DNS, and notifies your server with a signed webhook.

Which DNS providers support one-click setup?

Cloudflare supports the live one-click OAuth path. Detected providers get a provider-specific guided setup with exact records, direct dashboard links, and live verification; unrecognized hosts get the universal guided fallback. Domain Connect support is built but stays inactive until providers approve DoDomain's templates.

Does DoDomain proxy traffic or issue SSL certificates?

No. DoDomain writes and verifies DNS; traffic goes directly to your infrastructure. TLS terminates at your host, such as Vercel, Cloudflare for SaaS, Render, Fly.io, Caddy, or nginx, so DoDomain is never in the request path.

Is there an SDK, or do I integrate over raw HTTP?

Both. npm install @dodomain/node gives you a typed server client (sessions.create, verifyWebhook) and npm install @dodomain/connect embeds the hosted flow as a theme-matched sheet inside your own UI. The plain REST API and the hosted connect link stay fully supported — the SDKs are a convenience over the same shapes, not a requirement.

What happens if a connected domain's DNS changes later?

DoDomain keeps rechecking established connections. When required records drift, it marks the connection broken and sends connection.failed; when the records return, it sends connection.verified with a recovery signal. Monitoring is included on every plan.

Is there a free plan, and can I cancel anytime?

Yes. The Free plan is free forever and includes the full connect flow, authoritative verification, and DNS drift monitoring — no card required. Pro and Scale are billed monthly or annually; choosing annual billing gives you 2 months free. You can cancel a paid plan at any time from the subscription-management email.

Take the DNS step out of your support queue.

Create the session. Let the user connect. Wait for the signed proof.

Start with 50 free Read the docs