Overview
What DoDomain is and how it adds custom-domain support to your SaaS in one flow.
DoDomain adds custom domains for SaaS products — the DNS half of "bring your own domain", done for you. Instead of building DNS instructions, verification polling, and provider quirks into your own product, you drop in DoDomain: your server mints a connect session over REST, your end user finishes DNS setup in a hosted flow (or an embedded widget), and DoDomain verifies the records against the domain's authoritative nameservers and calls your webhook with a signed event. TLS stays at your own host — DoDomain never proxies traffic.
How it works
- Your server creates a session — one
POST /api/v1/sessionscall describing the DNS records your product needs on the customer's domain (for example a CNAME pointing at your edge). - Your user connects the domain — the returned
connectUrlopens a hosted flow that detects the user's DNS provider and picks the best path: on Cloudflare it offers a real one-click apply via OAuth; everywhere else it shows provider-specific, copy-paste instructions with live per-record verification. - DoDomain verifies and tells you — records are checked against the domain's authoritative nameservers, and a signed
connection.verifiedwebhook fires the moment everything matches. - Monitoring keeps it honest, free, on every plan — verified connections are re-checked automatically (every 10 minutes for their first day, then hourly for a week, then every 6 hours); if DNS drifts, the suspicion is confirmed on three consecutive checks, you get a
connection.failedwebhook naming the failing records, and you can trigger a re-verify on demand. There is no "monitored domains" meter and no monitoring add-on: see Webhooks and monitoring.
The pieces
Getting started
Sign in, create an app, mint your first connect session, and receive the webhook.
The connect flow
Hosted page, embeddable widget, provider detection, and the connect tiers.
Webhooks and monitoring
The signature scheme, the four events, and the built-in DNS monitor.
REST API
Every /api/v1 endpoint, authentication, and rate limits.
SDKs
@dodomain/node or dodomain-sdk for your server, @dodomain/connect for your frontend.
AI assistants (MCP)
Connect Claude or any MCP client to DoDomain with one URL.
Guide: multi-tenant Next.js
Host-header routing in proxy.ts, activation from the webhook, where TLS terminates, and the apex answer.
Guides: Rails, Laravel, Django
The same three problems on Rails 8, Laravel 12 and Django 5 — each with the framework's own host trap, a tested webhook verifier, and where TLS terminates on that stack.
DNS provider setup guides
One page per provider — GoDaddy, Namecheap, Cloudflare, Squarespace, Wix, Hover, Porkbun and more — generated from what the connect flow shows customers.
Domain Connect field notes
Two providers end to end and every bug on the way: sig/key order, chunked keys, a provider's exponentiation bug, served-not-proven.
Where things live
- dodomain.io — the marketing site and public docs; dodomain.io/changelog is the dated record of what shipped.
- app.dodomain.io — the dashboard, the hosted connect flow, and the API base URL.
- npm —
@dodomain/node(server SDK) and@dodomain/connect(browser widget), both MIT-licensed with zero runtime dependencies. - PyPI —
dodomain-sdk(Python server SDK, sync and async), MIT-licensed,httpxits only dependency.