# specteriusx/chatwoot architecture

> Architecture diagram of the GitHub repository specteriusx/chatwoot, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/specteriusx/chatwoot
- Repository: https://github.com/specteriusx/chatwoot

## Overview

Chatwoot is a customer-support platform centered on consolidating customer messages into an agent inbox and replying across channels. The dashboard API and Rails controller paths identify the main interaction surfaces; the README documents additional capabilities including Captain, Help Center, campaigns, integrations, and analytics. Edges describe documented product flows and named endpoint relationships; sampled source is limited, so internal persistence and some subsystem wiring are intentionally omitted.

Main entry points: [`app/javascript/dashboard/api`](https://github.com/specteriusx/chatwoot/tree/develop/app/javascript/dashboard/api) (Dashboard API), [`app/javascript/dashboard/App.vue`](https://github.com/specteriusx/chatwoot/blob/develop/app/javascript/dashboard/App.vue) (Agent dashboard), [`app/controllers/api/v1/accounts/conversations/messages_controller.rb`](https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/accounts/conversations/messages_controller.rb) (Message endpoints), [`app/controllers/api/v1/widget/messages_controller.rb`](https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/widget/messages_controller.rb) (Web chat endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inbox["Omnichannel inbox"]
  node_dashboard["Agent dashboard<br/>[App.vue]"]
  node_dashboard_api["Dashboard API"]
  node_conversation_api["Conversation endpoints"]
  node_message_api["Message endpoints"]
  node_widget_api["Web chat endpoints"]
  node_channel_webhooks["Channel webhooks"]
  node_message_builders["Channel message builders"]
  node_realtime["Realtime updates<br/>[room_channel.rb]"]
end

subgraph group_engagement["Customer engagement"]
  node_contact_api["Contact management"]
  node_campaign_api["Campaign management"]
  node_help_portal["Help Center portal"]
end

subgraph group_intelligence["AI and insights"]
  node_captain_api["Captain endpoints"]
  node_captain_llm["Captain language services"]
  node_reports_api["Analytics endpoints"]
  node_report_builders["Report builders"]
end

subgraph group_platform["Platform integrations"]
  node_integration_api["Integration endpoints"]
  node_webhook_api["Integration webhooks"]
  node_external_channels{{"Messaging channels"}}
  node_llm_provider{{"LLM provider"}}
end

node_customer(("Customer"))
node_agent(("Support agent"))

node_customer -->|"starts chat"| node_widget_api
node_external_channels -->|"deliver messages"| node_channel_webhooks
node_channel_webhooks -->|"build messages"| node_message_builders
node_agent -->|"works conversations"| node_dashboard
node_dashboard -->|"requests data"| node_dashboard_api
node_dashboard_api -->|"calls endpoints"| node_conversation_api
node_dashboard_api -->|"sends replies"| node_message_api
node_dashboard_api -->|"manages contacts"| node_contact_api
node_dashboard_api -->|"manages campaigns"| node_campaign_api
node_dashboard_api -->|"requests reports"| node_reports_api
node_dashboard_api -->|"configures apps"| node_integration_api
node_widget_api -->|"serves chat"| node_customer
node_message_api -->|"sends replies"| node_external_channels
node_realtime -->|"updates inbox"| node_dashboard
node_customer -->|"seeks answers"| node_help_portal
node_dashboard_api -->|"uses AI tools"| node_captain_api
node_captain_api -.->|"translates queries"| node_captain_llm
node_captain_llm -.->|"requests translation"| node_llm_provider
node_reports_api -->|"builds reports"| node_report_builders
node_external_channels -.->|"send events"| node_webhook_api
node_integration_api -.->|"connects channels"| node_external_channels

click node_dashboard "https://github.com/specteriusx/chatwoot/blob/develop/app/javascript/dashboard/App.vue"
click node_dashboard_api "https://github.com/specteriusx/chatwoot/tree/develop/app/javascript/dashboard/api"
click node_conversation_api "https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/accounts/conversations_controller.rb"
click node_message_api "https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/accounts/conversations/messages_controller.rb"
click node_widget_api "https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/widget/messages_controller.rb"
click node_channel_webhooks "https://github.com/specteriusx/chatwoot/tree/develop/app/controllers/webhooks"
click node_message_builders "https://github.com/specteriusx/chatwoot/tree/develop/app/builders/messages"
click node_realtime "https://github.com/specteriusx/chatwoot/blob/develop/app/channels/room_channel.rb"
click node_contact_api "https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/accounts/contacts_controller.rb"
click node_campaign_api "https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/accounts/campaigns_controller.rb"
click node_help_portal "https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/public/api/v1/portals_controller.rb"
click node_captain_api "https://github.com/specteriusx/chatwoot/tree/develop/app/controllers/api/v1/accounts/captain"
click node_captain_llm "https://github.com/specteriusx/chatwoot/blob/develop/enterprise/app/services/captain/llm/translate_query_service.rb"
click node_reports_api "https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v2/accounts/reports_controller.rb"
click node_report_builders "https://github.com/specteriusx/chatwoot/tree/develop/app/builders/v2/reports"
click node_integration_api "https://github.com/specteriusx/chatwoot/tree/develop/app/controllers/api/v1/accounts/integrations"
click node_webhook_api "https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/integrations/webhooks_controller.rb"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dashboard,node_dashboard_api,node_conversation_api,node_message_api,node_widget_api,node_channel_webhooks,node_message_builders,node_realtime toneBlue
class node_contact_api,node_campaign_api,node_help_portal toneAmber
class node_captain_api,node_captain_llm,node_reports_api,node_report_builders toneMint
class node_integration_api,node_webhook_api,node_external_channels,node_llm_provider toneRose
class node_customer,node_agent toneIndigo
```

## Components

### Omnichannel inbox

- [Agent dashboard](https://github.com/specteriusx/chatwoot/blob/develop/app/javascript/dashboard/App.vue): `app/javascript/dashboard/App.vue`
- [Dashboard API](https://github.com/specteriusx/chatwoot/tree/develop/app/javascript/dashboard/api): `app/javascript/dashboard/api`
- [Conversation endpoints](https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/accounts/conversations_controller.rb): `app/controllers/api/v1/accounts/conversations_controller.rb`
- [Message endpoints](https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/accounts/conversations/messages_controller.rb): `app/controllers/api/v1/accounts/conversations/messages_controller.rb`
- [Web chat endpoints](https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/widget/messages_controller.rb): `app/controllers/api/v1/widget/messages_controller.rb`
- [Channel webhooks](https://github.com/specteriusx/chatwoot/tree/develop/app/controllers/webhooks): `app/controllers/webhooks`
- [Channel message builders](https://github.com/specteriusx/chatwoot/tree/develop/app/builders/messages): `app/builders/messages`
- [Realtime updates](https://github.com/specteriusx/chatwoot/blob/develop/app/channels/room_channel.rb): `app/channels/room_channel.rb`

### Customer engagement

- [Contact management](https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/accounts/contacts_controller.rb): `app/controllers/api/v1/accounts/contacts_controller.rb`
- [Campaign management](https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/accounts/campaigns_controller.rb): `app/controllers/api/v1/accounts/campaigns_controller.rb`
- [Help Center portal](https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/public/api/v1/portals_controller.rb): `app/controllers/public/api/v1/portals_controller.rb`

### AI and insights

- [Captain endpoints](https://github.com/specteriusx/chatwoot/tree/develop/app/controllers/api/v1/accounts/captain): `app/controllers/api/v1/accounts/captain`
- [Captain language services](https://github.com/specteriusx/chatwoot/blob/develop/enterprise/app/services/captain/llm/translate_query_service.rb): `enterprise/app/services/captain/llm/translate_query_service.rb`
- [Analytics endpoints](https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v2/accounts/reports_controller.rb): `app/controllers/api/v2/accounts/reports_controller.rb`
- [Report builders](https://github.com/specteriusx/chatwoot/tree/develop/app/builders/v2/reports): `app/builders/v2/reports`

### Platform integrations

- [Integration endpoints](https://github.com/specteriusx/chatwoot/tree/develop/app/controllers/api/v1/accounts/integrations): `app/controllers/api/v1/accounts/integrations`
- [Integration webhooks](https://github.com/specteriusx/chatwoot/blob/develop/app/controllers/api/v1/integrations/webhooks_controller.rb): `app/controllers/api/v1/integrations/webhooks_controller.rb`
- **Messaging channels**
- **LLM provider**

### Other components

- **Customer**
- **Support agent**

## Connections

- Customer → Web chat endpoints: starts chat
- Messaging channels → Channel webhooks: deliver messages
- Channel webhooks → Channel message builders: build messages
- Support agent → Agent dashboard: works conversations
- Agent dashboard → Dashboard API: requests data
- Dashboard API → Conversation endpoints: calls endpoints
- Dashboard API → Message endpoints: sends replies
- Dashboard API → Contact management: manages contacts
- Dashboard API → Campaign management: manages campaigns
- Dashboard API → Analytics endpoints: requests reports
- Dashboard API → Integration endpoints: configures apps
- Web chat endpoints → Customer: serves chat
- Message endpoints → Messaging channels: sends replies
- Realtime updates → Agent dashboard: updates inbox
- Customer → Help Center portal: seeks answers
- Dashboard API → Captain endpoints: uses AI tools
- Captain endpoints → Captain language services: translates queries
- Captain language services → LLM provider: requests translation
- Analytics endpoints → Report builders: builds reports
- Messaging channels → Integration webhooks: send events
- Integration endpoints → Messaging channels: connects channels
