Cloudflare for SaaS — Full Curriculum

Personal study reference, not customer-facing. Covers how multi-tenant platforms serve customer-owned domains through Cloudflare's edge — Custom Hostnames, Fallback Origin, cert lifecycle, apex domain handling, Orange-to-Orange, and Enterprise-gated features. Includes major corrections: "SSL for SaaS Advanced" is not a real current product name, and "Custom Fallback Origin per hostname" was misclassified as an Enterprise feature — it's actually free on every plan including Free. Every fact below is sourced from live Cloudflare docs (full list at the bottom).

Naming note: "Cloudflare for SaaS" is the current name. "SSL for SaaS" is the old name for the same product (renamed years ago, not part of this session's recent 2026 rename wave) — you'll still see "SSL for SaaS" in the certificate-type label and Terms of Service. There is no current product named "SSL for SaaS Advanced" — that's informal/legacy shorthand. Gating is purely by account plan (Free/Pro/Business/Enterprise) plus two explicit Enterprise-only paid add-ons (Module 6).

Module 1Fundamentals — Flow A vs. Flow B

There are two distinct ways traffic flows through Cloudflare to a backend, and the difference is the entire reason Cloudflare for SaaS exists.

Flow A — a domain you own

Regular Workers/Routes behavior, no Cloudflare for SaaS involved. The domain lives in your own Cloudflare account, you bind a Worker or route directly to it, the edge routes traffic to your backend. Use case: your own marketing site, your own customer dashboard — domains you control, on any Cloudflare plan.

Flow B — a domain your customer owns

"Let's say your customer is Acme Coffee and they bought acmecoffee.com years ago. They sign up for your hosting service and want their site running on your infrastructure, but showing up as acmecoffee.com — not acmecoffee.yourplatform.com. Their domain stays their domain. They never create a Cloudflare account, never even know Cloudflare is in the picture."

  1. Visitor types acmecoffee.com — request hits Cloudflare's edge.
  2. Edge checks: is there an Active Custom Hostname for this domain on your SaaS zone, with a valid SSL cert? If yes, continue.
  3. Edge needs a backend — looks up the Fallback Origin configured once on the SaaS zone.
  4. Request routes to your platform's backend, original Host header preserved, so your code knows which customer this is for.

The Fallback Origin is the part that makes this scale: configured once, every new customer's Custom Hostname automatically uses it — no per-customer routing config. Customer signs up, your code tells Cloudflare "add acmecoffee.com," Cloudflare handles cert issuance and validation, traffic starts flowing automatically.

Side by side

AspectFlow A (domain you own)Flow B (customer's domain)
Who owns the domainYou (the platform)Your customer
In your Cloudflare account?Yes, your zoneNo — their zone or registered elsewhere
Routing mechanismDirect Worker/Route on the hostnameCustom Hostname → Fallback Origin → your backend
SSL certificateYour zone's Universal SSLDedicated cert auto-issued per customer domain
Per-customer configEach hostname is its own routeOne API call, no routing config
Cloudflare productWorkers (any plan)Cloudflare for SaaS (Free and above)

Why not just use a wildcard certificate?

A wildcard covers *.yourplatform.com — it does nothing for a customer's own domain, which would show a browser security warning. Customers bringing their own certificate is a support nightmare (CSR generation, annual renewal, breakage when they forget). Cloudflare for SaaS gives each customer domain its own dedicated, auto-renewing certificate — the customer adds one CNAME, you add one hostname, Cloudflare handles the rest.

Module 2Custom Hostname lifecycle & validation

Status states — more granular than "Pending → Active"

StatusMeaning
PendingPending hostname validation
ActiveCompleted hostname validation
Active re-deployingActive, changes currently being processed
BlockedAbuse-flagged, cannot be added
MovedNot active after the full backoff schedule, or no longer points to the fallback
DeletedOccurs after remaining in Moved status for 7+ days

Hostname ownership validation and certificate validation are tracked as two separate fields (result.status vs. result.ssl.status) — they can be in different states at the same time.

Validation methods — not all are zero-touch for the customer

Hostname ownership validation: TXT record, HTTP token, or CNAME (real-time). Certificate DCV: http, txt, or email, plus Delegated DCV for auto-renewal.

Correction to "zero manual steps": that's only true for real-time CNAME-based validation. TXT validation requires the customer to add a DNS record; HTTP validation requires serving a token file at their origin. Only CNAME/real-time validation requires zero extra customer action — at the cost of a brief downtime window during cutover.

Certificate authorities — three, not two

The "SSL for SaaS" certificate type is issued via Let's Encrypt, Google Trust Services, or SSL.com. Selecting a specific CA is an Enterprise-only capability; other plans get Cloudflare's default CA auto-assignment (checked against the domain's CAA records).

Module 3Fallback Origin & Custom Origin Server

Fallback Origin

One zone-wide default backend, configured once at Dashboard → SSL/TLS → Custom Hostnames → Fallback Origin. All Custom Hostnames on that zone route here unless overridden per-hostname (see below). The original Host header is preserved by default, so your backend can tell which customer a request is for.

Custom Origin Server — a major correction

This is not an Enterprise/"Advanced" feature. Per-hostname custom origin overrides — letting different customers route to different backends instead of all sharing one zone-wide Fallback Origin — is called Custom Origin Server, and as of May 2025 it is available on every plan including Free (previously Enterprise-only). If you've seen this described as a Business/Enterprise-gated or "Advanced" capability, that's outdated.

This matters for sharding customer traffic across multiple backend regions or environments — you no longer need Enterprise just to do that.

Module 4Apex domains

The apex of a domain is the bare domain itself (e.g. customerbrand.com, no www). DNS has a real quirk here: you can CNAME a subdomain, but the apex traditionally requires an A/AAAA record pointing at a specific IP.

Two paths — corrected terminology and gating

MethodRequirementCost
CNAME flatteningCustomer's domain must be on Cloudflare DNSFree, automatic — Cloudflare flattens the apex CNAME behind the scenes
Apex Proxying (current correct name — not "Dedicated IP for Apex Proxying")For customers NOT on Cloudflare DNSEnterprise-only paid add-on — not available to Pro/Business even as an upgrade; no public price, contact account team

A second Enterprise-only mechanism, BYOIP (bring your own IP range), is listed alongside Apex Proxying as the two ways to support apex domains without Cloudflare-DNS CNAME flattening. No newer third option exists as of this writing.

The common field workaround

Many platforms steer customers to use www.customerbrand.com as the canonical hostname with an apex-to-www redirect at the customer's registrar, avoiding the Apex Proxying cost entirely — a pattern used by several large hosting platforms. Customers who insist on real apex support are usually larger brands focused on marketing optics; smaller customers typically don't push back on www-only.

Pocket answer: "The apex is the bare version of a domain, no www. DNS has a quirk where you can't CNAME the apex the way you can a subdomain — it needs an IP address. If your customer isn't on Cloudflare DNS and wants their bare domain to work, that requires a dedicated IP through Apex Proxying, which is an Enterprise add-on. Most platforms steer customers to www instead to skip the issue entirely."

Module 5Orange-to-Orange (O2O)

A customer who already has their own Cloudflare account is not a blocker — it's a real, named, documented, supported configuration.

O2O is officially supported. It's the specific routing configuration where traffic passes through two Cloudflare zones in two different accounts: the customer's own zone first, then the SaaS provider's zone. Settings on the customer's zone apply first, then settings on the SaaS provider's zone apply second. Cloudflare sets an HTTP header, cf-connecting-o2o: 1, to signal this. Multiple SaaS providers can even hold an active Custom Hostname for the same domain simultaneously — routing is determined purely by where the customer's DNS CNAME currently points.

The real gotcha — narrower than "conflict"

Pre-validation (TXT and HTTP token methods) is not supported for O2O hostnames — only real-time (CNAME-based) validation works, since there's no non-Cloudflare→Cloudflare cutover step to pre-validate against. If a migrating customer is already on Cloudflare, plan for real-time validation, not pre-validation.

Module 6Enterprise-gated features

No "Advanced" tier exists by name — these are discrete Enterprise-gated capabilities, some bundled, some separately priced add-ons.

FeatureGating
Custom MetadataEnterprise-only paid add-on
Wildcard Custom Hostnames (e.g. *.customerdomain.com as one entry)Enterprise — bundled into the plan, not a separately listed add-on
Apex Proxying / BYOIPEnterprise-only paid add-on (Module 4)
Selectable CA, custom (uploaded) certificates + CSR support, mTLS enforcement, SNI Rewrite for custom origin, custom WAF rulesetsEnterprise-only
Custom Origin Server (per-hostname backend override)All plans including Free (Module 3 — commonly mis-stated as Enterprise-only)

Custom Metadata — what it's actually for

Lets you attach metadata to each Custom Hostname (customer tier, plan, internal IDs, region) that's readable at the edge via cf.hostname.metadata — used for tiered routing, plan-based feature gating, or differentiated security policy per customer (Module 7).

New use case as of October 2026: Custom Metadata is now also the mechanism for enabling Markdown for Agents on a per-custom-hostname basis — letting individual tenant sites opt into agent-friendly Markdown responses without affecting the whole SaaS zone.

Module 7Security on Custom Hostnames

Zone-level security config applies to every Custom Hostname by default. Per-customer differentiation requires Custom Metadata.

Configure WAF, Bot Management, or Rate Limiting once at the zone level and every Custom Hostname inherits it automatically — no per-customer setup needed for a single, uniform policy. For tiered protection (e.g. premium customers get stricter bot rules than free-tier customers), use Custom Metadata to tag hostnames and reference that tag in Ruleset Engine expressions:

lookup_json_string(cf.hostname.metadata, "security_level") eq "low"

Plan gating on the security side specifically: Free/Pro/Business get standard WAF rules per their existing zone plan; Enterprise additionally gets the ability to create and apply fully custom firewall rulesets scoped by hostname metadata.

Per-customer bot/security analytics in your own dashboard (not just enforcement) requires Logpush plus your own data pipeline — real engineering effort on the platform's side, not something Cloudflare surfaces per-tenant out of the box.

Module 8Pricing & plans

Verified current plan table

FreeProBusinessEnterprise
AvailabilityYesYesYesContact account team
Hostnames included100100100Custom
Price per additional hostname$0.10$0.10$0.10Custom pricing
Pay-as-you-go hostname cap50,000 (raised from 5,000, May 2025)—

Correction: the plan floor is Free, not Pro — Cloudflare for SaaS is available on every plan. And the real public per-hostname rate is $0.10/month, not the ~$0.50 figure sometimes quoted informally — strike that number, it doesn't match current public pricing. No public volume-tier discount schedule exists; Enterprise pricing is explicitly custom/contract-negotiated, so assume real volume discounts exist at scale but don't quote a specific number without deal desk.

Module 9Migration & live demo walkthrough

Official migration guidance — what's actually documented

Cloudflare's own documentation recommends migrating "in phases" and provides a downloadable example migration plan, plus a specific "Zero-downtime migration" API runbook for a single hostname (create → pre-validate → pre-issue cert → confirm active → cut over the CNAME). There is no officially named 3-pattern taxonomy ("bulk API / staged rollout / customer-initiated") in Cloudflare's docs — that's useful SE field framing below, not an official doc citation.

Field guidance — three practical onboarding patterns

  1. Bulk API onboarding — iterate your existing customer database, call the Custom Hostnames API for each domain. The API can handle thousands of additions in minutes; the real bottleneck is DNS propagation, not Cloudflare.
  2. Staged rollout — start with a small pilot group (10-50 customers) to validate cert issuance, routing, and any edge cases in your stack before expanding in waves. Most platforms do this over 2-4 weeks.
  3. Customer-initiated — let customers opt in through your own dashboard on their own timeline. Lowest risk of breaking an inattentive customer's site, but migration takes months rather than days.

Most real migrations combine staged rollout for technical validation, then bulk API for the main wave, with customer-initiated as a fallback for stragglers or unusual DNS setups.

What actually trips platforms up during migration

Live demo

A real, still-live demo environment exists: a fictional hosting platform at platform-demo.tarheel.us serving several fake tenant sites on subdomains, plus a genuinely separate, externally-registered domain — puppy-co.org — actually onboarded as a real Custom Hostname. That's the strongest part of any live demo, since it's indistinguishable from a real customer's production setup rather than a mockup — the URL bar contains no trace of the platform's own domain. Dashboard proof points to show: the Custom Hostnames list (Active status, SSL Active, real CA-issued cert), the Fallback Origin setting, and the Workers Routes page showing multiple hostnames bound to one piece of platform code.

"Notice the URL — it doesn't contain any part of my platform's domain. That's a completely separate domain, registered independently, pointing at my platform via a Custom Hostname. Cloudflare automatically issued and validated an SSL cert for it. No human set that up — a new customer signing up on a real platform would see their own domain live, with HTTPS, typically within about a minute end to end."

Module 10Rapid-fire Q&A

"Do we need a Pro or Business plan to use Cloudflare for SaaS?"

No — it's available starting on Free. 100 hostnames included, $0.10/month per additional hostname, same rate across Free/Pro/Business. Enterprise pricing is custom/contract.

"Can different customers route to different backends, or do they all have to share one origin?"

They can route differently — that's Custom Origin Server, and it's free on every plan including Free (since May 2025). Don't tell a customer they need Enterprise just for per-hostname origin overrides.

"Our prospective customer already has their own Cloudflare account. Is that a problem?"

No — that's Orange-to-Orange (O2O), a fully supported, documented configuration. The only real adjustment: use real-time (CNAME) validation instead of pre-validation (TXT/HTTP token), since pre-validation isn't supported for O2O hostnames.

"What does apex domain support actually cost?"

Free if the customer's domain is on Cloudflare DNS (CNAME flattening, automatic). If not, Apex Proxying is an Enterprise-only paid add-on with no public price — contact the account team. Many platforms avoid the cost entirely by steering customers to www with a registrar-level redirect.

"Is there an 'SSL for SaaS Advanced' plan we should be quoting?"

No such named product exists today. The relevant gating is per-feature at the Enterprise plan level — Custom Metadata and Apex Proxying/BYOIP are separate paid add-ons, Wildcard Custom Hostnames is bundled into Enterprise, and several other capabilities (selectable CA, custom certs, mTLS) are Enterprise-only without being branded as a distinct "Advanced" tier.

"How do we give premium customers stricter bot protection than free-tier customers on the same platform?"

Custom Metadata (Enterprise paid add-on) — tag each Custom Hostname with a tier/plan value, then reference that tag in a Ruleset Engine expression to vary WAF/Bot Management/Rate Limiting rules per customer.

Self-testQuiz

Click a question to reveal the answer. No peeking before you commit to one.

1. Is "Cloudflare for SaaS" a recent 2026 rename, or an older one?

Older — it was renamed from "SSL for SaaS" years ago, not part of this session's 2026 rename wave. The old name still appears in the certificate-type label and Terms of Service.

2. Does "SSL for SaaS Advanced" exist as a current, named product tier?

No — gating is purely by account plan (Free/Pro/Business/Enterprise) plus two explicit Enterprise-only paid add-ons (Custom Metadata, Apex Proxying/BYOIP). There's no distinctly branded "Advanced" tier.

3. Is per-hostname custom origin routing (different customers → different backends) an Enterprise-only feature?

No — this is Custom Origin Server, and as of May 2025 it's available on every plan including Free. It used to be Enterprise-only; don't tell a customer they need to upgrade just for this.

4. What's the real plan floor for Cloudflare for SaaS?

Free — 100 hostnames included, $0.10/month per additional hostname, same rate on Free/Pro/Business. Not Pro as sometimes assumed.

5. How many certificate authorities does Cloudflare use for the "SSL for SaaS" cert type today?

Three — Let's Encrypt, Google Trust Services, and SSL.com. Selecting a specific CA is Enterprise-only; other plans get automatic default-CA assignment.

6. Is "no manual customer steps" an accurate blanket claim about Custom Hostname validation?

No — only real-time CNAME-based validation is truly zero-touch. TXT validation requires the customer to add a DNS record; HTTP validation requires serving a token file at their origin.

7. A customer wants their bare apex domain (no www) to work on your platform, but isn't using Cloudflare DNS. What's required, and what's it called?

Apex Proxying (not "Dedicated IP for Apex Proxying") — an Enterprise-only paid add-on with no public price. CNAME flattening is the free alternative, but only works if the customer's domain IS on Cloudflare DNS.

8. A prospective customer already has their own Cloudflare account. Is this a blocker for onboarding them as a Custom Hostname on your SaaS platform?

No — this is Orange-to-Orange (O2O), a fully supported, officially documented configuration. The only real adjustment: pre-validation (TXT/HTTP token) isn't supported for O2O — use real-time CNAME validation instead.

9. What HTTP header does Cloudflare set to signal an O2O (Orange-to-Orange) request?

cf-connecting-o2o: 1

10. How do you give premium-tier customers stricter bot/security rules than free-tier customers on the same multi-tenant platform?

Custom Metadata (Enterprise paid add-on) — tag each Custom Hostname with a tier value, then reference cf.hostname.metadata in a Ruleset Engine expression to vary WAF/Bot Management/Rate Limiting per customer. Without it, security policy is uniform across all hostnames on the zone.

11. New as of October 2026 — what's a new use case for Custom Metadata beyond security/routing differentiation?

Enabling Markdown for Agents on a per-custom-hostname basis, letting individual tenant sites opt into agent-friendly Markdown responses without affecting the whole SaaS zone.

12. Is $0.50/hostname/month an accurate public pricing reference for Cloudflare for SaaS today?

No — current public self-serve pricing is $0.10/hostname/month for additional hostnames beyond the included 100. The $0.50 figure doesn't match current public pricing and should be dropped from SE-facing material.

13. Does Cloudflare officially document "bulk API onboarding / staged rollout / customer-initiated" as three named migration patterns?

No — that's useful SE field framing, not an official doc citation. Cloudflare's actual documentation recommends phased migration generally and provides a specific single-hostname "Zero-downtime migration" API runbook — it doesn't name these three patterns as a taxonomy.

14. Can the same customer domain be an active Custom Hostname on two different SaaS providers' zones at the same time?

Yes — Cloudflare routes based purely on where the customer's DNS CNAME currently points, so this is explicitly supported, not a conflict.

Sources SaaS reference architecture design guide Cloudflare for SaaS versioning (formerly SSL for SaaS) Hostname validation status states Certificate validation methods Certificate authorities reference Getting started — Fallback Origin Custom Origin Server Apex Proxying Cloudflare for SaaS — plans & gating Public pricing PAYGO hostname limit + Custom Origin Server plan change Orange-to-Orange (O2O) Pre-validation (and O2O limitation) WAF for SaaS / Custom Metadata security use Zero-downtime migration runbook Markdown for Agents (Custom Metadata use case)