コンテンツへスキップ
商品 · 読了時間 5 分

WITHMIA v1.0.8 — プラン制限を本当に効かせる + Webチャットを無料に

プランのすべての上限(ドキュメント、ワークフロー、メンバー、チャネル)をバックエンドで完全に適用しました。無料プランにはWhatsApp + Webチャットが加わり、支払いなしで2つのチャネルから始められます。

W

WITHMIAチーム

WITHMIA

注記(2026年7月):BusinessEnterpriseのプランは、現在TeamMaxという名称になりました。価格は変わりません。

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_documentsKnowledgeDocument::count()
canCreateWorkflow($company)n8nワークフローの上限max_workflowsWhatsAppInstance::count()
canAddMember($company)メンバー数の上限max_membersUser::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.phpchannels: ['whatsapp']channels: ['whatsapp', 'web']
SubscriptionPage.tsx「WhatsAppのみ」「WhatsApp + Webチャット」
Pricing.tsx(ランディング)「1チャネル(WhatsApp)」「2チャネル(WhatsApp + Webチャット)」
比較表無料プランのWebチャットは ❌無料プランのWebチャットは ✅
IntegrationSection.tsxWebチャットにproOnlyなし変更なし(もともと正しい状態)

無料プランで引き続き制限されるもの

  • Instagram、Facebook Messenger、メール → Pro以上が必要
  • RAGドキュメント → 0件
  • ワークフロー → 0件
  • 追加メンバー → オーナーのみ

技術まとめ

変更したファイル

バックエンド:

  • config/billing.php — free.channelsを['whatsapp', 'web']に更新
  • app/Http/Controllers/Api/DocumentController.phpcanAddDocument()による制限適用
  • app/Http/Controllers/Api/N8nWorkflowController.phpcanCreateWorkflow()による制限適用
  • app/Http/Controllers/Api/TeamInvitationController.phpcanAddMember()による制限適用
  • 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チャットを含めることで無料プランをより魅力的にしました。セキュリティと成長を、ひとつのアップデートで。

ラベル

アップデート v1.0.8 プロダクト 制限の適用 プラン Webチャット セキュリティ チャネル

シェア

Twitter LinkedIn WhatsApp

コメント

敬意をもってご記入ください。メールアドレスは公開されません。

関連記事

これをあなたのビジネスでも実現しませんか?

14日間無料でお試しください。クレジットカードは不要です。

14日間無料で試す