WITHMIA v1.0.8 — Des limites d'offre réellement appliquées + Web Chat gratuit
Mise en place complète de l'application des limites côté backend (documents, workflows, membres, canaux). L'offre Gratuite inclut désormais WhatsApp + Web Chat — deux canaux pour démarrer sans payer.
Équipe WITHMIA
WITHMIA
Note (juillet 2026) : les offres Business et Enterprise s’appellent aujourd’hui Team et Max. Les tarifs restent identiques.
La v1.0.7 a rendu la facturation irréprochable. La v1.0.8 comble une faille critique : les limites de chaque offre sont désormais réellement appliquées côté backend, et l’offre Gratuite devient plus attractive avec WhatsApp + Web Chat inclus.
Le problème : des limites qui n’en étaient pas
Un audit approfondi a révélé que les limites d’offre n’étaient vérifiées que côté frontend — cadenas visuels, badges « PRO » et redirections vers la page d’abonnement. Mais les API étaient grandes ouvertes :
- Un utilisateur de l’offre Gratuite pouvait envoyer des documents dans la base de connaissances via l’API
- Il pouvait créer des workflows sans limite en appelant directement l’endpoint
- Il pouvait inviter des membres sans la moindre restriction
- Seuls les messages IA (500/mois) faisaient l’objet d’un contrôle réel, via
AiUsageService
Qu’est-ce que cela impliquait ?
Que n’importe qui d’un peu technique pouvait contourner toutes les restrictions de l’offre Gratuite et utiliser des fonctionnalités payantes sans s’abonner. Un problème de sécurité autant que de modèle économique.
La solution : PlanEnforcementService
Nous avons vérifié et complété le service PlanEnforcementService, qui centralise toute la logique de contrôle des limites :
| Méthode | Ce qu’elle vérifie | Source de données |
|---|---|---|
canUseChannel($company, $channel) | Canal autorisé dans l’offre | billing.plans.{tier}.channels |
canAddDocument($company) | Limite de documents RAG | max_documents vs KnowledgeDocument::count() |
canCreateWorkflow($company) | Limite de workflows n8n | max_workflows vs WhatsAppInstance::count() |
canAddMember($company) | Limite de membres | max_members vs User::count() + TeamInvitation::pending() |
Le service résout automatiquement l’offre active de l’entreprise (ou free en l’absence d’abonnement) et consulte config/billing.php pour connaître les limites.
Contrôle appliqué dans tous les contrôleurs
ChatwootChannelController (déjà en place ✅)
Les 4 méthodes de création de canal vérifiaient déjà l’offre :
createWebWidget()→canUseChannel($company, 'web')createEmail()→canUseChannel($company, 'email')createInstagram()→canUseChannel($company, 'instagram')createFacebookMessenger()→canUseChannel($company, 'facebook')
DocumentController (nouveau 🔒)
storeDocumentMetadata()vérifie désormaiscanAddDocument()avant de créer l’enregistrement- Offre Gratuite : 0 document → totalement bloqué
- Offre Pro : 10 documents maximum
- Enterprise : illimité (
max_documents = -1)
N8nWorkflowController (nouveau 🔒)
createWorkflowForCompany()vérifie désormaiscanCreateWorkflow()avant d’appeler n8n- Offre Gratuite : 0 workflow → totalement bloqué
- Offre Pro : 3 workflows maximum
TeamInvitationController (nouveau 🔒)
store()vérifie désormaiscanAddMember()après le contrôle des doublons- Compte les utilisateurs actuels + les invitations en attente face à
max_members - Offre Gratuite : 1 membre maximum (le propriétaire) → aucune invitation possible
Tous les endpoints renvoient un HTTP 403 avec upgrade_required: true lorsque la limite est dépassée, ce qui permet au frontend d’afficher l’invitation à monter en gamme.
Offre Pro : ses 5 limites entièrement appliquées
L’offre Pro ($24.990/mois) est la plus populaire de WITHMIA. Avec le contrôle réel, chacune de ses limites est désormais validée côté backend :
Canaux : les 5, au complet ✅
- WhatsApp, Instagram, Facebook Messenger, E-mail, Web Chat
canUseChannel()autorise les 5 canaux configurés dansbilling.plans.pro.channels- Seul l’accès API reste verrouillé (il faut Business ou Enterprise)
Documents RAG : 10 maximum ✅
canAddDocument()compte lesKnowledgeDocumentde l’entreprise- À 10, l’endpoint renvoie un 403 avec un message de montée en gamme
- Pour en ajouter davantage → passer à Business (50) ou Enterprise (illimité)
Workflows : 3 maximum ✅
canCreateWorkflow()compte lesWhatsAppInstancedotées d’unn8n_workflow_idactif- À 3, la création de nouveaux bots est bloquée
- Pour aller plus loin → passer à Business (10) ou Enterprise (illimité)
Membres : 1 inclus + extras payants ✅
canAddMember()compte les utilisateurs + les invitations en attente face àmax_members- Pro inclut 1 membre par défaut
- Membres supplémentaires : $10.500 CLP/mois chacun (paiement via Flow.cl/dLocal)
- Chaque membre supplémentaire incrémente automatiquement
max_membersune fois le paiement confirmé
Messages IA : 2 000/mois ✅
AiUsageService.canSendMessage()— déjà en place avant la v1.0.8- Des alertes par e-mail partent à 90 % et 100 %
- Dépassements : $5.990 CLP par tranche de 1 000 messages supplémentaires (5 000 au maximum)
Modèles d’IA : GPT-4o-mini + GPT-4o
getRecommendedModel()effectue le routage automatique selon l’offre- Pro peut utiliser les deux modèles selon la complexité du message
Offre Gratuite : désormais avec WhatsApp + Web Chat
Décision stratégique : l’offre Gratuite inclut maintenant 2 canaux au lieu du seul WhatsApp.
Pourquoi ?
Le widget de chat web est un marché encore peu exploité en Amérique latine. L’offrir gratuitement permet à davantage d’entreprises d’essayer WITHMIA sur leur propre site (WordPress, Shopify, Wix) sans engagement, et de découvrir la valeur de la plateforme de façon organique.
Ce qui a changé
| Couche | Avant | Maintenant |
|---|---|---|
config/billing.php | channels: ['whatsapp'] | channels: ['whatsapp', 'web'] |
SubscriptionPage.tsx | « WhatsApp uniquement » | « WhatsApp + Web Chat » |
Pricing.tsx (landing) | « 1 canal (WhatsApp) » | « 2 canaux (WhatsApp + Web Chat) » |
| Tableau comparatif | Web chat ❌ pour l’offre gratuite | Web chat ✅ pour l’offre gratuite |
IntegrationSection.tsx | Web chat sans proOnly | Aucun changement (déjà correct) |
Ce qui reste bloqué en Gratuit
- Instagram, Facebook Messenger, E-mail → nécessitent Pro ou au-delà
- Documents RAG → 0 autorisé
- Workflows → 0 autorisé
- Membres supplémentaires → le propriétaire uniquement
Récapitulatif technique
Fichiers modifiés
Backend :
config/billing.php— free.channels passé à['whatsapp', 'web']app/Http/Controllers/Api/DocumentController.php— contrôle aveccanAddDocument()app/Http/Controllers/Api/N8nWorkflowController.php— contrôle aveccanCreateWorkflow()app/Http/Controllers/Api/TeamInvitationController.php— contrôle aveccanAddMember()app/Services/PlanEnforcementService.php— vérifié et complété (existait déjà)
Frontend de l’APP :
resources/js/pages/subscription/SubscriptionPage.tsx— textes mis à jour
Landing page (WEBPAGE) :
WEBPAGE/withmia-main/src/components/Pricing.tsx— fonctionnalités, tableau comparatif et FAQ
Format de réponse 403
Tous les endpoints protégés renvoient le même format :
{
"success": false,
"error": "Has alcanzado el límite de X de tu plan. Actualiza tu plan para Y.",
"upgrade_required": true
}
La v1.0.8 fait passer WITHMIA d’une plateforme aux restrictions cosmétiques à une plateforme dotée d’un contrôle réel sur chaque endpoint. Et dans le même mouvement, elle rend l’offre Gratuite plus séduisante avec le Web Chat inclus. Sécurité et croissance dans une seule mise à jour.
Étiquettes
Commentaires
Restez respectueux. Votre e-mail ne sera pas publié.