{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "chatwoot--chatwoot",
    "name": "Chatwoot",
    "tagline": "Omnichannel support desk with documented Application, Platform and Client APIs; MIT core, env-configured.",
    "shortTagline": "Omnichannel support desk",
    "description": "Live chat, email, WhatsApp, social and SMS in one inbox, with help center, campaigns, reports and the Captain AI agent. Self-host under MIT (enterprise/ is commercial) and configure through documented env vars. The Builder documents three REST APIs; there is no official MCP, though community wrappers exist.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "smb-ops-crm",
    "alternativeTo": [
      "Intercom",
      "Zendesk",
      "Freshdesk"
    ],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "hybrid",
    "provenance": "human-written",
    "codeStack": {
      "languages": [
        "Ruby",
        "JavaScript"
      ],
      "frameworks": [
        "Ruby on Rails",
        "Vue.js",
        "Sidekiq"
      ],
      "packageManager": "bundler + pnpm",
      "database": [
        "PostgreSQL",
        "Redis"
      ],
      "hostingTarget": [
        "Docker",
        "Heroku",
        "DigitalOcean Kubernetes"
      ]
    },
    "modelStack": {
      "providers": [
        "OpenAI (Captain)"
      ],
      "models": [],
      "requiredKeys": [],
      "promptLocations": [],
      "tools": []
    },
    "repos": [
      {
        "url": "https://github.com/chatwoot/chatwoot",
        "owner": "chatwoot",
        "name": "chatwoot",
        "license": "MIT with enterprise/ under commercial license",
        "stars": 36413,
        "lastCommit": "2026-09-03"
      }
    ],
    "interface": {
      "kind": "api",
      "url": "https://developers.chatwoot.com/api-reference/introduction",
      "official": true,
      "hosted": "both"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Read and reply to conversations",
        "reachable": true,
        "evidence": "Application API conversations and messages endpoints"
      },
      {
        "job": "Manage contacts and their attributes",
        "reachable": true,
        "evidence": "Application API contacts endpoints"
      },
      {
        "job": "Create and configure inboxes",
        "reachable": true,
        "evidence": "Application API inboxes; Platform API for installation-level setup"
      },
      {
        "job": "Manage agents and teams",
        "reachable": true,
        "evidence": "Application API agents; Platform API users and accounts"
      },
      {
        "job": "Receive events",
        "reachable": true,
        "evidence": "Webhooks documented in the API reference"
      },
      {
        "job": "Run reports (conversation, agent, CSAT)",
        "reachable": null,
        "evidence": "Not confirmed on the API introduction page; check the Application API reports section"
      },
      {
        "job": "Automation rules, labels, canned responses",
        "reachable": null,
        "evidence": "Not confirmed on the introduction page"
      },
      {
        "job": "Publish help center articles",
        "reachable": null,
        "evidence": "Not confirmed on the introduction page"
      },
      {
        "job": "Configure the Captain AI agent",
        "reachable": null,
        "evidence": "Captain is an enterprise/ feature; API coverage not documented on the intro page"
      },
      {
        "job": "Embed a custom chat widget",
        "reachable": true,
        "evidence": "Client API with inbox_identifier and contact_identifier"
      }
    ],
    "editions": [
      {
        "name": "Community (self-hosted)",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/chatwoot/chatwoot"
          },
          {
            "kind": "one-click",
            "url": "https://heroku.com/deploy?template=https://github.com/chatwoot/chatwoot/tree/master"
          },
          {
            "kind": "container",
            "url": "https://chatwoot.com/deploy"
          }
        ]
      },
      {
        "name": "Cloud",
        "price": null,
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://www.chatwoot.com/pricing"
          }
        ]
      },
      {
        "name": "Enterprise (self-hosted)",
        "price": null,
        "open": false,
        "distributions": []
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or skills install target in the repo."
    },
    "customization": {
      "summary": "The named env vars (.env.example) are deployment configuration: SECRET_KEY_BASE, FRONTEND_URL, POSTGRES_*, REDIS_URL, SMTP_*, inbound-mail ingress, storage and per-channel app ids; only INSTALLATION_NAME/BRAND_NAME/LOGO overrides in config/installation_config.yml touch branding. Business adaptation lives in the admin UI: inboxes and channels, teams and agents, canned responses, macros, automation rules, labels, help center and Captain settings.",
      "envVars": [
        "FRONTEND_URL",
        "SECRET_KEY_BASE",
        "POSTGRES_HOST",
        "POSTGRES_USERNAME",
        "POSTGRES_PASSWORD",
        "REDIS_URL",
        "SMTP_ADDRESS",
        "SMTP_USERNAME",
        "SMTP_PASSWORD",
        "MAILER_SENDER_EMAIL",
        "MAILER_INBOUND_EMAIL_DOMAIN",
        "RAILS_INBOUND_EMAIL_SERVICE",
        "ENABLE_ACCOUNT_SIGNUP",
        "FB_APP_ID",
        "FB_APP_SECRET",
        "SLACK_CLIENT_ID",
        "SLACK_CLIENT_SECRET",
        "GOOGLE_OAUTH_CLIENT_ID",
        "AZURE_APP_ID",
        "ACTIVE_STORAGE_SERVICE",
        "S3_BUCKET_NAME",
        "DEFAULT_LOCALE"
      ],
      "configFiles": [
        ".env.example",
        "docker-compose.yaml",
        "config/installation_config.yml"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "surfaceKind": "admin-ui",
      "editCount": 25
    },
    "useWhen": [
      "I want WhatsApp, email and website chat in one queue on our own server and our agent drafting replies through the API",
      "I am paying per seat for Intercom or Zendesk and want a flat self-hosted desk"
    ],
    "accounts": [
      "SMTP provider",
      "Meta developer app (Facebook, Instagram, WhatsApp)",
      "Twilio (SMS, optional)",
      "OpenAI (Captain, optional)"
    ],
    "active": true,
    "lastActivity": "2026-09-03",
    "gotchas": [
      "Platform API is self-hosted or managed hosting only, not cloud",
      "enterprise/ directory (Captain and others) is commercially licensed; MIT covers the core",
      "README warns of breakages if channel env vars are not set",
      "1,300+ open issues: large surface, expect rough edges"
    ],
    "fit": {
      "adaptable": 3,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: Rails app deployed with Docker, Heroku, Kubernetes",
      "executionModel": "README Captain AI agent on top of a deterministic desk",
      "operability": "developers.chatwoot.com: Application, Client and Platform APIs with access tokens",
      "effort": "README Deployment: link to environment-variables docs; .env.example with 120+ named vars",
      "editions": "README: MIT core, enterprise/ commercial; chatwoot.com cloud",
      "active": "GitHub pushedAt 2026-09-03"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.8,
      "operability": 0.95,
      "effort": 0.85,
      "reach": 0.65,
      "editions": 0.7
    },
    "openQuestions": [
      "Cloud plan prices and whether a free cloud plan exists",
      "Confirm API coverage for reports, automation rules, labels, canned responses and help center",
      "Which model provider does Captain require?"
    ],
    "sources": [
      {
        "url": "https://github.com/chatwoot/chatwoot",
        "foundBy": "sourcing:smb-ops-crm:github"
      },
      {
        "url": "https://developers.chatwoot.com",
        "foundBy": "sourcing:smb-ops-crm:github"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "dispute",
      "reason": "Read .env.example on develop: every variable is a secret, host, database, mail, storage or channel-app credential. Branding overrides exist in config/installation_config.yml, but workflows, canned responses and automation are configured in the admin UI.",
      "disputed": [
        {
          "field": "customization.effort",
          "reason": "Named env vars are deployment-only; canned responses, automation rules, inbox and team setup are in-app, not files."
        }
      ]
    },
    "url": "apps/chatwoot--chatwoot.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/chatwoot--chatwoot.json"
  }
}
