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)
1. Usuário acessa https://agencia.example.com
2. Sistema detecta CNAME no header Origin/Referer
3. Busca whitelabel pelo dns_cname
4. Injeta whitelabel no session.state
5. Resposta usa branding do whitelabel
{
"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
Usuário acessa https://agencia.example.com
│
▼
Detecção whitelabel (dns_cname = agencia.example.com)
│
▼
Busca GET /whitelabels?dns.cname=agencia.example.com
│
▼
找到 whitelabel → affiliate.id = 456
│
▼
Busca GET /affiliates/456 → dados do affiliate
│
▼
Session state:
{
"is_whitelabel": true,
"whitelabel_baseurl": "https://agencia.example.com",
"affiliate": {...},
"contact": {...},
"branding": {...}
}
│
▼
Resposta customizada:
- Logo da agência no header
- Email com branding da agência
- WhatsApp do affiliate
Uso nos Módulos
1. Detecção de Whitelabel
# messaging/processor.py
message_metadata = {
"is_whitelabel": detect_from_origin(origin),
"whitelabel_baseurl": get_baseurl_from_origin(origin)
}
2. Email Branding (prioridade)
## Prioridade (Email Branding)
1. Affiliate (via partner_code no JWT)
│
2. Whitelabel (via message_metadata)
│
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