How to Contribute
There are many ways to contribute to Chatwoot:- Report bugs: Found a bug? Open an issue on GitHub
- Suggest features: Have an idea? Share it with the community
- Write code: Fix bugs, add features, or improve existing code
- Improve documentation: Help make our docs clearer and more comprehensive
- Translate: Help translate Chatwoot to your language at translate.chatwoot.com
Getting Started
- Fork the repository on GitHub
- Clone your fork locally
- Set up your development environment (see Setup Guide)
- Create a branch for your changes
- Make your changes following our Code Style Guide
- Test your changes using our Testing Guide
- Submit a pull request
Branching Model
Chatwoot uses the git-flow branching model:develop: The base branch for developmentmaster: Stable releases only- Feature branches: Create from
develop, name them descriptively (e.g.,feature/add-user-authentication) - Tags: Stable versions are tagged as
v1.x.x
develop branch.
Commit Messages
We prefer Conventional Commits format:feat: A new featurefix: A bug fixdocs: Documentation changesstyle: Code style changes (formatting, no logic change)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Pull Request Process
- Ensure your code follows our code style guidelines
- Update documentation if needed
- Add tests for new functionality
- Ensure all tests pass
- Keep your PR focused on a single feature or fix
- Provide a clear description of the changes
- Link any related issues
Translation Guidelines
The translation process is managed at translate.chatwoot.com using Crowdin. Important:- Only update
en.ymlanden.jsonin your code contributions - Backend translations →
en.yml - Frontend translations →
en.json - Community contributors handle other languages through Crowdin
Enterprise Edition Considerations
Chatwoot has an Enterprise overlay underenterprise/ that extends the open-source code.
When contributing:
- Check for corresponding files in
enterprise/before modifying core functionality - Keep behavior compatible across OSS and Enterprise
- Avoid hardcoding instance- or plan-specific behavior in OSS
- Prefer configuration, feature flags, or extension points
- Search for related files in both trees:
rg -n "FooService|ControllerName|ModelName" app enterprise - Consider if Enterprise needs overrides or extension points
- Keep request/response contracts stable
- Mirror renames/moves in
enterprise/to prevent drift - Add Enterprise-specific specs under
spec/enterprise
Code of Conduct
Our Pledge
We pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.Our Standards
Positive behavior includes:- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes
- Focusing on what is best for the overall community
- The use of sexualized language or imagery, and sexual attention or advances
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others’ private information without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders at [email protected]. All complaints will be reviewed and investigated promptly and fairly.Enforcement Guidelines
Community leaders will follow these guidelines:- Correction: Private warning for inappropriate language or behavior
- Warning: Consequences for continued behavior, temporary interaction restrictions
- Temporary Ban: Temporary ban from community interaction
- Permanent Ban: Permanent ban from the community
Getting Help
If you need help or want to discuss your contribution:- Join our Discord community
- Check the documentation
- Ask questions in GitHub issues or discussions

