Blog

Domínios personalizados para SaaS: deixe seus clientes usarem o próprio domínio com o Cloudflare for SaaS

Deixe seus clientes apontarem o próprio domínio para o seu SaaS com o Cloudflare for SaaS: como funciona a validação, quanto custa em outubro de 2026 e onde dá problema.

Por Nicolás Cerón ·

Uma fileira de lojas diferentes em uma rua à noite, com um corte sob a calçada mostrando cabos carmesim que ligam cada loja a uma única casa de máquinas compartilhada.

A resposta curta

Para permitir que um cliente sirva o seu app no próprio domínio, por exemplo portal.customer.com, você registra esse domínio como custom hostname na sua zona do Cloudflare. O cliente adiciona um registro CNAME apontando para você, o Cloudflare verifica se ele controla o hostname, uma autoridade certificadora emite os certificados e as requisições passam a chegar ao seu app.

Em outubro de 2026, a página de planos do Cloudflare for SaaS inclui 100 custom hostnames nos planos Free, Pro e Business, informa US$ 0,10 por hostname adicional e limita esses planos a 50.000 hostnames.

Dois limites moldam qualquer projeto. Os clientes não podem apontar um domínio apex puro (customer.com) para você sem um complemento Enterprise pago. E custom hostnames com wildcard, certificados próprios e a escolha da autoridade certificadora são exclusivos do Enterprise. A configuração no Cloudflare são poucos passos. O trabalho de produto ao redor dela leva mais tempo, e a maior parte deste guia trata disso.

O que é um custom hostname

Um custom hostname é um domínio que pertence ao seu cliente e que o Cloudflare encaminha para a sua zona. O guia de configuração tem quatro peças:

  • Zona SaaS. Seu próprio domínio no Cloudflare, com o Cloudflare for SaaS ativado. Uma zona no plano Free basta para começar.
  • Origem de fallback. Um registro DNS com proxy, como proxy-fallback.yourapp.com, para onde vai o tráfego dos custom hostnames.
  • Destino do CNAME. Um nome opcional e mais amigável para os clientes apontarem, como customers.yourapp.com.
  • Custom hostname. O domínio do cliente, criado por API ou pelo painel, com seu próprio estado de validação. O Cloudflare emite dois certificados para cada um: um principal ECDSA P-256 e um de fallback RSA de 2048 bits para clientes mais antigos.

Se o seu app roda no Cloudflare Workers, a plataforma em que a Dardo constrói, o Worker pode ser a origem de fallback. Uma rota */* captura as requisições de todos os custom hostnames, e o seu código lê o header Host para identificar o tenant. O Cloudflare também oferece metadados personalizados por hostname, mas é um complemento Enterprise pago; nos demais planos, essa consulta fica no seu próprio banco de dados, como o D1.

Como o fluxo funciona

  1. O cliente informa um domínio nas configurações do seu app. Seu backend o normaliza e chama o endpoint Create Custom Hostname com um método de validação de certificado.
  2. O cliente adiciona o registro DNS que você mostra a ele, por exemplo portal.customer.com CNAME customers.yourapp.com.
  3. O Cloudflare valida a propriedade do hostname. A validação em tempo real acontece quando o CNAME aparece, o que pode causar uma breve indisponibilidade. A pré-validação usa um registro TXT ou um token HTTP antes da mudança de DNS, para domínios que já estão no ar. A pré-validação não é compatível quando a zona do próprio cliente também está no Cloudflare (uma configuração "Orange-to-Orange").
  4. A autoridade certificadora valida o controle do domínio e emite os certificados.
  5. O hostname está pronto quando status e ssl.status estão ambos active e o DNS aponta para o seu destino. O Cloudflare avisa que um handshake TLS pode ter sucesso antes de ssl.status ficar active, então trate o endpoint de detalhes do custom hostname como a fonte da verdade.

Métodos de validação de certificado

O guia de validação do Cloudflare oferece estas opções:

MétodoO que o cliente fazFunciona antes da troca de DNSObservações
HTTP, automáticoSó adiciona o CNAMENãoO mais simples. O Cloudflare o sugere quando os clientes "aguentam alguns minutos de indisponibilidade".
HTTP, manualNada, se o domínio já aponta para você; caso contrário, serve o seu token no servidor atualSimÚtil quando o domínio está no ar em outro provedor.
TXTAdiciona um registro TXT que você forneceSimObrigatório para hostnames com wildcard.
DCV delegadoAdiciona um CNAME _acme-challenge, uma única vezSimPermite que o Cloudflare renove todos os certificados futuros. Um registro TXT _acme-challenge existente impede isso.

A validação não espera para sempre. O Cloudflare tenta validar o hostname 75 vezes ao longo de sete dias e, segundo o cronograma de backoff, "se a validação não for bem-sucedida, o custom hostname será excluído". Os tokens de certificado também expiram: após 7 dias com Let's Encrypt e 14 dias com Google Trust Services ou SSL.com.

Quanto custa, em outubro de 2026

FreeProBusinessEnterprise
Hostnames incluídos100100100Personalizado
Preço por hostname adicional$0.10$0.10$0.10Personalizado
Máximo de hostnames50,00050,00050,000Ilimitado (fale com vendas acima de 50.000)
Custom hostnames com wildcardNãoNãoNãoSim
Certificados próprios e CA selecionávelNãoNãoNãoSim
Proxy de apex / BYOIPNãoNãoNãoComplemento pago
Metadados personalizadosNãoNãoNãoComplemento pago

A página de planos mostra os US$ 0,10 sem indicar o período. O anúncio de 2022 do Cloudflare descreveu isso como uma redução do preço "de US$ 2 para US$ 0,10 por mês". Nessa tarifa mensal, 1.000 domínios de clientes significam 900 além dos 100 incluídos, ou US$ 90 por mês.

Duas regras de cobrança importam para o design do produto. Segundo a página de cotas e cobrança do Cloudflare, todo hostname conta para o uso até você excluí-lo, inclusive "hostnames com validação ou ativação pendente". E os planos não Enterprise têm um limite de aplicação na API, a partir do qual novos hostnames são rejeitados.

Onde dá problema

Domínios apex

O guia de configuração da Cloudflare é explícito: "By default, using an A record to point to the target is not a supported setup." A maioria dos provedores de DNS não permite um CNAME na raiz de um domínio, então os clientes precisam de um subdomínio, como www.customer.com ou app.customer.com. O apex proxying atribui à sua conta prefixos de IP estáticos para que os clientes possam usar um registro A, mas é um complemento do plano Enterprise, com custo próprio. Sem ele, peça um subdomínio aos clientes e explique como encaminhar o domínio raiz para ele no provedor de DNS deles.

Autoridades certificadoras e registros CAA

A referência de autoridades certificadoras da Cloudflare lista Let's Encrypt (certificados de 90 dias), Google Trust Services e SSL.com (14, 30 ou 90 dias) para hostnames personalizados. Escolher a CA é possível apenas no Enterprise; nos demais casos, a Cloudflare usa a padrão e verifica antes os registros CAA. Se os registros CAA do cliente não permitirem essa CA, a emissão falha com "CAA records block issuance", e só o cliente pode corrigir isso. As consultas CAA seguem cadeias de CNAME, então os registros CAA do seu próprio domínio de destino também contam. O guia de solução de problemas lista as outras falhas do lado do cliente: DNSSEC com problemas e servidores DNS respondendo SERVFAIL.

Renovações

Os certificados de hostnames personalizados duram 90 dias e podem ser renovados 30 dias antes do vencimento. Hostnames ativos e sem wildcard são renovados automaticamente via HTTP. Se um hostname deixou de estar ativo, por exemplo porque o cliente mudou o DNS, o cliente precisa colocar um novo token, e cabe a você enviá-lo a ele. Wildcards só podem ser renovados via TXT, que é o que o Delegated DCV automatiza.

Clientes em outra CDN ou na Cloudflare

A Cloudflare afirma que hostnames personalizados que usam outra CDN não são compatíveis quando essa CDN oculta os registros DNS. Clientes com domínios na Cloudflare trazem o problema oposto: se eles saírem e você não excluir o hostname deles, ele pode continuar roteando para o seu serviço mesmo depois de alterarem o DNS.

Workers na frente dos caminhos de validação

Se um Worker é a sua origem de fallback, ele precisa repassar /.well-known/pki-validation/* e /.well-known/acme-challenge/* sem alterações. Uma rota genérica que responde com a página 404 do seu app quebra a validação HTTP.

O trabalho de produto em torno disso

  • Controle de planos. Defina quais dos seus planos incluem domínios personalizados e quantos, e verifique isso antes de chamar a Cloudflare. A cota e o limite dela são tetos, não o seu preço.
  • Tela de onboarding. Um único campo de entrada. Converta para minúsculas, remova o protocolo e o caminho, rejeite domínios raiz puros, a menos que você tenha contratado o apex proxying, e rejeite o nome da sua própria zona, que a Cloudflare diz para nunca criar como hostname personalizado. Depois, mostre o registro exato a adicionar, com um botão de copiar.
  • Dois status em linguagem simples. Hostname e certificado são validados separadamente, então mostre os dois. Traduza ssl.validation_errors em instruções: "Os registros CAA do seu domínio não permitem a nossa autoridade certificadora; adicione este registro" é melhor que "pending_validation". A resposta de criação pode ainda não incluir os registros de validação, então busque o hostname novamente após um breve intervalo. As notificações por webhook da Cloudflare informam eventos de validação e emissão, o que é melhor que fazer polling.
  • Monitoramento de renovações. Uma tarefa diária que sinaliza hostnames cujo certificado não está ativo ou cujo DNS não aponta mais para você, para que sua equipe saiba antes do cliente.
  • Limpeza. Exclua hostnames que nunca são validados e os de clientes que saem. Ambos continuam sendo cobrados até serem excluídos.
  • Isolamento de tenants. Identifique o tenant apenas a partir de hostnames ativos no seu banco de dados. Se os tenants também recebem subdomínios do seu domínio, a documentação de domínios da Vercel destaca que um cookie definido por um tenant para o domínio pai chega aos outros, então mantenha seu painel e o login em um domínio separado.
  • Manual de suporte. Uma página curta para sua equipe associando cada erro a quem o resolve: CNAME ausente, CAA, DNSSEC e SERVFAIL ficam com o cliente; tokens, limites de taxa da CA e rotas de Worker ficam com você.

Esse é o tipo de trabalho que a Dardo faz em desenvolvimento de web apps, e os portais de clientes em white-label são onde os domínios personalizados mais são pedidos.

Alternativas: Vercel e Netlify

Se o seu app já roda em outro lugar, as duas hospedagens lidam com domínios de clientes, com limites próprios documentados, em outubro de 2026.

Cloudflare for SaaSVercelNetlify
Limites de domínios100 incluídos, até 50.000 nos planos Free, Pro e Business50 por projeto no Hobby; "Unlimited" no Pro e no Enterprise, com limites flexíveis de 100.000 e 1.000.000"We recommend assigning no more than 50 domain aliases to a site"
Domínios raizComplemento do EnterpriseRegistro A para o valor no card de domínio do projetoALIAS, ANAME ou CNAME flattened, ou um registro A como alternativa
CertificadosAutomáticos, dois por hostname; certificados personalizados no EnterpriseAutomáticos após a verificação do domínio; certificados personalizados no EnterpriseLet's Encrypt automático; certificados personalizados renovados manualmente
WildcardsEnterpriseExigem nameservers da Vercel ou um _acme-challenge delegadoAutomáticos para domínios no Netlify DNS
Feito paraMuitos domínios de clientes em uma única zonaPlataformas multi-tenant com API REST e SDKNo máximo algumas dezenas de domínios por site

O suporte da Vercel a domínios raiz é a diferença mais clara: os clientes podem apontar um domínio raiz para ela com um registro A. Note que o plano Hobby é restrito a "non-commercial, personal use only" segundo as diretrizes de uso justo da Vercel, então um SaaS pago começa no Pro. A recomendação de 50 aliases da Netlify a torna pouco adequada para um único deployment atendendo centenas de domínios de clientes.

Quando construir

Se dois ou três clientes pedirem, adicione os hostnames deles no painel da Cloudflare e mantenha um checklist. Construa o fluxo self-service quando os domínios personalizados passarem a fazer parte de um plano que você vende ou de uma oferta white-label. Se os clientes precisarem de domínios raiz ou wildcards em escala, converse com a Cloudflare sobre o Enterprise antes de projetar em torno dos limites.

Se você quer esse fluxo integrado ao seu produto, com os status, os alertas e as notas de suporte acima, conte para a gente sobre o seu app.