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.
Custom-domain infrastructure for SaaS
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.
Setting up
app.customer.com
Detecting DNS provider…Your product sends a domain and the records it needs.
DoDomain returns proof when authoritative DNS is live.
DNS is fragmented; your product should not feel that way. DoDomain adapts the setup without changing the contract your backend integrates against.
Your user approves the change on Cloudflare's own page. DoDomain writes only the requested records, verifies them, and never stores the grant.
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.
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.
Cloudflare is automated today. These providers have dedicated manual guidance and a universal fallback catches the rest.
The supported integration today is plain HTTPS plus a hosted link. The same contract will sit underneath the pre-release SDKs when they publish.
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 + returnUrlOpen 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 endA 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 signedCreate 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
// 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();https://app.dodomain.io/connect/dd_sess_…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.
connection.verifiedconnection.failed · dns_driftconnection.verified · recoveredEvery tier includes the full connect flow and ongoing monitoring. Choose by monthly connections, applications, and API throughput.
$0forever
$24per month, billed annually
$29$288/yr2 months free
$82per month, billed annually
$99$984/yr2 months free
Monthly verified-connection allowances come from the same plan definitions the application itself uses. No sales call is required for these self-serve tiers.
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.
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.
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.
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.
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.
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.
Create the session. Let the user connect. Wait for the signed proof.