Guias

Domínios personalizados para um SaaS WordPress: como funciona o mapeamento de domínios de tenant

Equipe GrabWP
· 7 min read · Revisado por Equipe GrabWP

Se você está construindo um SaaS WordPress, mais cedo ou mais tarde um cliente fará a mesma pergunta: “Posso usar meu próprio domínio?”. A forma como você responde a isso molda todo o seu produto. Este guia aborda como o mapeamento de domínios de tenant funciona na prática com o plugin GrabWP Tenancy: as opções de roteamento, como os próprios clientes adicionam domínios e o que realmente acontece no server.

Por que os domínios são importantes para um WaaS

Em um negócio de Website-as-a-Service (WaaS), o domínio é a porta de entrada do cliente. Ele afeta a confiança, o branding e o SEO. Um cliente que vê seu site em suamarca.com/site/acme-widgets o trata como uma demonstração. O mesmo cliente em acmewidgets.com o trata como o seu negócio de verdade.

Os domínios são importantes por três motivos concretos:

  • Branding. Os clientes querem o nome deles na barra de URL, não o seu.
  • SEO. Os mecanismos de busca indexam o conteúdo por hostname. Um domínio personalizado permite que cada tenant construa sua própria autoridade.
  • Sensação de propriedade. Um domínio personalizado faz com que o produto pareça deles, o que reduz o cancelamento (churn) e justifica preços mais altos.

O truque é oferecer domínios personalizados sem transformar cada novo cadastro em um ticket de suporte manual para configuração de DNS. Isso significa começar de forma simples e fazer o upgrade sob demanda.

As opções de roteamento: domínio personalizado vs path

O GrabWP Tenancy suporta dois modelos de roteamento, e você pode misturá-los em toda a sua base de tenants.

O roteamento baseado em domínio mapeia um domínio personalizado completo para um tenant. Quando chega uma requisição para acmewidgets.com, o GrabWP a resolve para o tenant Acme e carrega os dados desse tenant. É isso que os clientes de um plano pago geralmente querem.

O roteamento baseado em path coloca cada tenant sob um path no seu domínio compartilhado, como seusite.com/site/acme-widgets. Nenhuma alteração de DNS é necessária, o que o torna perfeito para onboarding, trials e planos gratuitos. O prefixo do path é configurável pela constante GRABWP_TENANCY_PATH_PREFIX, que tem o valor padrão de site. Defina-o como algo tipo app ou clientes para combinar com o seu produto.

// wp-config.php
define( 'GRABWP_TENANCY_PATH_PREFIX', 'clientes' );
// Tenants now live at yoursite.com/clients/acme-widgets

Ambos os modelos passam pela mesma camada centralizada de resolução de URL de tenant, então você não precisa escolher um e ficar preso a ele para sempre. Um tenant pode estar em um path hoje e em um domínio personalizado amanhã.

Como os clientes adicionam um domínio pelo dashboard

Gerenciamento de domínio personalizado no dashboard de domínios WaaS do GrabWP

Você não quer ser o intermediário para cada mudança de domínio. A camada WaaS do GrabWP oferece aos tenants um dashboard de autoatendimento através do shortcode [grabwp_waas_dashboard]. Coloque esse shortcode em uma página no seu site de controle e cada cliente logado verá o seu próprio dashboard.

O dashboard inclui uma aba Domains onde os clientes gerenciam os domínios vinculados ao tenant deles. A partir daí, o cliente pode registrar o domínio personalizado que deseja apontar para o seu site. Quando um domínio é ativado, a camada WaaS pode enviar um e-mail de notificação de ativação de domínio, para que o cliente saiba que o mapeamento está no ar.

O fluxo para o cliente funciona assim:

  1. O cliente abre seu dashboard e clica na aba Domains.
  2. O cliente insere o domínio que possui, por exemplo, acmewidgets.com.
  3. O cliente aponta o DNS desse domínio para o seu server (um registro A ou CNAME, dependendo do seu setup).
  4. Assim que o DNS propagar e o certificado estiver pronto, o tenant é carregado no domínio personalizado.

Como operador, você ainda pode gerenciar tudo de forma centralizada pelo painel admin ou pelo arquivo de mapeamento do tenant, o que é útil para alterações em massa ou para lidar com domínios em nome de um cliente.

O que acontece no server

Quando um domínio é mapeado, o GrabWP faz o trabalho do lado do WordPress para garantir que as requisições resolvam para o tenant correto. Duas coisas são importantes de entender.

Roteamento. A resolução centralizada de URL de tenant inspeciona o hostname ou path de entrada e carrega o tenant correspondente. Tanto as requisições baseadas em domínio quanto as baseadas em path passam por esse único resolver, garantindo que o comportamento permaneça consistente, independentemente de como um tenant é acessado.

Sincronização de symlinks. Na versão Pro, o GrabWP mantém os symlinks de domínio sincronizados automaticamente sempre que um tenant é criado, atualizado ou excluído. Isso funciona na interface admin, na REST API e no WP-CLI, então um tenant provisionado pela sua automação de cadastro recebe o mesmo tratamento que um criado manualmente. Há também uma action nas configurações do Pro para sincronizar os symlinks de domínio de todos os tenants de uma vez, o que é muito útil após uma migração ou importação em massa.

Um limite que precisa ficar claro: o GrabWP não emite certificados TLS nem gerencia DNS. Apontar o domínio de um cliente para o seu server e provisionar um certificado HTTPS é um trabalho padrão de servidor web, geralmente resolvido pelo seu hosting, um proxy reverso ou uma ferramenta como o Certbot. O GrabWP cuida do mapeamento e do roteamento assim que a requisição chega no WordPress. Manter essa divisão clara poupa você de muitos tickets de suporte confusos.

Começando em um domínio compartilhado e fazendo upgrade depois

O caminho mais limpo para o onboarding é iniciar todos os tenants em uma URL compartilhada baseada em path e fazer o upgrade para um domínio personalizado apenas quando o cliente solicitar.

Aqui está o motivo pelo qual isso funciona tão bem. Um novo cadastro em seusite.com/site/acme-widgets não precisa de nenhuma configuração de DNS, então o site do cliente fica no ar em segundos. Quando ele decide assinar um plano pago, adiciona um domínio personalizado direto da aba Domains.

Com o roteamento de aliases do Pro ativado, o upgrade é suave: as antigas URLs com ID do tenant fazem um redirecionamento 301 para a URL alias, preservando tanto o sub-path quanto a query string. Isso significa que links antigos, favoritos e páginas indexadas são transferidos para o novo domínio sem quebrar nada, e os motores de busca são avisados de que o conteúdo mudou permanentemente.

Esse modelo em etapas também se encaixa perfeitamente na sua precificação. Sites baseados em path podem ficar no seu plano gratuito ou trial, e domínios personalizados podem ser um recurso pago no plano Pro por $9.99/month. Os clientes fazem o upgrade quando percebem o valor, que é exatamente o momento em que desejam o próprio domínio.

Armadilhas comuns

Alguns problemas aparecem com frequência quando as equipes começam a oferecer domínios personalizados:

  • Esperar que o plugin emita certificados. Ele não faz isso. Providencie o TLS no nível do server ou do proxy antes de mapear o domínio.
  • DNS ainda não propagou. Um domínio recém-apontado pode levar um tempo para resolver. Verifique o DNS antes de assumir que o mapeamento está quebrado.
  • Esquecer de sincronizar os symlinks após mudanças em massa. Se você importar ou migrar tenants fora do fluxo normal de criação, execute a action de configurações do Pro para sincronizar os symlinks de domínio em todos os tenants.
  • Pular redirecionamentos 301 no upgrade. Sem o roteamento de aliases, os links antigos baseados em path podem ficar desatualizados e quebrar. Ative o roteamento de aliases do Pro para que as URLs com ID do tenant redirecionem para o domínio personalizado.
  • Mudar o prefixo do path depois do lançamento. Se você alterar o GRABWP_TENANCY_PATH_PREFIX mais tarde, as URLs de path existentes vão mudar. Decida o seu prefixo logo no início.

Comece agora

O mapeamento de domínios personalizados é a diferença entre uma demonstração e um produto real. Inicie todos os clientes em uma URL baseada em path para um onboarding instantâneo e, em seguida, permita que eles façam o upgrade para o próprio domínio pela aba Domains quando estiverem prontos. O GrabWP cuida do roteamento e da sincronização de symlinks do lado do WordPress para que o tenant correto seja sempre carregado.

Pronto para oferecer domínios personalizados no seu próprio SaaS WordPress? Explore a plataforma WaaS do GrabWP, leia nosso guia complementar sobre como criar um SaaS WordPress sem programar ou baixe o plugin GrabWP Tenancy gratuito para começar a testar hoje mesmo.

Perguntas frequentes

O GrabWP emite certificados SSL para os domínios personalizados dos meus clientes?
Não. O GrabWP lida com o roteamento e mapeamento do lado do WordPress, garantindo que o tenant certo seja carregado para cada domínio. Emitir certificados TLS e apontar o DNS para o seu server é um trabalho padrão de servidor web, geralmente feito pelo seu hosting, um proxy reverso ou uma ferramenta como o Certbot. Aponte o DNS do cliente para o seu server, provisione o certificado e mapeie o domínio para o tenant no GrabWP.
Um tenant pode ter mais de um domínio?
Sim. O GrabWP Tenancy suporta vários domínios por tenant. Você pode mapear um domínio personalizado principal e aliases adicionais pelo painel admin ou pelo arquivo de mapeamento do tenant, e a resolução centralizada de URLs roteia todos eles para o mesmo tenant.
Um cliente pode começar em um domínio compartilhado e adicionar um domínio personalizado depois?
Sim. Inicie todos os tenants com uma URL baseada em path, como seusite.com/site/cliente-a, sem alterações de DNS. Depois, adicione um domínio personalizado quando o cliente estiver pronto. Com o roteamento de aliases do Pro ativado, as URLs antigas baseadas em ID do tenant fazem um redirecionamento 301 para o novo domínio, preservando o sub-path e a query string.

Editorial standards: Our content is written by WordPress experts with hands-on multi-tenancy experience. Articles are fact-checked and regularly updated to ensure accuracy.