WITHMIA v1.0.8 — Limites de plano de verdade + Web Chat grátis
Implementação completa de enforcement no backend para todos os limites de plano (documentos, workflows, membros, canais). O plano Grátis agora inclui WhatsApp + Web Chat — dois canais para começar sem pagar.
Equipe WITHMIA
WITHMIA
Nota (julho de 2026): os planos Business e Enterprise hoje se chamam Team e Max. Os preços continuam os mesmos.
A v1.0.7 deixou o billing funcionando sem erros. A v1.0.8 fecha uma brecha crítica: os limites de cada plano agora são aplicados de verdade no backend, e o plano Grátis fica mais competitivo com WhatsApp + Web Chat incluídos.
O problema: enforcement inexistente
Uma auditoria profunda revelou que os limites de plano só eram verificados no frontend — cadeados visuais, selos “PRO” e redirecionamentos para a página de assinatura. Mas as APIs estavam completamente abertas:
- Uma pessoa no plano Grátis podia subir documentos para a base de conhecimento via API
- Podia criar workflows ilimitados chamando o endpoint diretamente
- Podia convidar membros sem nenhuma restrição
- Só as mensagens de IA (500/mês) tinham enforcement real, via
AiUsageService
O que isso significava?
Que qualquer pessoa com conhecimento técnico podia pular todas as restrições do plano Grátis e usar recursos pagos sem assinar. Um problema de segurança e de modelo de negócio ao mesmo tempo.
A solução: PlanEnforcementService
Revisamos e completamos o serviço PlanEnforcementService, que centraliza toda a lógica de verificação de limites:
| Método | O que verifica | Fonte de dados |
|---|---|---|
canUseChannel($company, $channel) | Canal permitido no plano | billing.plans.{tier}.channels |
canAddDocument($company) | Limite de documentos RAG | max_documents vs KnowledgeDocument::count() |
canCreateWorkflow($company) | Limite de workflows n8n | max_workflows vs WhatsAppInstance::count() |
canAddMember($company) | Limite de membros | max_members vs User::count() + TeamInvitation::pending() |
O serviço resolve automaticamente o plano ativo da empresa (ou free, se não houver assinatura) e consulta o config/billing.php para obter os limites.
Enforcement aplicado em todos os controllers
ChatwootChannelController (já existia ✅)
Os 4 métodos de criação de canal já verificavam o plano:
createWebWidget()→canUseChannel($company, 'web')createEmail()→canUseChannel($company, 'email')createInstagram()→canUseChannel($company, 'instagram')createFacebookMessenger()→canUseChannel($company, 'facebook')
DocumentController (novo 🔒)
- O
storeDocumentMetadata()agora verificacanAddDocument()antes de criar o registro - Plano Grátis: 0 documentos → bloqueado por completo
- Plano Pro: no máximo 10 documentos
- Enterprise: ilimitado (
max_documents = -1)
N8nWorkflowController (novo 🔒)
- O
createWorkflowForCompany()agora verificacanCreateWorkflow()antes de chamar o n8n - Plano Grátis: 0 workflows → bloqueado por completo
- Plano Pro: no máximo 3 workflows
TeamInvitationController (novo 🔒)
- O
store()agora verificacanAddMember()depois de validar duplicados - Conta usuários atuais + convites pendentes contra
max_members - Plano Grátis: no máximo 1 membro (o dono) → não pode convidar ninguém
Todos os endpoints retornam HTTP 403 com upgrade_required: true quando o limite é excedido, permitindo que o frontend mostre o convite ao upgrade.
Plano Pro: enforcement completo dos seus 5 limites
O plano Pro ($24.990/mês) é o mais popular da WITHMIA. Com o enforcement real, agora cada um dos seus limites é validado no backend:
Canais: os 5 completos ✅
- WhatsApp, Instagram, Facebook Messenger, E-mail, Web Chat
- O
canUseChannel()libera os 5 canais configurados embilling.plans.pro.channels - Só o Acesso à API segue bloqueado (exige Business ou Enterprise)
Documentos RAG: no máximo 10 ✅
- O
canAddDocument()conta osKnowledgeDocumentda empresa - Ao chegar a 10, o endpoint retorna 403 com mensagem de upgrade
- Para subir mais → upgrade para Business (50) ou Enterprise (ilimitado)
Workflows: no máximo 3 ✅
- O
canCreateWorkflow()conta asWhatsAppInstancecomn8n_workflow_idativo - Ao chegar a 3, a criação de novos bots é bloqueada
- Para mais → upgrade para Business (10) ou Enterprise (ilimitado)
Membros: 1 incluído + extras pagos ✅
- O
canAddMember()conta usuários + convites pendentes contramax_members - O Pro inclui 1 membro por padrão
- Membros adicionais: $10.500 CLP/mês cada um (pagamento via Flow.cl/dLocal)
- Cada membro extra incrementa
max_membersautomaticamente após a confirmação do pagamento
Mensagens de IA: 2.000/mês ✅
AiUsageService.canSendMessage()— já existia antes da v1.0.8- A 90% e 100% saem alertas por e-mail
- Excedentes: $5.990 CLP a cada 1.000 mensagens extras (máximo de 5.000 extras)
Modelos de IA: GPT-4o-mini + GPT-4o
- O
getRecommendedModel()roteia automaticamente conforme o plano - O Pro pode usar os dois modelos, dependendo da complexidade da mensagem
Plano Grátis: agora com WhatsApp + Web Chat
Decisão estratégica: o plano Grátis agora inclui 2 canais em vez de só WhatsApp.
Por quê?
O widget de chat web é um mercado pouco explorado na América Latina. Oferecê-lo de graça permite que mais empresas experimentem a WITHMIA no próprio site (WordPress, Shopify, Wix) sem compromisso, e descubram o valor da plataforma de forma orgânica.
Mudanças realizadas
| Camada | Antes | Agora |
|---|---|---|
config/billing.php | channels: ['whatsapp'] | channels: ['whatsapp', 'web'] |
SubscriptionPage.tsx | ”Só WhatsApp" | "WhatsApp + Web Chat” |
Pricing.tsx (landing) | “1 canal (WhatsApp)" | "2 canais (WhatsApp + Web Chat)“ |
| Tabela comparativa | Web chat ❌ no grátis | Web chat ✅ no grátis |
IntegrationSection.tsx | Web chat sem proOnly | Sem mudanças (já estava certo) |
O que segue bloqueado no Grátis
- Instagram, Facebook Messenger, E-mail → exigem Pro ou superior
- Documentos RAG → 0 permitidos
- Workflows → 0 permitidos
- Membros adicionais → só o dono
Resumo técnico
Arquivos modificados
Backend:
config/billing.php— free.channels atualizado para['whatsapp', 'web']app/Http/Controllers/Api/DocumentController.php— enforcement comcanAddDocument()app/Http/Controllers/Api/N8nWorkflowController.php— enforcement comcanCreateWorkflow()app/Http/Controllers/Api/TeamInvitationController.php— enforcement comcanAddMember()app/Services/PlanEnforcementService.php— revisado e completo (já existia)
Frontend do APP:
resources/js/pages/subscription/SubscriptionPage.tsx— texto atualizado
Landing page (WEBPAGE):
WEBPAGE/withmia-main/src/components/Pricing.tsx— features, tabela comparativa e FAQ
Padrão de resposta 403
Todos os endpoints protegidos retornam o mesmo formato:
{
"success": false,
"error": "Has alcanzado el límite de X de tu plan. Actualiza tu plan para Y.",
"upgrade_required": true
}
A v1.0.8 transforma a WITHMIA de uma plataforma com restrições cosméticas em uma com enforcement real em cada endpoint. E, ao mesmo tempo, deixa o plano Grátis mais atraente com o Web Chat incluído. Segurança e crescimento em uma única atualização.
Etiquetas
Comentários
Seja respeitoso. Seu e-mail não será publicado.