Changelog

What shipped

New capabilities in the connect flow and the API, SDK releases, Domain Connect provider proofs, monitoring and pricing changes, dated, in plain language, newest first. Internal refactors are left out on purpose.

  1. Framework guides, per-provider DNS pages, Domain Connect field notes

    • Three new integration guides: Rails, Laravel and Django, each with the framework's own host-header trap, a webhook verifier in that language that is tested against DoDomain's signing, where TLS terminates on that stack, and the apex answer.
    • DNS provider setup guides: one page per provider (GoDaddy, Namecheap, Cloudflare, Squarespace, Wix, Hover, Porkbun, Route 53 and more), generated from the same source the hosted connect flow shows customers, so the two can never disagree. GoDaddy, Namecheap, Squarespace, Wix, Porkbun and Cloudflare vocabulary re-checked against each provider's help pages; Hover added to provider detection and the guides; former Google Domains customers pointed at the Squarespace panel.
    • Domain Connect field notes: the dated account of shipping signed one-click applies end to end on a real provider, and every bug hit on the way, linked from the State of Domain Connect page.
  2. Sign-up funnel, seven comparison pages, this changelog

    • Every "Start free" button on dodomain.io now opens the app on Create your account instead of the sign-in form.
    • New sourced comparison pages: customdomain.ai, Domainee, SaaSKevin and SaaS Custom Domains, each with a dated "facts checked" line and an honest "where they still win" section; the Entri page is rewritten for people looking for an Entri alternative.
    • Free DNS drift monitoring is now stated as what it is (on every plan, never a metered add-on) on the home page and in the docs.
    • @dodomain/node, @dodomain/connect and @dodomain/react describe themselves on npm as custom domains for SaaS with Domain Connect support (README and keywords; no code change).
    • This public changelog.
  3. What DNS actually says, and a real pricing page

    • The connect flow now shows an expected-vs-found diff for every record: the value your customer's authoritative DNS currently returns next to the value the session asked for; and its propagation copy stops promising things DNS cannot promise.
    • White-label attribution: integrators can hide the "powered by" line in the hosted flow.
    • A dedicated pricing page with the quota rules spelled out, and the sitemap derived from the real docs directory so new docs pages can never fall out of it.
    • Nightly Lighthouse budgets over the live public pages, so a page-weight regression is caught even when no pull request touched the page.
  4. Teams, and a drift monitor that confirms before it alerts

    • Multi-team accounts: a user can belong to several teams, switch between them, and every OAuth / MCP grant is pinned to the team it was consented for.
    • Drift monitoring now paces itself by a connection's age: every 10 minutes for its first day, hourly for a week, then every 6 hours; and a suspected break must be confirmed on three consecutive checks before connection.failed fires. Recovery is still noticed on the first healthy check.
    • Secret-key rotation can keep the previous key valid for an overlap window (0, 1 or 24 hours) so a rollout never has a dead minute.
    • A test send for a new webhook endpoint, plus a never-delivered hint, so an endpoint is proven before it matters.
  5. @dodomain/react, a full-surface Node SDK, dashboard rework

    • `@dodomain/react` published: a useDoDomainConnect hook and a drop-in button around the connect widget.
    • `@dodomain/node` 0.3.0 covers the whole v1 API: sessions, connections, apps, domains, webhook endpoints, key rotation, and the webhook verifier. All three npm packages now release from the public mirror over OIDC trusted publishing.
    • The dashboard was rebuilt page by page: a sidebar shell with an app switcher, connections and sessions pages with a connect funnel by tier and provider, webhook endpoint health with a deliveries master-detail view, an overview with a system strip and needs-attention list, URL-backed filters, an onboarding checklist, a command palette (⌘K), a domain preflight inspector, and app detail tabs with an allowed-origins editor.
    • Themed 404 pages with working dark mode on both the marketing site and the app.
  6. Hard caps, background verification, teams with roles

    • Every plan's monthly connection allowance is now a hard cap: creating a session past it returns 402 quota_exceeded, nothing already connected is affected, and there is no overage billing. Subscription state is reconciled against RevenueCat hourly so a dropped webhook cannot leave a team on the wrong plan.
    • Open sessions are verified in the background: if your customer adds the record and closes the window without clicking Verify, the session still completes and you still get connection.verified and session.completed.
    • Multi-user teams with invitations and an enforced role hierarchy (owner / admin / member).
    • REST lifecycle for webhook endpoints and self-service secret-key rotation, all in /api/v1.
    • The published OpenAPI 3.1 description is generated from the same schemas the API validates with, at dodomain.io/docs/openapi.
    • GET /api/v1/connections/:connectionId and a connections namespace in the Node SDK.
    • Apex-domain guidance in the docs: which record types work at the zone root, and which providers offer ALIAS / ANAME / CNAME flattening.
    • The hosted flow stops promising one-click where no connector exists for the user's provider.
  7. Both Domain Connect templates proven on a live provider

    • The custom-subdomain-cname template completed a real signed apply end to end on Glauca HexDNS: the provider wrote the CNAME, DoDomain verified it at the authoritative nameservers, the session verified and session.completed was delivered. With the domain-verification (TXT) template proven on 2026-08-06, both shipped templates have now round-tripped on a real third-party provider.
    • The Domain Connect signature-and-key emission order is chosen per DNS provider, matching what each provider's implementation actually accepts.
  8. Docs at dodomain.io/docs, account deletion, Sign in with Apple, a cleaner webhook body

    • The developer documentation moved to dodomain.io/docs, with search, and every old /guides URL redirects.
    • In-app account deletion and Sign in with Apple.
    • The webhook body is now { id, type, occurredAt, data }; the old event key is still sent as a deprecated alias so existing receivers keep working.
    • The first end-to-end Domain Connect proof on a live provider: the domain-verification template on Glauca HexDNS, every hop real.
    • Verification interrogates the zone that actually owns the record (the nearest zone cut), so delegated subzones verify correctly.
  9. The embedded sheet

    • @dodomain/connect opens as a content-sized sheet that adopts the host page's theme; provider authorization opens in a popup and the sheet auto-verifies when the user returns.
    • The home page's "connection lab" mirrors the real hosted flow instead of a mock-up.
  10. SDKs on npm, and a review sweep

    • `@dodomain/node` and `@dodomain/connect` 0.1.0 published to npm: zero runtime dependencies, dual ESM/CJS, MIT.
    • A domain that stops resolving entirely is reported as domain_not_found rather than as a missing record; the drift monitor never flips a connection on an inconclusive check.
    • Webhook endpoint URLs must be unique per app and are capped per plan; every outbound request to a URL a customer chose is vetted against private address space.
    • Devino Solutions Inc named as the operator in the terms and privacy policy.
  11. List and disconnect connections, honest failure reasons

    • GET /api/v1/connections (paged) and DELETE /api/v1/connections/:connectionId: disconnecting stops monitoring for good.
    • The two 429s are told apart (rate_limited per app vs per IP), and connection.failed says whether it is about one connect attempt or a live connection that regressed.
    • Re-verifying a session that already finalized meters usage and emits session.completed exactly once.
    • The tier-1 (Cloudflare OAuth) apply can add a TXT record beside existing SPF or site-verification records at the apex instead of refusing.
    • Domain Chief became the first DNS provider to enable DoDomain's Domain Connect templates (2026-07-28); a nightly watch now opens an issue the moment another provider does.
  12. Templates merged into the public Domain Connect registry

    • Both DoDomain templates (domain-verification and custom-subdomain-cname) were merged upstream, and DoDomain's public signing key is published as a chunked TXT record at _dck1.dckeys.dodomain.io per the registry's guidance.
  13. Domain Connect (tier 2) switched on in production

    • Signed one-click applies are live for any DNS provider that enables DoDomain's templates; where a provider has not, the flow degrades to guided records with the same authoritative verification.
  14. The connect flow, provider guides, and the platform underneath

    • The hosted connect flow was rebuilt with live per-record verification, and 17 provider-specific DNS guides with nameserver detection (Cloudflare, GoDaddy, Namecheap, Squarespace, Route 53, DigitalOcean, DNSimple, Gandi, IONOS, Name.com, NameSilo, Porkbun, Vercel, Wix, WordPress.com and more).
    • Public developer docs, llms.txt and a sitemap; a public POST /api/v1/domains/check pre-flight and on-demand connection re-verify.
    • Dashboard: webhook delivery log with redrive, key rotation, HTTPS-only endpoint validation, a quickstart, usage banners and health badges.
    • All four webhook events (connection.verified, connection.failed, session.completed, session.abandoned) with retries and a dead-letter queue, delivered by a standalone worker; plan-based rate limiting.
    • The Graphite & Pine design system across the app, the marketing site and the widget.
  15. One deployment unit

    • Production moved to a single compose-defined stack (web, worker, database, landing) built from the same file that runs locally and in CI.

Start on the free plan

No card, no sales call: create an app, mint a session, and watch the first domain verify.