flag92 flag92
Blog
Published Tue Mar 10 2026 08:00:00 GMT+0800 (中国标准时间)
deep-diveChatwoot

Chatwoot deep review — 6 months in production, the unvarnished take

We ran Chatwoot 4.x in production for 6 months — 40k+ tickets, 12 agents, full debrief on Inbox, Captain, API and gotchas.

What we tried first#

  • Intercom: great UX, monthly bill breached $2000 — out
  • Crisp: nice UX, weak AI, shallow API
  • Zendesk: overdesigned ticketing for SMB
  • Help Scout: email king, real-time and mobile weak
  • Papercups: Elixir ops overhead

Picked Chatwoot for MIT license, one-click Docker, active community and good-enough Captain.

Six months in numbers#

MetricValue
Tickets41,283
Active agents12
Primary channelsWeb widget, email, WhatsApp, Discord
Avg ticket duration2m 14s with AI involvement
Downtime47 minutes total (one bad upgrade + three OOMs)

Inbox system#

Chatwoot abstracts every channel as an Inbox. Each can:

  • Auto-assign (round-robin, skill, customer label)
  • Enable Captain or Agent Bot
  • Set business hours, away replies
  • Bind to teams and SLAs

Gotcha: deleting an inbox is irreversible — historical conversations lose their channel link. Back up first.

Captain in practice#

Captain is Chatwoot’s built-in AI helper. We use it as a second-line catch.

Wins#

  • Live in 5 minutes
  • KB supports URL crawl, Markdown upload, auto-sync
  • Workflow handles simple intents like “look up my order”

Misses#

  • Far fewer workflow nodes than Dify (no code, no concurrency)
  • KB chunking not customizable
  • Single LLM config (no per-inbox model)

Our trade-off#

Captain handles public FAQ. Complex business goes to Dify. Switching is just an Inbox config (Captain vs Agent Bot).

API + webhooks — most underrated#

Use caseHow
Ticket → NotionWebhook → n8n → Notion DB
High priority → Lark/SlackWebhook → Lark Bot
Monthly CSAT reportCron → API → Metabase
Sensitive keyword → escalatePre-submit hook → keyword dict

Deployment notes#

ScaleSpec
< 5 agents, < 1k tickets/mo2C / 4 GB VPS
10 agents, 5k tickets/mo4C / 8 GB VPS
30 agents, 30k tickets/moTwo 8C/16 GB + external Postgres

Three production scars#

  1. OOM: Sidekiq dies under multi-channel concurrency. Fix: split Sidekiq process, cap Redis memory
  2. Email loops: misconfigured Reply-to means infinite ping-pong. Fix: dedicated sender address per email inbox
  3. Postgres slow query: missing composite index. Fix: add conversations(account_id, status) index

Fits / doesn’t fit#

FitsDoesn’t
SMB replacing IntercomEnterprise with rigid ticket flows
Multi-channel intakeEmail-only (FreeScout is lighter)
Data sovereigntyZero ops capacity
Comfortable with light customizationPure SaaS lovers

Overall#

AxisScore
Feature coverage8
Deploy difficulty6
Community health9
AI capability6
Hackability8
Overall7.4

Best combo after 6 months: Chatwoot as inbox, Dify as brain, n8n as orchestration — that’s the default we now recommend.

Search

Press ⌘ K to open