chatwoot/chatwoot
Open-source live-chat, email support, omni-channel desk. An alternative to Intercom, Zendesk, Salesforce Service Cloud etc. 🔥💬
How chatwoot is put together
Chatwoot is an open-source, self-hosted omnichannel customer support platform (an alternative to Intercom/Zendesk) that centralizes conversations from live chat, email, social channels, and messaging apps into a single agent inbox. It is a Ruby on Rails 7.2 monolith (Ruby 3.4) exposing REST APIs and ActionCable websockets, with a Vue 3 single-page frontend (Vuex/Pinia, Vue Router) bundled via Vite, plus a separately-built embeddable JS widget/SDK. Data flows from channel integrations and API/websocket requests through Rails controllers, Pundit-authorized service objects, and Sidekiq background jobs into PostgreSQL (with pgvector, pg_search, OpenSearch/Searchkick) and Redis, with an event pub/sub layer (wisper). It bundles AI ('Captain') features via ruby-openai/ruby_llm and an enterprise/ edition overlay.
Languages
Frameworks
Datastores
Infrastructure
Major components
Rails backend API & controllers
Serves REST API endpoints, ActionMailbox inbound mail, and web routes for accounts, conversations, contacts, and agents (config/routes.rb).
Vue dashboard frontend
The agent-facing SPA under app/javascript/dashboard providing the inbox, reports, and settings UI.
Embeddable widget & SDK
Website live-chat widget and JS SDK built as a standalone IIFE bundle (app/javascript/entrypoints/sdk.js, vite.lib.config.ts).
Channel integrations
Connectors for Facebook, Instagram, Twitter, WhatsApp/Twilio, Line, Slack, email etc. via gems like facebook-messenger, twilio-ruby, line-bot-api, koala, slack-ruby-client.
Sidekiq background jobs
Asynchronous processing and cron jobs (config/sidekiq.yml, config/schedule.yml) for notifications, imports, and channel sync.
Captain / AI response bot
LLM-powered support automation using ruby-openai, ruby_llm, ai-agents, neighbor/pgvector for semantic search.
Enterprise edition overlay
Additional non-MIT features and views layered via the enterprise/ directory and tasks_railtie.
Superadmin & config management
Administrate-based super admin console plus global/installation config loading (lib/global_config.rb, config/installation_config.yml).
A focused week of targeted bug fixes, performance tuning, and a Captain dashboard redesign.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
A focused week of targeted bug fixes, performance tuning, and a Captain dashboard redesign.
Week of 2026-08-17
A large release week (4.17.0) featuring WhatsApp campaign analytics, audit-log tooling, and numerous security and reliability fixes.
Week of 2026-08-10
A busy week adding macro shortcuts and canned-response caching while hardening CSV exports and search against malformed input.
Week of 2026-08-03
A wide-ranging week extending Captain assistant controls, adding a Freshdesk migration path, and tightening WhatsApp and security behavior.
Week of 2026-07-27
A foundational week introducing time-based automation and normalized Captain lifecycle events alongside WhatsApp and security hardening.
Over the past few weeks Chatwoot has invested heavily in its Captain AI assistant (moving to a V2 model, adding scheduling, outcome reporting, and smarter reply handling) and in WhatsApp features like campaign analytics and click-to-chat ads. Alongside these new capabilities, the team shipped a steady stream of security hardening, performance optimizations, and bug fixes across conversations, filters, and channel integrations. The arc shows a maturing product balancing ambitious AI features with reliability and safety improvements.
Week by week
2026-08-24A focused week of targeted bug fixes, performance tuning, and a Captain dashboard redesign.latest6 changes
Fix
Automation rules stop mis-splitting text on commas
Content filters that contained commas (like 'hello, world') are now treated as a single value instead of being incorrectly broken apart.
Fix
Instagram business login restored
Corrected the Instagram authorization flow so users can once again connect their business accounts.
Feature
Redesigned Captain assistant overview dashboard
The AI assistant's main overview screen was given a refreshed layout and design.
Refactor
Faster user sign-in
Removed repeated database lookups when building a user's login data to speed up authentication.
Refactor
Smaller live-chat widget download
Reduced the size of the embeddable chat script so it loads faster on customer websites.
Docs
Documented message read-status APIs
Added developer documentation explaining how to report sent, delivered, and read status for API-channel messages.
2026-08-17A large release week (4.17.0) featuring WhatsApp campaign analytics, audit-log tooling, and numerous security and reliability fixes.6 changes
Feature
WhatsApp campaign analytics
Added tracking, a delivery analytics dashboard, and clearer status labels so teams can measure how their WhatsApp campaigns perform.
Feature
Audit log filtering, search, and sort
Administrators can now filter, search, and sort the record of account activity to find events more easily.
Fix
Blocked resurfacing of resolved chats from the widget
Prevented customers from accidentally reopening already-resolved conversations through the chat widget.
Fix
Security: identity labels rendered as plain text
Contact identity labels are now displayed safely to prevent malicious code from being injected.
Fix
Security: account-scoped conversation lookups
Restricted conversation source lookups to the current account so data can't leak across accounts.
Feature
Captain outcome statistics exposed
Made the AI assistant's resolution outcome data available for reporting.
2026-08-10A busy week adding macro shortcuts and canned-response caching while hardening CSV exports and search against malformed input.6 changes
Feature
Run macros from the command bar and reply editor
Agents can now trigger saved action sequences directly from the command bar or by typing '#' in the reply box.
Fix
Security: CSV exports escape formula characters
Contact and CSAT exports now neutralize spreadsheet formulas so opening a file can't run unintended commands.
Feature
Browser caching for canned responses
Saved reply templates are stored in the browser so they load instantly.
Feature
Transcribe Twilio call recordings
Voice call recordings from Twilio can now be automatically transcribed to text.
Refactor
Faster conversation sorting
Added a database index to speed up sorting conversations by creation date within an account.
Fix
Reject malformed filter and search input
Search and filters now gracefully handle bad or empty input instead of returning server errors.
2026-08-03A wide-ranging week extending Captain assistant controls, adding a Freshdesk migration path, and tightening WhatsApp and security behavior.6 changes
Feature
Audience and schedule controls for Captain assistants
Admins can now define which audiences an AI assistant serves and when it is active.
Feature
Freshdesk data migration
Began adding the ability to import existing data from Freshdesk into Chatwoot.
Feature
Data imports enabled for paid plans
Paid customers can now import their data, with automatic default naming for imports.
Fix
Security: gated SLA features and inbox access
Restricted SLA APIs and inbox access to properly scoped, feature-enabled accounts.
Feature
Backup-code low-count reminder banner
Users are now nudged with a dashboard banner when their two-factor backup codes are running low.
Fix
Prevent duplicate assignment activity
Stopped duplicate assignment records from appearing when conversations are assigned at the same time.
2026-07-27A foundational week introducing time-based automation and normalized Captain lifecycle events alongside WhatsApp and security hardening.6 changes
Feature
Time-based automation
Added the ability to run automation rules based on time conditions.
Feature
Pending conversation takeover UI
Added an interface letting agents take over conversations that are pending.
Refactor
Normalized Captain lifecycle events
Reworked the AI assistant's internal event handling for more consistent behavior.
Fix
Captain replies to message bursts once
The AI assistant now consolidates rapid-fire customer messages into a single reply instead of responding to each.
Fix
Reject cross-account help-center article edits
Prevented users from modifying help-center articles belonging to another account.
Fix
Consolidated widget rate-limiting controls
Unified the chat widget's request throttling with per-endpoint kill switches and saner default limits.
Dependencies and code review
Dependency advisories
Security Watch
4 vulnerable packages (14 advisories) across 113 scanned dependencies.
vitest 3.0.5
1 advisory. Fixed in 4.1.0.
How it can be abusedIf a developer runs the test suite with the Vitest browser UI enabled on their machine, anyone on that network could use the exposed test server to read arbitrary files or run code on that developer's computer. This affects developers running tests locally, not the deployed Chatwoot application or its users.
- criticalGHSA-5xrq-8626-4rwpWhen Vitest UI server is listening, arbitrary file can be read and executed
axios 1.15.0
11 advisories. Fixed in 1.16.0.
How it can be abusedAn attacker who can influence request configuration could hijack outgoing HTTP requests, steal credentials sent to proxies, tamper with responses, or crash the process with crafted input. In Chatwoot, axios runs mainly in the browser-based Vue frontend talking to its own API over same-origin requests, so an attacker would already need to run code on a user's browser session to exploit this, which limits practical impact.
- highGHSA-35jp-ww65-95whaxios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `config.proxy`
- highGHSA-3g43-6gmg-66jwaxios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollution Gadget in Config Merge
- highGHSA-6chq-wfr3-2hj9Axios: Header Injection via Prototype Pollution
- highGHSA-777c-7fjr-54vfAllocation of Resources Without Limits or Throttling in Axios
- highGHSA-hfxv-24rg-xrqfAxios: Regular Expression Denial of Service (ReDoS) via Cookie Name Injection
- highGHSA-j5f8-grm9-p9fcAxios: Proxy-Authorization header leaks to redirect target when proxy is re-evaluated to direct connection
- highGHSA-p92q-9vqr-4j8vAxios: Proxy-Authorization Credential Leak to Origin Server Across HTTP-to-HTTPS Redirect in Axios Node.js HTTP Adapter
- highGHSA-pf86-5x62-jrwfAxios: Prototype Pollution Gadgets - Response Tampering, Data Exfiltration, and Request Hijacking
- highGHSA-pjwm-pj3p-43mvaxios's shouldBypassProxy does not recognize IPv4-mapped IPv6 addresses, allowing NO_PROXY bypass (incomplete fix for CVE-2025-62718)
- highGHSA-pmwg-cvhr-8vh7Axios: Incomplete Fix for CVE-2025-62718 — NO_PROXY Protection Bypassed via RFC 1122 Loopback Subnet (127.0.0.0/8) in Axios 1.15.0
- highGHSA-q8qp-cvcw-x6jjAxios has prototype pollution read-side gadgets in HTTP adapter that allow credential injection and request hijacking
js-cookie 3.0.5
1 advisory. Fixed in 3.0.7.
How it can be abusedThis flaw lets a website's own code be tricked into writing malicious attributes onto every cookie it sets, but only if untrusted user input is used as the cookie name or value in a way that reaches the library's assign function. In Chatwoot, js-cookie is used in the frontend and embeddable widget mostly with fixed names like conversation and user identifiers, so an attacker would need an injection point feeding raw input into those calls; anyone running a self-hosted instance would be exposed mainly through that widget path.
- highGHSA-qjx8-664m-686jJavaScript Cookie: Per-instance prototype hijack in assign() enables cookie-attribute injection
vite 6.4.2
1 advisory. Fixed in 8.0.16.
How it can be abusedThis flaw only affects Vite's development server, which lets a developer preview files while coding. An attacker on the same network could trick a Windows developer running the Chatwoot dev server into serving sensitive files from their machine, like environment files with API keys and database passwords.
- highGHSA-fx2h-pf6j-xcffvite: `server.fs.deny` bypass on Windows alternate paths
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required