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
- 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.
- O cliente adiciona o registro DNS que você mostra a ele, por exemplo
portal.customer.com CNAME customers.yourapp.com. - 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").
- A autoridade certificadora valida o controle do domínio e emite os certificados.
- O hostname está pronto quando
statusessl.statusestão ambosactivee o DNS aponta para o seu destino. O Cloudflare avisa que um handshake TLS pode ter sucesso antes dessl.statusficar 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étodo | O que o cliente faz | Funciona antes da troca de DNS | Observações |
|---|---|---|---|
| HTTP, automático | Só adiciona o CNAME | Não | O mais simples. O Cloudflare o sugere quando os clientes "aguentam alguns minutos de indisponibilidade". |
| HTTP, manual | Nada, se o domínio já aponta para você; caso contrário, serve o seu token no servidor atual | Sim | Útil quando o domínio está no ar em outro provedor. |
| TXT | Adiciona um registro TXT que você fornece | Sim | Obrigatório para hostnames com wildcard. |
| DCV delegado | Adiciona um CNAME _acme-challenge, uma única vez | Sim | Permite 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
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Hostnames incluídos | 100 | 100 | 100 | Personalizado |
| Preço por hostname adicional | $0.10 | $0.10 | $0.10 | Personalizado |
| Máximo de hostnames | 50,000 | 50,000 | 50,000 | Ilimitado (fale com vendas acima de 50.000) |
| Custom hostnames com wildcard | Não | Não | Não | Sim |
| Certificados próprios e CA selecionável | Não | Não | Não | Sim |
| Proxy de apex / BYOIP | Não | Não | Não | Complemento pago |
| Metadados personalizados | Não | Não | Não | Complemento 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_errorsem 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 SaaS | Vercel | Netlify | |
|---|---|---|---|
| Limites de domínios | 100 incluídos, até 50.000 nos planos Free, Pro e Business | 50 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 raiz | Complemento do Enterprise | Registro A para o valor no card de domínio do projeto | ALIAS, ANAME ou CNAME flattened, ou um registro A como alternativa |
| Certificados | Automáticos, dois por hostname; certificados personalizados no Enterprise | Automáticos após a verificação do domínio; certificados personalizados no Enterprise | Let's Encrypt automático; certificados personalizados renovados manualmente |
| Wildcards | Enterprise | Exigem nameservers da Vercel ou um _acme-challenge delegado | Automáticos para domínios no Netlify DNS |
| Feito para | Muitos domínios de clientes em uma única zona | Plataformas multi-tenant com API REST e SDK | No 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.
