Compare

DoDomain with Approximated

Approximated is a proxy for your customers' custom domains: dedicated clusters, a dedicated IP address, certificates handled for you, and framework-specific integration docs (per approximated.app, retrieved 2026-10-06). It also now ships a DNS widget that detects the customer's provider and walks them through the records, which puts it closer to DoDomain than it used to be. DoDomain still is not another proxy. It is the half that happens first, and this page says plainly where the two overlap and where they do not.

Facts about Approximated checked on against approximated.app pricing, DNS widget docs, webhook docs and homepage — check their site for current figures. DoDomain's numbers come from its live plan definitions. Published , updated .

Who does which half

DoDomainApproximated
Gets the customer's DNS records createdYes — Cloudflare OAuth one-click, Domain Connect where the provider has enabled it, guided per-provider steps everywhere elsePartly — a DNS widget detects the provider, offers automatic setup where a supported provider integration exists (Domain Connect is the kind its docs name), and shows step-by-step records otherwise (per approximated.app, retrieved 2026-10-06)
Proves the records are liveYes — queried at the domain's authoritative nameservers, not a UI checkboxThe widget checks for an exact match on each queried name; its docs say your backend should still check routing and HTTPS. They do not say which resolver is asked
Terminates TLS on the customer's hostnameNo, by design — traffic never touches DoDomainYes — dedicated proxy clusters and certificates are the product (per approximated.app, retrieved 2026-10-06)
Watches for DNS drift after go-liveYes, with signed events naming the failing records — on every plan, including FreeYes, in its own terms — it says it always monitors SSL and DNS resolution, and a monitor webhook fires on status changes
Entry price$0 forever — 50 verified connections/mo, no card$20/month minimum, $0.20 per domain above it, 7-day trial (per approximated.app, retrieved 2026-10-06)
Metered byVerified connections per month — a connection counts once, on its first verificationDomains proxied, plus bandwidth above 400 GB (per approximated.app, retrieved 2026-10-06)

The two meters are not substitutes: one counts the onboarding events you want to succeed, the other counts the hostnames you are serving. A product doing both pays for both, and neither replaces the other.

What Approximated's DNS widget does, and where DoDomain differs

Per Approximated's DNS widget docs, the widget detects the customer's DNS provider, shows steps written for that provider, and then verifies the result. It can be embedded as plain JavaScript and CSS with no iframe, run headless as JSON, and there are React and Vue starters. It handles A, CNAME and TXT records, up to 25 records in one request. Where a supported provider integration exists it offers an automatic setup option, and Domain Connect is the only automation kind the docs describe. The widget returns complete, partial or failed.

That is a real answer to the question this page used to say Approximated did not address, and a team already on Approximated should try it before adding a vendor. We make no claim about which providers get automatic setup: the docs do not list them, and the Cloudflare screen on their homepage is labelled illustrative.

Where DoDomain is different, stated only from our own docs:

  • A Cloudflare path that is not Domain Connect. For a Cloudflare-hosted zone the customer approves a scoped OAuth grant and DoDomain writes the records. That is the one-click on Pro and above.
  • A session carries a records array of A, AAAA, CNAME, TXT or MX records, so a verification TXT and a routing record can be asked for together.
  • Proof is read at the domain's authoritative nameservers before your server is told.
  • The result arrives as an HMAC-signed, retried webhook with a dead-letter queue, and verifyWebhook ships in @dodomain/node. Approximated's webhooks authenticate with a shared webhook-key header instead, which is a simpler contract and a weaker one.
  • The same session is reachable from the REST API, an OpenAPI 3.1 document, four SDKs and an MCP server with eight tools over OAuth 2.1, so the onboarding step can be driven by an AI assistant as well as a page.

None of that makes the widget a poor product. If your customers use a handful of providers and Domain Connect covers most of them, the gap is small. The State of Domain Connect page measures how many providers support one-click, which is the number that decides it.

What Approximated costs at your volume

Approximated bills per custom domain, every month, for as long as the domain is proxied. Per its pricing page the rate is $0.20 a domain with a $20 monthly minimum, and the discount grows by 5 percentage points for each full 1,000 domains, capped at 50% and applied to the whole bill. Their own worked examples are $190 for 1,000 domains and $1,000 for 10,000. Bandwidth beyond the 400 GB included each month is $0.05 per GB.

DoDomain meters a different thing. A connection counts once, in the month it first verifies. Re-checks and drift monitoring are free and uncapped, so a domain that has been live for a year adds nothing to the bill. The table prices three scenarios on each side's own meter: new domains per month for DoDomain, domains live at once for Approximated.

ScenarioNew domains a monthDomains liveDoDomainApproximated
Launching20100Free — $0 forever$20
Growing3002,000Pro — $29 per month$360
Established2,00020,000Scale — $99 per month$2,000

List prices, monthly billing. DoDomain counts a domain once, in the month it first verifies; re-checks and drift monitoring are free on every plan, so live domains add nothing. One-click setup starts on Pro — a cheaper plan above is the guided-records flow. Approximated's column is the cloud plan's custom-domain line only, from its published rate and volume discount. It leaves out bandwidth above 400 GB, and it does not price the Hybrid Self Hosted plan ($199 a month plus $0.10 per virtual host per month) or Full Self Hosted (starting at $4,999 a month). Their self-hosted page says there is no bandwidth charge on self-hosted instances. The DNS widget has no separate price on that page, and we cannot say from it whether the widget is included.

Read it as two bills that do not overlap. The proxy bill grows with the size of your customer base. The DoDomain bill grows with how fast you add customers. A product that adds domains slowly and keeps them for years pays Approximated far more than it pays DoDomain; a product that onboards in bursts and proxies little pays the other way round. See pricing for what each plan includes.

What the DoDomain side looks like in code

On this page DoDomain gets the record into the customer's DNS and proves it, and Approximated serves the traffic. So the record in the session points at Approximated's edge: per its docs, an A record at your cluster's IPv4 address, or a CNAME through an intermediary domain or subdomain you control. The cluster address is per account, so the sample uses a placeholder.

Create the virtual host in Approximated first, then mint the session with the same record. The three calls below are the whole DoDomain side. Approximated ignores a record pointed at your cluster without a matching virtual host, so order matters.

// 1. Your server: mint a connect session for the customer's domain.
import { DoDomain, verifyWebhook } from "@dodomain/node";
import { env } from "./env"; // your validated server env

const dodomain = new DoDomain({ secretKey: env.DODOMAIN_SECRET_KEY });
const session = await dodomain.sessions.create({
  domain: "customer.com",
  records: [
    { type: "A", host: "app", value: "<your Approximated cluster's dedicated IPv4 address>" },
  ],
  returnUrl: "https://yourapp.com/settings/domains",
});

// 2. Your page: open the connect sheet with session.token.
import { showDoDomain } from "@dodomain/connect";

showDoDomain({ token, onVerified: ({ domain }) => markDomainLive(domain) });

// 3. Your webhook route: DoDomain calls it once the record is live at the
//    domain's authoritative nameservers, and again if it ever breaks.
if (!verifyWebhook(env.DODOMAIN_WEBHOOK_SECRET, rawBody, signatureHeader)) {
  return new Response("bad signature", { status: 400 });
}

From Pro up, the session picks the path on its own: a Cloudflare-hosted domain gets the OAuth one-click, a provider that has enabled DoDomain's Domain Connect templates gets a signed apply, and every other provider gets step-by-step records for that provider's dashboard. On the free plan every provider gets the step-by-step records. The full walkthrough is in the quickstart.

Wiring them together

Register the customer domain with Approximated exactly as you do today. Take the record values it tells you the customer must create, and pass those same records to POST /api/v1/sessions. Hand your user the returned connectUrl — a hosted page, or the @dodomain/connect widget embedded in your own onboarding, or the @dodomain/react hook around it.

Your customer gets a path instead of a record to copy: a scoped OAuth approval on Cloudflare's own page when their domain is there, a signed Domain Connect apply where their provider has enabled our templates, and otherwise their provider's dashboard link with its host-field quirks and a live status per record.

When the signed connection.verified webhook lands, the records are confirmed at the domain's authoritative nameservers — activate the tenant. Nothing about your proxy configuration changes. You can also keep Approximated's widget for the customers it serves well and send the rest through DoDomain, because the two share no state.

What each side keeps doing afterwards

A green check is not the last time anyone should look. Approximated says it is always monitoring SSL status, DNS resolution and proxy hit status for every domain, and its Virtual Host Monitor Updated webhook carries fields such as dns_details, wrong_ips and a changes field with old and new values. That is monitoring of the proxied hostname from the proxy's side.

DoDomain re-checks every verified connection against authoritative DNS — every 10 minutes for its first day, then hourly for a week, then every 6 hours — and confirms suspected drift on three consecutive checks before alerting you. When a customer edits or deletes the record months later, connection.failed arrives naming the exact failing records; when they put it back, connection.verified fires with a recovery signal. That is on every plan, Free included.

Running both is not redundant: one tells you what the proxy sees, the other tells you which record the customer changed. You would pick one signal per workflow and wire the other as a second opinion.

How to choose

Pick by who your customers are and what you already run, not by feature count.

  • You do not have a proxy yet and want one vendor for traffic and basic DNS guidance: Approximated alone is a coherent choice. Start with its widget and add DoDomain only if the DNS step is still where customers stall.
  • You already run Approximated and customers drop off at the DNS step: add DoDomain for the Cloudflare one-click path, the five record types and the authoritative proof. Your proxy setup does not change.
  • You self-host Approximated (hybrid or full): DoDomain works the same, because it needs the record value and never access to your edge.
  • Your customers are technical and on one or two providers: a clear instructions page and Approximated's own checks may be all you need. Do not add a vendor for a problem you do not have.

Moving the other way is as light. If you leave Approximated, you change the record values in your session payload and DoDomain guides the same customers through the new ones.

Where Approximated still wins

Start with the obvious one: it serves traffic and manages certificates, which DoDomain never will. Per its own pages that comes with a dedicated cluster, a dedicated IPv4 address, WAF and DDoS protection, and edge rules, across 18 published proxy regions. If your problem is getting HTTPS in front of customer hostnames, DoDomain does not solve it.

It also has a published self-hosted path with prices: hybrid at $199 a month plus $0.10 per virtual host, and full from $4,999 a month with custom SLAs available. DoDomain has nothing to host, so there is no comparable option.

The DNS widget bundles provider detection, provider-labelled instructions, Domain Connect automation where supported, exact-match verification, a headless mode and framework starters into the same account as the proxy. One vendor, one invoice, one webhook family. A smaller team can reasonably decide that is worth more than DoDomain's extra paths.

Its monitoring and webhooks are included in the product you already pay for. It publishes a machine-readable facts file, an OpenAPI file and a DPA with EU standard contractual clauses, which makes procurement and AI-assisted evaluation easier. Its API contract is open and its limits are published.

When you don't need DoDomain here

Honest flip side. If your customers are technical and their domains are concentrated on one or two providers, a well-written instructions page plus Approximated's own widget and resolution checks may be all you need. If you onboard a handful of customers a year, an engineer on a call is cheaper than any vendor. And DoDomain is genuinely useless for the traffic half: it issues no certificates, serves no requests, and offers no origin routing — that is what a proxy is for, and Approximated is one.

Where it earns its place is self-serve onboarding across many registrars, a Cloudflare path that does not depend on Domain Connect, and the long tail after go-live.

Frequently asked questions

Is DoDomain an alternative to Approximated?

Not for the traffic half. Approximated runs the proxy: it terminates TLS on your customer's hostname, manages the certificate, and forwards the request to your app. DoDomain never sits in the request path, so it cannot replace a proxy. For the DNS step the two now overlap, because Approximated ships a DNS widget with provider detection and step-by-step instructions. DoDomain is the dedicated version of that step: three connect paths from one session, proof read at the authoritative nameservers, and monitoring after go-live on every plan.

How much does Approximated cost?

Per approximated.app/pricing, retrieved 2026-10-06: $0.20 per custom domain per month with a $20 monthly minimum under 100 domains. The rate steps down by 5 percentage points for each full 1,000 domains, capped at 50%. That works out to $190 a month at 1,000 domains and $1,000 at 10,000, before bandwidth. Self-hosted plans are priced separately. Check their pricing page for current figures.

Is Approximated free?

There is no free plan. Approximated's homepage offers a free 7-day trial, and its pricing page starts at a monthly minimum. DoDomain's side of the pairing has a permanent free plan, so a team can test the DNS-onboarding half without paying for either product until real customers arrive.

Does Approximated write DNS records for my customers?

Partly. Its DNS widget detects the customer's DNS provider and, per its docs, offers an automatic setup option where a supported provider integration is available. The only automation kind the docs name is Domain Connect. Where no integration exists, the widget shows provider-specific steps and the customer publishes the records. Approximated's product page still says you or your users publish the DNS records that point each domain at the proxy cluster.

Does Approximated support apex domains?

Yes, with an A record. Approximated's docs say A records are the only broadly supported record type that can point an apex domain, so the customer points the apex at your cluster's IPv4 address. A CNAME cannot exist at a zone apex, which is DNS's rule and applies to every vendor. DoDomain guides and verifies A, AAAA, TXT and MX records at the apex on every plan.

Does Approximated monitor my customers' domains after setup?

Yes. Per its homepage, Approximated is always monitoring SSL status, DNS resolution and proxy hit status for every domain, and a Virtual Host Monitor Updated webhook fires when that monitoring detects a change, with statuses such as DNS_INCORRECT. We did not find a published check interval. DoDomain's monitor is a separate, narrower thing: it re-reads the records at the authoritative nameservers on a published schedule and names the failing records in a signed event.

Can I use DoDomain with Approximated?

Yes, and nothing about your Approximated setup changes. Register the customer domain with Approximated as you already do, take the record the customer must create (your cluster's IPv4 address, or a CNAME through an intermediary domain), and pass it to POST /api/v1/sessions. Send the customer the returned connectUrl or embed the @dodomain/connect widget, and activate the tenant when the signed connection.verified webhook arrives.

Why use both instead of just Approximated's DNS widget?

If your customers sit on a few providers and you are happy with Domain Connect where it exists plus instructions elsewhere, the widget may be enough. DoDomain adds a Cloudflare OAuth one-click path for Cloudflare-hosted zones, five record types in one session, authoritative-nameserver proof, and drift monitoring that is free on every plan, Free included. The cost is a second vendor and a second webhook to handle.

Does Approximated offer a self-hosted version?

Yes, as two published plans per approximated.app/pricing: Hybrid Self Hosted at $199 a month plus $0.10 per virtual host per month, and Full Self Hosted starting at $4,999 a month. DoDomain pairs with either, because it only needs the record value your customers must create and never touches your edge.

What does DoDomain add after the domain is live?

Monitoring, on every plan including Free at $0 forever. DoDomain re-checks every verified connection against authoritative DNS every 10 minutes for the first day, then hourly for a week, then every 6 hours. Drift is confirmed on three consecutive checks before a signed connection.failed webhook names the failing records, and connection.verified fires again when the records return.

Does DoDomain lock me into a vendor?

It cannot: it is never in the request path. DoDomain writes and verifies DNS that points at whatever infrastructure you name, so the records your customers create belong to your architecture, not ours. If you move off Approximated, you change the record values in your session payload and DoDomain guides the same customers through the new ones.

Start on the free plan

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

Other comparisons