Knowledge Base · 07

Plataforma multi-tenant, página pública e embed

Como o FIRO suporta vários negócios em simultâneo: subdomínios automáticos, domínio próprio com SSL, branding por tenant, frontoffice público e widget embed para sites externos.

Leitura de 6 min · Conteúdo factual extraído do produto

  • Subdomínio automático: meusalao.firo.pt em segundos
  • Domínio próprio com SSL automático (Cloudflare SaaS)
  • Branding completo: logo, cores, fotos, descrição, políticas
  • Widget embed em iframe para integrar no site existente
01

Multi-tenant: arquitectura

O FIRO é multi-tenant nativo. Cada negócio é um Tenant com:

  • Slug único — identificador legível por URL (ex.: "salao-maria").
  • Domínio — usa slug.firo.pt automaticamente, ou custom_domain via CNAME.
  • Settings JSON — atributos de configuração extensíveis sem migração.

Separação de dados

  • Middleware tenant.active resolve o tenant a partir do domínio em cada request.
  • Global Scope TenantScope filtra automaticamente queries Eloquent por tenant_id.
  • Models como bookings, serviços, staff, transações são tenant-scoped.
  • Customer e magic links são globais (por design — ver artigo de Clientes).
02

Subdomínio vs. domínio próprio

Cada tenant pode usar um de dois modos:

Subdomínio firo.pt (default)

Após criar a conta, o tenant fica imediatamente acessível em {slug}.firo.pt. Zero configuração técnica.

Custom domain (Pro+)

Com domínio próprio (ex.: marcacoes.salaomaria.pt):

  • O tenant aponta um CNAME para o destino do FIRO.
  • O FIRO regista o hostname em Cloudflare SaaS.
  • SSL é emitido e renovado automaticamente.
  • O estado é tracked em cloudflare_hostname_id e cloudflare_ssl_status.

Resultado: o link que o cliente vê é marcacoes.salaomaria.pt, não salaomaria.firo.pt. Para muitos negócios, é o detalhe que torna o produto vendável.

03

Branding e identidade

Cada tenant pode adaptar a aparência da página pública:

  • Logo (logo_path).
  • Imagem de cabeçalho (header_image_path).
  • Cor primária e secundária com hex.
  • Descrição pública em texto livre/markdown.
  • Testemunhos em JSON (rotativos no público).

Localização e contactos

  • Endereço com latitude/longitude para mostrar em mapa.
  • Telefone de contacto.
  • NIF para faturação interna.
04

O que vê o cliente final

A landing pública (LandingController) apresenta:

  • Logo e foto de cabeçalho.
  • Descrição do negócio.
  • Lista de serviços por categoria com preços.
  • Profissionais visíveis com fotos.
  • Mapa Google da localização.
  • Testemunhos.
  • Botão "Marcar Agora" sempre acessível.

Fluxo de marcação público

  1. Selecciona serviço (filtrado por categoria).
  2. Selecciona profissional (se aplicável) ou recurso.
  3. Selecciona data e hora a partir dos slots disponíveis.
  4. Adiciona participantes/extras se relevantes.
  5. Insere dados pessoais (nome, contacto, NIF opcional).
  6. Aplica cupão se tiver.
  7. Vê o preview de preço.
  8. Confirma — marcação criada como pendente ou confirmada (consoante a configuração do tenant).
05

Widget embed (iframe)

Para tenants que já têm um website e querem manter o tráfego lá, o FIRO disponibiliza um widget embed:

  • Rota dedicada /embed/marcacoes com middleware allow.embed que permite CORS para iframe.
  • Página de sucesso /embed/booking/success isolada.
  • Visual mais limpo, sem header/footer da página pública completa.

O cliente final vê o widget directamente no site do tenant. As marcações ficam no FIRO.

06

Políticas legais customizáveis

Cada tenant tem três páginas de políticas customizáveis:

  • Política de Privacidade (privacy_policy_text).
  • Política de Cookies (cookies_policy_text).
  • Política de Reservas (booking_policy_text).

Servidas em /politicas/privacidade, /politicas/cookies e /politicas/reservas no domínio do tenant. Há valores default razoáveis se nada for preenchido.

07

Tracking de origem das marcações

BookingSource permite registar de onde vêm as marcações:

  • Google Search.
  • Instagram.
  • WhatsApp.
  • Recomendação de cliente.
  • Walk-in.

Cada origem é editável e ordenável. Útil para perceber atribuição de marketing — qual canal está mesmo a trazer clientes vs. qual está só a custar dinheiro.

08

Backoffice do tenant

O backoffice é o painel onde a equipa do negócio opera tudo. Acesso por magic link em /backoffice/login. Inclui:

  • Dashboard com estatísticas (marcações hoje, receita).
  • Calendário com vista por staff/dia/semana, drag-and-drop, filtros.
  • Marcações com CRUD completo, aprovação, check-in.
  • Serviços, categorias, add-ons, recursos.
  • Equipa com horários, ausências, permissões.
  • Clientes com listagem, importação, exportação.
  • Promoções e transações.
  • Configurações de notificações, branding, IVA, políticas.
  • Suporte com tickets de clientes.
Para a equipa comercial

O que dizer ao lead

Aqui é onde se demonstra "isto não é um software, é o teu site". Conduz a conversa para o que o cliente final vai ver.

  • "Em 2 minutos tens um link" — slug.firo.pt funciona ao registar. Imediato. O Instagram bio fica pronto na hora.
  • "Mais tarde, ligas o teu domínio" — marcacoes.teunegocio.pt com SSL automático. Para muitos clientes, é o detalhe que assina o contrato.
  • "Ou metes no site que já tens" — embed em iframe. O tráfego mantém-se no site dele, as marcações entram no FIRO.
  • "O cliente final vê o teu salão, não o FIRO" — logo, cores, fotos, testemunhos. White-label sem o esforço técnico.

Âmbito atual & roadmap

O produto evolui semana a semana. Aqui está o que existe hoje e o que está confirmado para chegar.

Hoje no produto

  • Subdomínio slug.firo.pt automático
  • Custom domain via CNAME + Cloudflare SaaS + SSL automático
  • Branding completo (logo, cores, fotos, descrição)
  • Frontoffice público com fluxo de marcação
  • Widget embed em iframe
  • Políticas legais editáveis (privacidade, cookies, reservas)
  • Tracking de origem (BookingSource)

A caminho

  • Multi-location (várias unidades sob o mesmo tenant)
  • Editor visual de página pública (drag-and-drop)
  • Versão multi-língua (PT / EN / ES)
  • PWA mais completo com modo offline

Perguntas frequentes

Quanto tempo demora a configurar a página pública?

Menos de 10 minutos para o essencial. Após o signup, o link já existe. Branding e descrição completam-se gradualmente.

Posso usar o meu domínio próprio?

Sim, nos planos Pro e Business. Apontas um CNAME e o SSL é emitido automaticamente via Cloudflare.

Posso ter várias unidades (várias moradas)?

Hoje, cada tenant é uma unidade. Multi-location no mesmo tenant está no roadmap. Como workaround, ter dois tenants separados também funciona para casos simples.

O cliente final precisa de saber que isto é o FIRO?

Não. Vê o teu logo, as tuas cores, o teu domínio (se ligares). A marca FIRO fica nos rodapés discretos e na URL se usares slug.firo.pt.

O widget embed funciona em WordPress / Squarespace / Wix?

Sim. É um iframe standard que cabe em qualquer site capaz de embeber HTML.

Continua à conversa com a equipa comercial

Mostramos o produto a funcionar, respondemos a dúvidas específicas do teu negócio e ajudamos-te a escolher o plano certo.

Continua a explorar a Knowledge Base