Cloudflare for SaaS Custom Hostnames: The Real 2026 Pricing

Cloudflare for SaaS includes 100 custom hostnames on the Free, Pro and Business plans, then bills $0.10 per hostname per month up to a 50,000 ceiling. That's the whole published price. The features most platforms actually reach for, apex domains, wildcards and custom certificates, are Enterprise only, so the real number is a sales call.
I went through Cloudflare's own docs and API on 31 August 2026 to work out what the metered price covers and what it quietly doesn't. Three things surprised me: hostnames that never finish validating still bill, there's a hard cap on non-Enterprise plans you can only see through the API, and apex support carries a second unpublished cost on top of Enterprise.
This is the pricing companion to our Cloudflare for SaaS setup walkthrough, which covers the configuration side.
The published price, in full
From Cloudflare's Cloudflare for SaaS plans page, last updated 14 August 2026:
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Hostnames included | 100 | 100 | 100 | Custom |
| Max hostnames | 50,000 | 50,000 | 50,000 | Unlimited (contact sales above 50,000) |
| Price per additional hostname | $0.10 | $0.10 | $0.10 | Custom |
The interesting part is that the three self-serve tiers are identical on price and volume. Moving from Free to Business buys you zero extra hostnames and zero discount. What it buys is features, and that's where the pricing question actually lives.
What $0.10 a hostname doesn't buy
Here's the same plans table, filtered to the rows that say No on every self-serve tier:
| Capability | Free | Pro | Business | Enterprise |
|---|---|---|---|---|
| Custom certificates | No | No | No | Yes |
| CSR support | No | No | No | Yes |
| Selectable CA | No | No | No | Yes |
| Wildcard custom hostnames | No | No | No | Yes |
| mTLS support | No | No | No | Yes |
| SNI rewrite for custom origin | No | No | No | Contact account team |
| Apex proxying / BYOIP | No | No | No | Paid add-on |
| Custom metadata | No | No | No | Paid add-on |
Non-SNI support is the one row that moves inside the self-serve tiers: No on Free, Yes on Pro and Business. Everything else in that list is a cliff, not a ramp.
So the honest reading of $0.10 is this. It covers a customer pointing a CNAME from a subdomain like app.customer.com at your zone, with a Cloudflare-issued certificate, routed to a fallback origin. That's a real and useful product. It's also the simplest case, and it's the only case the published price covers.
Apex domains aren't in the sticker price
This is the one that changes budgets. If your customers want customer.com and not app.customer.com, you need apex proxying, and Cloudflare's own apex proxying doc (last updated 10 June 2026) describes the cost in a parenthetical:
Cloudflare assigns a set of Static IP prefixes - cost associated, reach out to your account team - to your account (or uses your own if you have BYOIP).
Two unpublished prices stacked on each other. Apex proxying is Enterprise, Enterprise has no public price, and the static IP prefixes it depends on carry their own cost that also has no public price.
The underlying constraint isn't Cloudflare's fault. A CNAME cannot exist at a zone apex, because RFC 1034 forbids other data at a name holding a CNAME and the apex is required to carry SOA and NS records. We measured this directly for the apex domain glossary entry: ten major apexes, including four sitting behind Cloudflare, all return A records and none return a CNAME. Every provider solves it the same way, by putting an IP in front. The pricing question is only whether that IP is included or quoted.
Don't assume a wildcard rescues you. Wildcard custom hostnames are also Enterprise, and a wildcard doesn't cover the apex anyway, since *.customer.com matches exactly one label and the apex has zero. The wildcard SSL certificate entry has the certificates we pulled off production hosts to confirm that.
Pending hostnames bill
This is the line I'd put on a sticky note. From Cloudflare's quotas and billing doc, last updated 30 July 2026:
Each custom hostname counts toward usage until you delete it. This includes hostnames that are pending validation or activation. Deleting an unused custom hostname removes it from the usage count.
Read that against a normal self-serve funnel. A customer starts onboarding, you call the API to create the custom hostname, you show them the CNAME to add, and they close the tab. The hostname never validates. It never serves a byte. But it bills $0.10 a month, forever, until something deletes it.
Nothing in the product does that for you. The cost is small per record and completely invisible in aggregate, which is exactly the combination that lets it pile up. A B2B product with a 30 percent onboarding completion rate is paying for roughly two abandoned hostnames for every live one, and the gap widens every month because the live ones churn and the abandoned ones never will.
The fix is a scheduled sweep: list custom hostnames, filter to ones still pending past whatever window you consider dead, and delete them. Build it before you need it, not after you notice the line item, because by then you're paying for a year of accumulated dead records.
The hard cap you can only see through the API
Cloudflare runs two separate limits on custom hostnames and only one of them behaves the way you'd guess.
The soft quota is what your plan includes. Reaching it doesn't stop anything. Per the docs, "the assigned quota is a soft limit. When usage reaches this limit, you can continue creating custom hostnames," and the create response starts including a billing warning. So you slide past 100 hostnames into metered territory, and the only signal is a warning field inside an API response body that most client code never reads.
The enforcement threshold is the real wall, and it applies to non-Enterprise plans only: "After usage reaches this threshold, the API rejects requests to create custom hostnames. Enterprise plans can continue to create custom hostnames after reaching this threshold."
So on Free, Pro or Business, customer onboarding starts returning errors at a number nobody ever showed you in the dashboard. Both values are readable, but only through the quota endpoint:
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames/quota" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
That returns allocated (the soft quota), used, exceeded, and hard_cap (the enforcement threshold). If you run custom hostnames on a self-serve plan, put used against hard_cap on a dashboard. That's the difference between finding out at 3pm on a Tuesday and hearing it from a customer.
One measured detail for whoever writes the client. Calling either the quota endpoint or the create-custom-hostname endpoint without credentials returns HTTP 400, not 401:
{"success":false,"errors":[{"code":9106,"message":"Missing X-Auth-Key, X-Auth-Email or Authorization headers"}]}
Both verified against the live API on 31 August 2026. This matches what we found probing eight providers for the DNS API entry: Cloudflare reports auth problems in terms of the legacy global-key headers and uses status codes loosely. Retry logic that retries 5xx and fails fast on 4xx will treat a broken token exactly like a permanently invalid request, which is fine, and Route 53's throttling responses the same way, which isn't. Parse the error code, not the status.
The zone plan is a separate line
Custom hostname metering sits on top of a zone plan, so the monthly total is zone plan plus metered hostnames plus any add-ons.
Cloudflare's per-zone plan prices are $25 a month for Pro and $250 a month for Business, or $240 and $2,400 paid annually, set in the pricing change Cloudflare announced effective 15 January 2023. Worth flagging honestly: when we fetched cloudflare.com/plans/ and the individual Pro and Business plan pages on 31 August 2026, none of them returned those figures in server-rendered HTML. The top-level pricing page now presents usage-based pricing per service. So the numbers above come from Cloudflare's own announcement rather than from a price currently rendered on a plan page, so confirm them in your dashboard before you budget.
What it actually costs at three scales
Zone plan plus $0.10 per hostname above the first 100. Domainee for comparison, with its graduated per-domain rate:
| Customer domains | Cloudflare (Pro zone) | Cloudflare (Business zone) | Domainee |
|---|---|---|---|
| 500 | $65 | $290 | $90 |
| 5,000 | $515 | $740 | $890 |
| 50,000 | $5,015 | $5,240 | $5,540 |
Cloudflare's sticker is cheaper at every one of those scales, and I am not going to pretend otherwise. Per hostname, $0.10 flat is a good price, and Cloudflare doesn't meter your bandwidth on these plans, which at 50,000 domains is worth real money.
The comparison only shifts when you put the Enterprise gate back in. Every row above assumes subdomains, Cloudflare-issued certificates, no wildcards and no custom CA. Add apex domains, which is the single most common request from customers who want their brand on the URL, and the Cloudflare column stops being a number. It turns into an Enterprise contract plus a static IP allocation, both quoted rather than published. That isn't necessarily more expensive. It's unknowable in advance, which is a different problem, and a worse one when you are the person who has to put a gross margin in a board deck.
The second gap is scope. Cloudflare for SaaS terminates TLS and routes traffic. It doesn't register domains, so if you want customers to buy a domain inside your product you are integrating a registrar API separately. We covered that side in the buy-a-domain API comparison and in the guide to selling domains in your app.
Domainee is a custom domains API for SaaS with a native MCP server, 50 domains and 100 GB free. I build it, so weigh that as you read this section. Every number in the Domainee column is published on the pricing page and you can rerun the math yourself with the custom domain cost calculator. Apex domains, certificate issuance and renewal, and domain registration are all in the published rate rather than behind a quote. The side-by-side comparison goes feature by feature.
When Cloudflare for SaaS is still the right call
It genuinely often is, and the pricing supports it:
- Your zone, WAF and DNS already live on Cloudflare, so custom hostnames extend infrastructure you run instead of adding a vendor.
- Subdomains are enough for your customers. If
app.customer.comkeeps them happy you never touch the Enterprise gate, and $0.10 flat is hard to beat. - Bandwidth is your dominant cost. Cloudflare doesn't meter it on the self-serve plans, which beats anyone billing per GB.
- You already have an Enterprise contract, so apex, wildcards and custom certificates are a call with your account team rather than a fresh procurement cycle.
The case against is narrower than people assume. It isn't that $0.10 is expensive. It's that $0.10 prices ONE specific configuration, and the configuration most SaaS platforms grow into is priced somewhere else entirely.
For the underlying mechanics of how any of this terminates TLS, see how SSL works for custom domains, the SNI entry for why one IP can serve thousands of certificates, and HTTP 525 for the error you'll meet if the origin handshake is misconfigured. If you're building the platform side, the custom domains as a service entry covers the category and best custom domain APIs compares the field.
FAQ
How much does Cloudflare for SaaS cost?
The Free, Pro and Business plans each include 100 custom hostnames, then charge $0.10 per hostname per month up to 50,000. Enterprise pricing is custom. That metered rate sits on top of your zone plan, so budget zone plan plus $0.10 per hostname above the first 100.
Are the 100 included custom hostnames really free on the Free plan?
Yes. Cloudflare's plans page lists 100 included hostnames identically on Free, Pro and Business. The self-serve tiers differ on features, not on hostname volume or price.
Does Cloudflare for SaaS support apex domains?
Only through apex proxying, which is Enterprise only. It also depends on static IP prefixes that Cloudflare's own documentation describes as having an associated cost you have to ask your account team about. If your customers need customer.com rather than app.customer.com, the published $0.10 rate doesn't apply to you.
Do custom hostnames that never validate still cost money?
Yes, and this catches people out. Cloudflare's billing documentation states that each custom hostname counts toward usage until you delete it, explicitly including hostnames pending validation or activation. Abandoned onboarding accumulates billable records until you sweep them.
Why is the API rejecting new custom hostnames when I am under my quota?
You're probably past the enforcement threshold rather than the soft quota. They're two different numbers. The soft quota only triggers a billing warning, while the enforcement threshold makes the API reject creates on non-Enterprise plans. Check both with GET /zones/{zone_id}/custom_hostnames/quota, which returns allocated, used, exceeded and hard_cap.
Is Cloudflare for SaaS cheaper than a dedicated custom domains API?
On the published per-hostname rate, yes, at every scale we modelled. The comparison changes when you need apex domains, wildcards, custom certificates or domain registration, because those are either Enterprise-gated or out of scope, and Enterprise pricing isn't published. Compare the configuration you'll be running in a year, not the one you're running this week.