WITHMIA v1.0.8 — プラン制限を本当に効かせる + Webチャットを無料に
プランのすべての上限(ドキュメント、ワークフロー、メンバー、チャネル)をバックエンドで完全に適用しました。無料プランにはWhatsApp + Webチャットが加わり、支払いなしで2つのチャネルから始められます。
WITHMIAチーム
WITHMIA
注記(2026年7月):BusinessとEnterpriseのプランは、現在TeamとMaxという名称になりました。価格は変わりません。
v1.0.7で課金はエラーなく回るようになりました。v1.0.8が塞ぐのは、もっと重大な穴です。各プランの上限が、バックエンドで本当に適用されるようになりました。あわせて無料プランも、WhatsApp + Webチャットを含む形へと魅力を増しています。
問題:制限が実質かかっていなかった
踏み込んだ監査の結果、プランの上限はフロントエンドでしか確認されていないことが分かりました。画面上の鍵アイコン、「PRO」バッジ、サブスクリプションページへの誘導。しかしAPIは完全に開いたままでした。
- 無料プランのユーザーでも、API経由でナレッジベースにドキュメントをアップロードできた
- エンドポイントを直接叩けば、ワークフローを無制限に作成できた
- メンバーを何の制限もなく招待できた
- 実際に制限がかかっていたのは、
AiUsageServiceによるAIメッセージ(月500件)だけだった
これが意味していたこと
技術的な知識が少しあれば、無料プランの制限をすべて回避し、契約せずに有料機能を使えたということです。セキュリティの問題であり、同時にビジネスモデルの問題でもありました。
解決策:PlanEnforcementService
上限チェックのロジックを一箇所に集約するPlanEnforcementServiceを、点検して完成させました。
| メソッド | 確認する内容 | データの参照元 |
|---|---|---|
canUseChannel($company, $channel) | プランで許可されたチャネルか | billing.plans.{tier}.channels |
canAddDocument($company) | RAGドキュメントの上限 | max_documents と KnowledgeDocument::count() |
canCreateWorkflow($company) | n8nワークフローの上限 | max_workflows と WhatsAppInstance::count() |
canAddMember($company) | メンバー数の上限 | max_members と User::count() + TeamInvitation::pending() |
このサービスは企業の有効なプラン(契約がなければfree)を自動で判定し、config/billing.phpから上限値を取得します。
すべてのコントローラーに制限を適用
ChatwootChannelController(すでに実装済み ✅)
チャネル作成の4つのメソッドは、以前からプランを確認していました。
createWebWidget()→canUseChannel($company, 'web')createEmail()→canUseChannel($company, 'email')createInstagram()→canUseChannel($company, 'instagram')createFacebookMessenger()→canUseChannel($company, 'facebook')
DocumentController(新規 🔒)
storeDocumentMetadata()が、レコードを作成する前にcanAddDocument()を確認します- 無料プラン:0件 → 完全にブロック
- Proプラン:最大10件
- Enterprise:無制限(
max_documents = -1)
N8nWorkflowController(新規 🔒)
createWorkflowForCompany()が、n8nを呼び出す前にcanCreateWorkflow()を確認します- 無料プラン:0件 → 完全にブロック
- Proプラン:最大3件
TeamInvitationController(新規 🔒)
store()が、重複チェックの後にcanAddMember()を確認します- 現在のユーザー数 + 保留中の招待を
max_membersと突き合わせます - 無料プラン:最大1名(オーナーのみ)→ 誰も招待できません
上限を超えた場合、すべてのエンドポイントはupgrade_required: trueを含むHTTP 403を返します。フロントエンドはこれを受けてアップグレードの案内を表示します。
Proプラン:5つの上限をすべて適用
Proプラン(月$24.990)は、WITHMIAでもっとも選ばれているプランです。実際の制限適用によって、そのすべての上限がバックエンドで検証されるようになりました。
チャネル:5つすべて ✅
- WhatsApp、Instagram、Facebook Messenger、メール、Webチャット
canUseChannel()がbilling.plans.pro.channelsに設定された5チャネルを許可します- APIアクセスのみ引き続きロック(BusinessまたはEnterpriseが必要)
RAGドキュメント:最大10件 ✅
canAddDocument()が企業のKnowledgeDocumentを数えます- 10件に達すると、エンドポイントはアップグレード案内付きの403を返します
- さらにアップロードするには → Business(50件)またはEnterprise(無制限)へ
ワークフロー:最大3件 ✅
canCreateWorkflow()が、有効なn8n_workflow_idを持つWhatsAppInstanceを数えます- 3件に達すると、新しいボットの作成がブロックされます
- さらに必要なら → Business(10件)またはEnterprise(無制限)へ
メンバー:1名込み + 有料で追加 ✅
canAddMember()がユーザー数 + 保留中の招待をmax_membersと突き合わせます- Proには標準で1名が含まれます
- 追加メンバー:1名につき月$10.500 CLP(Flow.cl / dLocalで決済)
- 決済が確定すると、追加メンバーごとに
max_membersが自動で増えます
AIメッセージ:月2,000件 ✅
AiUsageService.canSendMessage()— v1.0.8以前から実装済み- 90%と100%の時点でメール通知が届きます
- 超過分:追加1,000メッセージごとに$5.990 CLP(最大5,000件まで)
AIモデル:GPT-4o-mini + GPT-4o
getRecommendedModel()がプランに応じて自動で振り分けます- Proでは、メッセージの複雑さに合わせて2つのモデルを使い分けられます
無料プラン:WhatsApp + Webチャットに
戦略的な判断として、無料プランのチャネルをWhatsAppだけから2つに増やしました。
なぜか
Webチャットのウィジェットは、ラテンアメリカではまだ開拓の余地が大きい領域です。無料で提供することで、より多くの企業が自社サイト(WordPress、Shopify、Wix)で気軽にWITHMIAを試し、プラットフォームの価値を自然に実感できるようになります。
実施した変更
| レイヤー | 以前 | 現在 |
|---|---|---|
config/billing.php | channels: ['whatsapp'] | channels: ['whatsapp', 'web'] |
SubscriptionPage.tsx | 「WhatsAppのみ」 | 「WhatsApp + Webチャット」 |
Pricing.tsx(ランディング) | 「1チャネル(WhatsApp)」 | 「2チャネル(WhatsApp + Webチャット)」 |
| 比較表 | 無料プランのWebチャットは ❌ | 無料プランのWebチャットは ✅ |
IntegrationSection.tsx | WebチャットにproOnlyなし | 変更なし(もともと正しい状態) |
無料プランで引き続き制限されるもの
- Instagram、Facebook Messenger、メール → Pro以上が必要
- RAGドキュメント → 0件
- ワークフロー → 0件
- 追加メンバー → オーナーのみ
技術まとめ
変更したファイル
バックエンド:
config/billing.php— free.channelsを['whatsapp', 'web']に更新app/Http/Controllers/Api/DocumentController.php—canAddDocument()による制限適用app/Http/Controllers/Api/N8nWorkflowController.php—canCreateWorkflow()による制限適用app/Http/Controllers/Api/TeamInvitationController.php—canAddMember()による制限適用app/Services/PlanEnforcementService.php— 点検して完成(以前から存在)
アプリのフロントエンド:
resources/js/pages/subscription/SubscriptionPage.tsx— 文言を更新
ランディングページ(WEBPAGE):
WEBPAGE/withmia-main/src/components/Pricing.tsx— 機能一覧、比較表、FAQ
403レスポンスの形式
保護されたエンドポイントは、すべて同じ形式を返します。
{
"success": false,
"error": "Has alcanzado el límite de X de tu plan. Actualiza tu plan para Y.",
"upgrade_required": true
}
v1.0.8は、見た目だけの制限を持つプラットフォームだったWITHMIAを、すべてのエンドポイントで制限が本当に効くプラットフォームへと変えるバージョンです。そして同時に、Webチャットを含めることで無料プランをより魅力的にしました。セキュリティと成長を、ひとつのアップデートで。
ラベル
コメント
敬意をもってご記入ください。メールアドレスは公開されません。