Saltar al contenido
Producto · 5 min de lectura

WITHMIA v1.0.8 — Enforcement Real de Planes + Web Chat Gratis

Implementación completa de enforcement backend para todos los límites de plan (documentos, workflows, miembros, canales). El plan Gratis ahora incluye WhatsApp + Web Chat — dos canales para empezar sin pagar.

E

Equipo WITHMIA

WITHMIA

La v1.0.7 dejó el billing funcionando sin errores. La v1.0.8 cierra una brecha crítica: los límites de cada plan ahora se aplican realmente en el backend, y el plan Gratis se vuelve más competitivo con WhatsApp + Web Chat incluidos.

El problema: enforcement inexistente

Una auditoría profunda reveló que los límites de plan solo se verificaban en el frontend — locks visuales, badges “PRO” y redirecciones a la página de suscripción. Pero las APIs estaban completamente abiertas:

  • Un usuario del plan Gratis podía subir documentos a la base de conocimiento vía API
  • Podía crear workflows ilimitados llamando al endpoint directamente
  • Podía invitar miembros sin restricción alguna
  • Solo los mensajes IA (500/mes) tenían enforcement real vía AiUsageService

¿Qué significaba esto?

Que cualquier usuario con conocimientos técnicos podía saltarse todas las restricciones del plan Gratis y usar features de pago sin suscribirse. Un problema de seguridad y modelo de negocio.

La solución: PlanEnforcementService

Se verificó y completó el servicio PlanEnforcementService que centraliza toda la lógica de verificación de límites:

MétodoQué verificaFuente de datos
canUseChannel($company, $channel)Canal permitido en el planbilling.plans.{tier}.channels
canAddDocument($company)Límite de documentos RAGmax_documents vs KnowledgeDocument::count()
canCreateWorkflow($company)Límite de workflows n8nmax_workflows vs WhatsAppInstance::count()
canAddMember($company)Límite de miembrosmax_members vs User::count() + TeamInvitation::pending()

El servicio resuelve automáticamente el plan activo de la empresa (o free si no tiene suscripción) y consulta config/billing.php para obtener los límites.

Enforcement aplicado en todos los controllers

ChatwootChannelController (ya existía ✅)

Los 4 métodos de creación de canal ya verificaban el plan:

  • createWebWidget()canUseChannel($company, 'web')
  • createEmail()canUseChannel($company, 'email')
  • createInstagram()canUseChannel($company, 'instagram')
  • createFacebookMessenger()canUseChannel($company, 'facebook')

DocumentController (nuevo 🔒)

  • storeDocumentMetadata() ahora verifica canAddDocument() antes de crear el registro
  • Plan Gratis: 0 documentos → bloqueado completamente
  • Plan Pro: máximo 10 documentos
  • Enterprise: ilimitado (max_documents = -1)

N8nWorkflowController (nuevo 🔒)

  • createWorkflowForCompany() ahora verifica canCreateWorkflow() antes de llamar a n8n
  • Plan Gratis: 0 workflows → bloqueado completamente
  • Plan Pro: máximo 3 workflows

TeamInvitationController (nuevo 🔒)

  • store() ahora verifica canAddMember() después de validar duplicados
  • Cuenta usuarios actuales + invitaciones pendientes vs max_members
  • Plan Gratis: máximo 1 miembro (el owner) → no puede invitar a nadie

Todos los endpoints retornan HTTP 403 con upgrade_required: true cuando el límite se excede, permitiendo al frontend mostrar el prompt de upgrade.

Plan Pro: enforcement completo de sus 5 límites

El plan Pro ($24.990/mes) es el más popular de WITHMIA. Con el enforcement real, ahora cada uno de sus límites se valida en el backend:

Canales: 5 canales completos ✅

  • WhatsApp, Instagram, Facebook Messenger, Email, Web Chat
  • canUseChannel() permite los 5 canales configurados en billing.plans.pro.channels
  • Solo Acceso API queda bloqueado (requiere Business o Enterprise)

Documentos RAG: máximo 10 ✅

  • canAddDocument() cuenta los KnowledgeDocument de la empresa
  • Si tiene 10, el endpoint retorna 403 con mensaje de upgrade
  • Para subir más → upgrade a Business (50) o Enterprise (ilimitado)

Workflows: máximo 3 ✅

  • canCreateWorkflow() cuenta las WhatsAppInstance con n8n_workflow_id activo
  • Si tiene 3, se bloquea la creación de nuevos bots
  • Para más → upgrade a Business (10) o Enterprise (ilimitado)

Miembros: 1 incluido + extras de pago ✅

  • canAddMember() cuenta usuarios + invitaciones pendientes vs max_members
  • Pro incluye 1 miembro por defecto
  • Miembros adicionales: $10.500 CLP/mes cada uno (pago vía Flow.cl/dLocal)
  • Cada miembro extra incrementa max_members automáticamente tras confirmar pago

Mensajes IA: 2.000/mes ✅

  • AiUsageService.canSendMessage() — ya existía antes de v1.0.8
  • Al 90% y 100% se envían alertas por email
  • Excedentes: $5.990 CLP por cada 1.000 mensajes extra (máximo 5.000 extra)

Modelos IA: GPT-4o-mini + GPT-4o

  • getRecommendedModel() rutea automáticamente según plan
  • Pro puede utilizar ambos modelos según la complejidad del mensaje

Plan Gratis: ahora con WhatsApp + Web Chat

Decisión estratégica: el plan Gratis ahora incluye 2 canales en vez de solo WhatsApp.

¿Por qué?

El widget de chat web es un mercado poco explotado en Latinoamérica. Ofrecerlo gratis permite que más empresas prueben WITHMIA en su sitio web (WordPress, Shopify, Wix) sin compromiso, y descubran el valor de la plataforma de forma orgánica.

Cambios realizados

CapaAntesAhora
config/billing.phpchannels: ['whatsapp']channels: ['whatsapp', 'web']
SubscriptionPage.tsx”Solo WhatsApp""WhatsApp + Web Chat”
Pricing.tsx (landing)“1 canal (WhatsApp)""2 canales (WhatsApp + Web Chat)“
Tabla comparativaWeb chat ❌ para gratisWeb chat ✅ para gratis
IntegrationSection.tsxWeb chat sin proOnlySin cambios (ya correcto)

Lo que sigue bloqueado en Gratis

  • Instagram, Facebook Messenger, Email → requieren Pro o superior
  • Documentos RAG → 0 permitidos
  • Workflows → 0 permitidos
  • Miembros adicionales → solo el owner

Resumen técnico

Archivos modificados

Backend:

  • config/billing.php — free.channels actualizado a ['whatsapp', 'web']
  • app/Http/Controllers/Api/DocumentController.php — enforcement con canAddDocument()
  • app/Http/Controllers/Api/N8nWorkflowController.php — enforcement con canCreateWorkflow()
  • app/Http/Controllers/Api/TeamInvitationController.php — enforcement con canAddMember()
  • app/Services/PlanEnforcementService.php — verificado y completo (ya existía)

Frontend APP:

  • resources/js/pages/subscription/SubscriptionPage.tsx — texto actualizado

Landing page (WEBPAGE):

  • WEBPAGE/withmia-main/src/components/Pricing.tsx — features, tabla comparativa y FAQ

Patrón de respuesta 403

Todos los endpoints protegidos retornan el mismo formato:

{
  "success": false,
  "error": "Has alcanzado el límite de X de tu plan. Actualiza tu plan para Y.",
  "upgrade_required": true
}

v1.0.8 transforma WITHMIA de una plataforma con restricciones cosméticas a una con enforcement real en cada endpoint. Y al mismo tiempo, hace el plan Gratis más atractivo con Web Chat incluido. Seguridad y crecimiento en una sola actualización.

Etiquetas

actualización v1.0.8 producto enforcement planes web-chat seguridad canales

Compartir

Comentarios

Sé respetuoso. Tu email no será publicado.

Artículos relacionados

¿Quieres implementar esto en tu negocio?

Empieza gratis con WITHMIA. Sin tarjeta de crédito.

Comenzar gratis