Whitelabel
O que é Whitelabel?
Whitelabel é uma personalização completa da experiência iFriend que permite a uma agência (affiliate) expor o serviço sob sua própria marca e domínio.
Definição Técnica
- Whitelabel = customização visual (domínio, cores, logo) de um affiliate
- Um whitelabel sempre pertence a um affiliate
- Sem affiliate, não existe whitelabel
Estrutura de Dados
{
"id": 123,
"dns_cname": "agencia.example.com", // Domínio customizado
"baseurl": "https://agencia.example.com",
"company": "Agência Exemplo LTDA",
"affiliate": {
"id": 456,
"name": "Agência Exemplo",
"phone": "+5511999999999",
"emailComercial": "contato@agencia.com"
},
"contact": {
"contactEmail": "atendimento@agencia.com",
"contactPhone": "+5511999999999",
"contactWhatsapp": "+5511999999999"
},
"branding": {
"logo": "https://agencia.com/logo.png",
"primaryColor": "#FF5733"
}
}
Campos do Whitelabel
| Campo |
Tipo |
Descrição |
id |
int |
ID único |
dns_cname |
str |
Domínio CNAME (sem https) |
baseurl |
str |
URL completa |
company |
str |
Nome da empresa |
affiliate |
obj |
Dados do affiliate associado |
contact |
obj |
Dados de contato |
branding |
obj |
Personalização visual |
isActive |
bool |
Se está ativo |
Campos do Affiliate (dentro de whitelabel)
| Campo |
Tipo |
Descrição |
id |
int |
ID do affiliate |
name |
str |
Nome da agência |
phone |
str |
Telefone |
emailComercial |
str |
Email comercial |
| Campo |
Tipo |
Descrição |
contactEmail |
str |
Email de contato |
contactPhone |
str |
Telefone de contato |
contactWhatsapp |
str |
WhatsApp (preferencial) |
contactPreferredChannel |
str |
canal preferido |
Campos do Branding
| Campo |
Tipo |
Descrição |
logo |
str |
URL do logo |
logoFavicon |
str |
URL do favicon |
primaryColor |
str |
Cor primária (hex) |
secondaryColor |
str |
Cor secundária |
Como Funciona a Detecção
1. Via Domínio (HTTP)
flowchart TD
A["1. Usuário acessa https://agencia.example.com"]
B["2. Sistema detecta CNAME no header Origin/Referer"]
C["3. Busca whitelabel pelo dns_cname"]
D["4. Injeta whitelabel no session.state"]
E["5. Resposta usa branding do whitelabel"]
A --> B --> C --> D --> E
{
"is_whitelabel": true,
"whitelabel_baseurl": "https://agencia.example.com"
}
Configuração DNS
agencia.example.com CNAME agents.theifriend.com
Exposição do Agente
Um whitelabel pode expor o agente iFriend:
| Modo |
Descrição |
| Embed |
Widget embedado no site do affiliate |
| Redirect |
Domínio ponto para agente |
Configuração Embed
<script src="https://agents.theifriend.com/widget.js"
data-whitelabel="agencia"
data-theme="dark">
</script>
Diferença: Affiliate vs Whitelabel
| Aspecto |
Affiliate |
Whitelabel |
| O que é |
Agência (entidade) |
Personalização visual |
| Sempre existe |
Sim |
Opcional |
| Domínio |
theifriend.com |
Domínio próprio |
| Marca |
iFriend + nome |
Própria marca |
| Exposta agente |
Não |
Sim |
| Dados principais |
Nome, contato, markups |
Logo, cores, domínio |
| Identificação |
Via user email ou partner_code |
Via DNS ou metadata |
Fluxo Completo
flowchart TD
A["Usuário acessa https://agencia.example.com"]
B["Detecção whitelabel (dns_cname = agencia.example.com)"]
C["Busca GET /whitelabels?dns.cname=agencia.example.com"]
D["Whitelabel encontrado → affiliate.id = 456"]
E["Busca GET /affiliates/456 → dados do affiliate"]
F["Session state:<br/>is_whitelabel, whitelabel_baseurl,<br/>affiliate, contact, branding"]
G["Resposta customizada:<br/>logo da agência no header,<br/>email com branding da agência,<br/>WhatsApp do affiliate"]
A --> B --> C --> D --> E --> F --> G
Uso nos Módulos
1. Detecção de Whitelabel
# runtime/messaging/processor.py
message_metadata = {
"is_whitelabel": detect_from_origin(origin),
"whitelabel_baseurl": get_baseurl_from_origin(origin)
}
2. Email Branding (prioridade)
flowchart TD
A["1. Affiliate (via partner_code no JWT)"] --> B["2. Whitelabel (via message_metadata)"] --> C["3. Default (iFriend)"]
3. Suporte WhatsApp
# Se agency_id == affiliate.id → usa contato do affiliate
# Se agency_id != affiliate.id → usa default iFriend
Variáveis de Ambiente
| Variável |
Descrição |
ENABLE_WHITELABEL |
Habilita detecção por domínio |
WHITELABEL_DOMAINS |
Domínios permitidos (JSON) |
API Reference
Buscar por Domínio
GET /whitelabels?dns.cname=agencia.example.com
Listar
Buscar por ID
Resumo
- Whitelabel = customização visual + domínio próprio
- Sempre pertence a um affiliate (agência)
- Affiliate fornece dados de contato e markups
- Whitelabel fornece branding visual