Decisão: 2026-04-02 Status: Aprovada Aprovado por: Cristiano Bernardes
Regra
O ConvertaFlow usa pool unificado de conexões WhatsApp. O plano define a quantidade total e o cliente escolhe o provider ao criar cada conexão. Não existe separação entre oficial e não-oficial.
Limites por Plano
| Plano | WhatsApp (qualquer tipo) | Telegram | ||
|---|---|---|---|---|
| Essencial | 1 | 1 | 1 | 1 |
| Profissional | 2 | 2 | 2 | 2 |
| Business | 5 | 3 | 3 | 5 |
| Enterprise | 15 | 10 | 10 | 15 |
Providers WhatsApp Disponíveis
| Provider | Método de Conexão | Custo por Mensagem | Indicado para |
|---|---|---|---|
| Evolution API | QR Code | Gratuito | Escala, botões, listas |
| Baileys (Direto) | QR Code | Gratuito | Testes, conexões rápidas |
| WhatsApp Oficial (Meta) | Token WABA | Pago pela Meta | Enterprise, selo verde |
Regras de Negócio
- Pool unificado: 5 conexões WhatsApp = 5 de qualquer tipo (Baileys, Evolution, Meta Cloud)
- Sem markup Meta: ConvertaFlow NÃO cobra taxa sobre conversas da API oficial. Cliente paga Meta diretamente.
- Instagram e Facebook: limites separados, não compartilham pool com WhatsApp
- Telegram: limite separado
- Verificação no frontend:
connections/page.tsxvalidawhatsappCount < plan.maxConnectionsantes de permitir criar
Trial
- Fixo em 7 dias para todos os planos
- Não editável pelo admin (campo removido do formulário de planos)
- Aplicado automaticamente pelo Asaas via
nextDueDate = hoje + 7 dias - Primeira cobrança no 8º dia + 7 dias de garantia CDC
Pesquisa de Mercado (base da decisão)
Pesquisa com 10 plataformas (Kommo, Respond.io, Wati, ManyChat, Z-API, WhaTicket, Evolution, Chatwoot, SleekFlow, Trengo):
- 0% das plataformas separam cotas oficial/não-oficial
- 60% só suportam API oficial
- 20% só suportam não-oficial
- 20% suportam ambos com pool unificado
Implementação Técnica
Banco de dados
Campo max_connections na tabela subscription_plans (schema public) define o limite total de WhatsApp.
Verificação no frontend
// connections/page.tsx
const whatsappCount = sessions.filter(s =>
s.channel === "whatsapp" || s.channel === "whatsapp_oficial"
).length;
const canCreate = whatsappCount < plan.maxConnections;
Provider é escolhido na criação
// Ao criar conexão, o campo "provider" determina o tipo:
// "evolution" → channel: "whatsapp"
// "baileys" → channel: "whatsapp"
// "meta_cloud" → channel: "whatsapp_oficial"
Contagem unificada
Ambos channel: "whatsapp" e channel: "whatsapp_oficial" contam para o mesmo limite maxConnections.