Main features
- Leads with duplicate detection and conversion to contacts and accounts
- Drag-and-drop deal pipelines with stalled-deal warnings and weighted totals
- Web forms that create leads or support tickets
- Support tickets with SLA timers, macros, escalations and a help center
- Invoices, estimates and recurring billing with PDF output
- Custom fields on every entity, saved views and CSV import and export
- Signed outbound webhooks
- JWT REST API with OpenAPI schema and personal access tokens
- Flutter mobile app for iOS and Android
- Multi-tenancy enforced by PostgreSQL Row-Level Security
What BottleCRM does
BottleCRM is the current name of the long-running Django-CRM project maintained by MicroPyramid. It follows one record through the customer lifecycle: a lead becomes a contact at an account, the account carries deals, a won deal becomes an invoice, and a later support ticket already knows the customer’s history. Leads arrive by hand, by CSV import or from web forms embedded on your site, with duplicate detection along the way.
Deals sit on a drag-and-drop pipeline board with stages you define. Each stage can carry an expected number of days, so deals that sit too long are flagged as stalled, and the board shows both the total value and a figure weighted by each deal’s probability. Every deal displays its next open task, and a deal with nothing scheduled is flagged.
Support and billing in the same CRM
What separates BottleCRM from most open source CRMs is the scope of its other modules. The support desk turns email or web form submissions into tickets that reply as threaded email, with SLA timers, approvals, escalations, macros, time tracking, satisfaction figures and an optional public help center. Invoicing covers estimates, invoices and recurring billing with PDF output, partial payments and an accounts-receivable aging report. Custom fields work on every entity, signed webhooks notify tools such as Slack, Zapier or n8n, and a documented REST API with personal access tokens lets scripts or AI agents act with a user’s own permissions.
The project’s feature page is unusually direct about gaps. It says there is no lead scoring, nurturing or workflow automation, no reminders or recurring tasks, no calendar feed and no payment processor integration. There are only two roles, Admin and User.
Self-hosting BottleCRM
The repository ships a Docker Compose stack: PostgreSQL 16, Redis 7, the Django API, a Celery worker, Celery beat and the SvelteKit frontend. PostgreSQL is mandatory, because tenant isolation relies on its Row-Level Security; each organization’s data is separated by the database itself, so one deployment can serve a single company or many client organizations. A manual setup needs Python 3.12, Node.js 24 and pnpm. The documentation says plainly that it has no benchmarked hardware sizing guide. Email uses a console backend until you configure Amazon SES, and Google sign-in and Sentry are optional. The Flutter mobile app has to be built and signed from source.
Hosted version
The website’s sign-up buttons lead to a hosted app at app.bottlecrm.io. MicroPyramid also sells managed hosting, priority support and data migration as a service priced after a conversation, alongside custom development. The developer states that the software is the same in every option and has no seat counter or paid features.
Limitations
The lack of any automation is the main gap compared with Pipedrive, Salesforce or HubSpot: follow-ups, assignments and reminders all depend on people. The role model is simple, which helps small teams but not organizations needing fine-grained permissions. Running six services including Celery and Redis is more work than a single PHP application, and the mobile app needs your own build.
Who it suits
BottleCRM suits small businesses, agencies and consultancies that want sales, support and invoicing in one MIT-licensed system, and Python teams who want to extend a Django codebase. Agencies hosting a CRM for several clients will find the database-level multi-tenancy useful. Teams that rely on automated sequences should compare it with Frappe CRM or EspoCRM in the CRM guide.
License details
MIT. No paid tier in the code; the developer sells managed hosting, support and custom work as services.
Technical details
Self-hosting needs
- PostgreSQL
- Redis
Built with
- Python
- Django
- SvelteKit
- Flutter
GitHub topics
- cpq
- crm
- crm-software
- django
- django-crm
- django-rest-framework
- flutter
- helpdesk
- invoice-management
- invoicing
- lead-management
- multitenancy
- open-source
- python
Reviewed by the OpenSourcePicks editors from the project's repository and documentation. Something out of date? Tell us.