Chatwoot Custom is not a fork — it is an overlay. Every change lives inside theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/jAtInn71/chatwoot-costom/llms.txt
Use this file to discover all available pages before exploring further.
custom/ directory; no upstream Chatwoot file is ever edited. When you build the Docker image, COPY directives transplant the custom files onto their upstream paths at the last possible moment, so the finished container behaves like standard Chatwoot with additions, not a divergent branch.
The custom/ directory layout
| Subdirectory | Contents |
|---|---|
custom/backend/ | Rails controllers, models, migrations, views, routes |
custom/widget/ | Vue components, Vuex store modules, helpers, i18n |
custom/dashboard/ | Agent-facing dashboard components |
The golden rule
Never edit upstream Chatwoot files. Every customization must live insidecustom/. Upstream edits create merge conflicts when you pull a new Chatwoot release and make it impossible to distinguish your changes from upstream code. The overlay pattern keeps your diff clean and your upgrade path open.
How the Dockerfile applies the overlay
The build uses two stages. Stage 1 clones upstream Chatwoot, copies all widget files fromcustom/widget/ and custom/dashboard/ over the cloned source, then runs vite build. Stage 2 starts from the official chatwoot/chatwoot:latest image and overlays the backend files:
custom/ file directly onto its upstream equivalent path inside /app. From Rails’ perspective the file simply exists at the expected location; it has no knowledge of the overlay.
How to upgrade Chatwoot
Becausecustom/ contains only your additions, upgrading is straightforward:
Check the upstream changelog
Review the Chatwoot release notes to identify any changes to files you override (controllers, models, views). Pay special attention to
InboxesController, ConversationsController, and Channel::WebWidget.Update the base image tag
In the Dockerfile, change
FROM chatwoot/chatwoot:latest to the desired version tag, and update the git clone URL or tag in Stage 1 if you pin it.Merge upstream changes into your custom files
For any upstream file you override, diff the new upstream version against your custom version and merge in new behavior that does not conflict with your additions.
Explore each layer
Backend customizations
Migrations, model attributes, controller actions, views, and routes added by the overlay
Frontend customizations
Vue components, Vuex modules, API helpers, and the dashboard configuration page
Build and deploy
How build.sh and the multi-stage Dockerfile produce and ship the final image
Voice agent setup
End-to-end guide for enabling and configuring the ElevenLabs voice agent per inbox