Chatwoot omnichannel customer support
Your customers write to you everywhere: the website chat, email, Instagram, WhatsApp. Splitting them across several tools means lost messages and paying top price per agent. SaaS tools like Zendesk or Intercom solve the centralization, but your customer conversations — often your most sensitive data — transit through American servers. Bunker hosts Chatwoot, the open source omnichannel customer support platform.
Access: your dedicated instance, deployed from the Bunker console.
Why Chatwoot?
Chatwoot brings all your conversation channels together in a single shared inbox. Your agents reply to live chat, email, Facebook Messenger, Instagram and WhatsApp from one interface — with canned responses, macros, assignment rules and an unlimited number of agents.
All conversations are stored on Bunker servers. You keep full control.
Edition and license
Bunker operates the Chatwoot Community edition, released under the MIT license (open source software). The code is auditable, your data exportable, and the instance re-internalizable on your own infrastructure whenever you decide. Bunker is not affiliated with Chatwoot Inc.; "Chatwoot" is a trademark of its publisher, referenced here to designate the operated software.
Comparison with alternatives
| Criterion | Bunker | Zendesk | Intercom | Freshdesk | Self-hosting |
|---|---|---|---|---|---|
| Open source | Yes (MIT) | No | No | No | Yes |
| Sovereign hosting | Yes (Europe) | No (USA) | No (USA) | No (USA) | Up to you |
| Billing | Flat, unlimited agents | Per seat | Per seat | Per seat | Server + time |
| Omnichannel (chat, email, social, WhatsApp) | Yes | Yes | Yes | Yes | Yes |
| Full API | Yes | Yes | Yes | Yes | Yes |
| High availability | Included (SLA target) | Yes | Yes | Yes | Up to you |
| Auto backups | Yes | Yes | Yes | Yes | To configure |
| Security updates | Applied | Automatic | Automatic | Automatic | To monitor |
| Ops cost | Zero | Zero | Zero | Zero | Time + server |
In practice
The source code is auditable by anyone. MIT license: no black box, no vendor lock-in.
Your conversations belong to you. Unlike per-seat SaaS, the plan comes with unlimited agents: the cost does not depend on the size of your support team.
Your customer exchanges stay in Europe, under European law. No CLOUD Act, no access by foreign authorities.
Portability
Customer support touches sensitive data: conversation history, contact details, complaints. With Chatwoot:
- Full export of your conversations and contacts
- Documented REST API and real-time webhooks
- MIT license guaranteeing the project's longevity
- Active community maintaining the software
If Bunker disappears tomorrow, you export your data and reinstall Chatwoot on your own server. Try that with Zendesk.
Bunker vs self-hosting
You could install Chatwoot on your own server. But:
| Aspect | Self-hosting | Bunker |
|---|---|---|
| High availability | Up to you | Included (SLA target) |
| Backups | To configure | Automatic |
| Security updates | To monitor | Applied |
| SSL certificates | To renew | Managed |
| 24/7 monitoring | To set up | Included |
| HA database | PostgreSQL to manage | CNPG PostgreSQL (replicated) |
| Queue / real-time | Redis to operate | Managed Redis Sentinel |
Unavailable support means customers left without answers and a reputation taking damage. At Bunker, availability is covered by a service level target and backups are automatic. The database is managed by CNPG (CloudNativePG) with replication, and the real-time queue by Redis in Sentinel mode.
Quick start
1. Deploy from the console
- Go to console.getbunker.net
- Create your Bunker account or sign in
- Activate the Chatwoot service from the console
- Access your instance via the provided URL; admin credentials are in the service details
2. Create an inbox
- In Chatwoot, open Settings → Inboxes → Add Inbox
- Choose the channel: Website (live chat widget), Email, WhatsApp, Facebook, Instagram, API
- Follow the channel configuration wizard
- Assign the agents or teams that will handle this inbox
3. Add the chat widget to your site
For the Website channel, copy the provided script and paste it just before </body>:
<script>
(function(d,t) {
var BASE_URL="https://YOUR-INSTANCE.getbunker.net";
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=BASE_URL+"/packs/js/sdk.js"; g.defer=true; g.async=true;
s.parentNode.insertBefore(g,s);
g.onload=function(){
window.chatwootSDK.run({ websiteToken: "YOUR_TOKEN", baseUrl: BASE_URL });
};
})(document,"script");
</script>
4. Invite your agents
- Open Settings → Agents → Add Agent
- Enter the name and email — the agent receives an email invitation
- Assign a role: administrator (full access) or agent (conversations)
- Repeat for your whole team — the number of agents is unlimited
Supported channels
| Channel | Description |
|---|---|
| Website | Embeddable live chat widget, customizable to your brand colors |
| Support address linked to a shared inbox (forwarding or IMAP) | |
| WhatsApp Business number via the Cloud API | |
| Facebook Messenger | Facebook page connected via OAuth |
| Direct messages from your professional Instagram account | |
| API / SDK | Custom channel to embed chat in a mobile app or product |
Bring several shared mailboxes and your forms together
Front desk, office, management, website forms: Chatwoot brings these entry points into a single interface, without changing the addresses your correspondents know.
1. One inbox per shared address
For each address, open Settings → Inboxes → Add Inbox, choose Email, then one of the two modes:
- Forwarding: Chatwoot gives you a receiving address; a forwarding rule on your mail server sends incoming messages to it.
- IMAP and SMTP: Chatwoot fetches the mailbox and sends replies from the same address. The mailbox password is entered once, in the configuration, and no longer has to circulate among agents.
Then attach the relevant agents or teams to each inbox. An agent only sees the inboxes they belong to.
2. Website forms
Two options, depending on your website:
- By email: the form sends its submissions to one of the addresses connected to Chatwoot. No development needed.
- Through the API: create an inbox of type API, then have your website server create the contact and the conversation, with the submitted fields. The API token stays server-side, never in the browser. The call follows the example in the API and webhooks section.
3. Triage and measure
- Labels (for example "registration" or "waiting list") and automation rules route conversations to the right team.
- Reports give, inbox by inbox, volumes, first response time and resolution time.
- Webhooks extend the processing into your other tools, for example to feed a tracking dashboard.
AI triage can complement these rules, as an integration on quote. An agent bot connected to the API then asks the Bunker AI gateway for a classification, on a model hosted in Europe, then suggests a label and a team that the agent confirms.
Automation and productivity
Chatwoot speeds up conversation handling:
- Canned responses: pre-written messages inserted with one keystroke
- Macros: chains of actions (reply, label, assign, resolve) in one click
- Automation rules: auto-assign by keyword, language, channel or schedule
- Labels and teams: route conversations to the right team (billing, technical…)
- Private notes: collaborate between agents without the customer seeing them
API and webhooks
Chatwoot exposes a full REST API and real-time webhooks to integrate support into your tools:
# Create a conversation via the API
curl -X POST https://YOUR-INSTANCE.getbunker.net/api/v1/accounts/1/conversations \
-H "api-access-token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"source_id": "customer-123",
"inbox_id": 1,
"contact_id": 42
}'
| Webhook event | Description |
|---|---|
conversation_created | A new conversation was opened |
message_created | A message was sent or received |
conversation_status_changed | The status changed (open, resolved…) |
contact_created | A new contact was created |
Write the authentication header with dashes
Chatwoot's official documentation passes the API token in the api_access_token header. On France Nuage, write it api-access-token, as in the example above.
Public access to your instance goes through the France Nuage zero-trust authentication proxy. That proxy drops every header whose name contains anything other than letters, digits or dashes, so underscores and dots are removed. This closes a known hole in delegated-authentication setups (GHSA-rf44-j88r-hh8c): Rails, PHP, Python and Django treat X_User and X-User as the same header, which let an attacker slip a forged identity next to the one set by the proxy.
Chatwoot reads both spellings the same way, because Rack converts dashes to underscores. With dashes, the token gets through the proxy untouched.
If you keep the underscore, the request reaches Chatwoot without a token. Chatwoot then answers 401 with "You need to sign in or sign up before continuing", exactly what an anonymous call gets. Your token is fine and regenerating it won't help. The web interface keeps working, since it already authenticates with dashed headers; only your integrations are affected (scripts, n8n, CRM connectors, automations).
To check a token in one command:
curl -s -o /dev/null -w '%{http_code}\n' \
-H "api-access-token: YOUR_TOKEN" \
https://YOUR-INSTANCE.getbunker.net/api/v1/profile
# 200: the token is valid and the header gets through the proxy
Using the official Chatwoot CLI? Upgrade to version 0.7.0 or later: it has sent api-access-token since 25 September 2026 (#41), while earlier versions get a 401 on every command.
If another tool hardcodes the header with underscores, look for a setting that overrides it, or send the header yourself from a raw HTTP request. The same rule applies to every France Nuage service exposed behind this proxy: custom header names use letters, digits and dashes only.
Best practices
- Create canned responses for recurring questions (lead times, pricing, return procedure)
- Set up per-team assignment rules so no conversation is left without an owner
- Enable webhooks to sync support with your CRM or tracking tool
- Use labels to measure contact reasons and prioritize your product work
- Set a clear retention policy for conversations and attachments
References
- Chatwoot documentation to go further
- Externalized backups for complete protection