Chatwoot Custom is a production-ready overlay on top of the open-source Chatwoot customer support platform. It adds a microphone button to the chat widget that connects visitors to an ElevenLabs Conversational AI agent — and every spoken turn is automatically posted into the Chatwoot conversation so your support team sees the full context.Documentation 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.
Quick Start
Get your instance running in under 10 minutes using Docker Compose
Voice Agent Setup
Configure your ElevenLabs agent per inbox from the Chatwoot dashboard
Widget Embedding
Add the chat widget with voice support to any website in one script tag
API Reference
Explore the widget API endpoints for voice config and transcripts
How it works
Chatwoot Custom keeps all modifications isolated in acustom/ directory — upstream Chatwoot files are never touched. This means you can pull new Chatwoot releases without merge conflicts.
Deploy with Docker
Pull the pre-built image or build locally with
./build.sh. A single docker compose up -d brings up Rails, Sidekiq, PostgreSQL, and Redis.Create a web widget inbox
In the Chatwoot dashboard, go to Settings → Inboxes → Add Inbox → Website and complete the setup wizard.
Enable the voice agent
Open the inbox Configuration tab, scroll to Voice Agent, toggle it on, and paste your ElevenLabs Agent ID.
Key features
Per-inbox voice config
Each inbox has its own ElevenLabs agent ID and provider settings — no environment variables needed at runtime
Automatic transcripts
Every voice turn is posted as a message in the Chatwoot conversation, visible to agents in real time
Overlay architecture
All customizations live in
custom/ — safe to upgrade Chatwoot without conflictsSoft session exit
Chat exit resets state without reloading the iframe, preserving host-page integrations
Voice features require HTTPS. Microphone access is blocked by browsers on plain HTTP origins outside of
localhost. Use a tunnel such as ngrok or deploy behind your domain’s SSL certificate for live testing.