MARTECHSIGNAL

Django CRM Review

Multi-tenant open-source CRM on Django with leads, campaigns, and self-hosting

CRM · Open Source · OPEN SOURCE

Overview

Django CRM, sold hosted as Bottle CRM, is an open-source, multi-tenant CRM built on Django REST Framework with a Svelte 5 and SvelteKit frontend and a Flutter app for iOS and Android, all sharing one backend and one documented REST API. It covers leads, accounts, contacts, opportunities, support cases, tasks, and invoices, and the helpdesk is a real one: SLA timers, approvals, escalations, macros, and a knowledge base rather than a ticket list. The engineering decision that defines it is PostgreSQL Row-Level Security. Tenant isolation is enforced in the database through an app.current_org session variable, so one deployment can serve a startup or hundreds of organizations, and the docs are blunt that SQLite cannot run the application because RLS has no SQLite equivalent. The agent story is unusual for an open-source CRM and worth reading before you plan anything: the project shipped an MCP server at /mcp and then removed it, on the stated grounds that it covered eight entities and added nothing the REST API did not already do. Instead you mint a personal access token, stored only as a SHA-256 hash and shown once, point Claude, Cursor, or Codex at the OpenAPI 3 schema generated by drf-spectacular, and the agent works as a normal API client that inherits your role, org, and RLS scope. Two caveats the docs state plainly: the scopes field on tokens exists but nothing enforces it yet, so a token equals that user's full access, and invoice PDF generation runs synchronously through WeasyPrint. Licensing is MIT with no per-seat pricing, user caps, or feature paywalls. Requirements are Python 3.12 or later, Django 6.1 or later, PostgreSQL 16, Redis 7, and Node 24. The community is small at around 2, 400 stars, with MicroPyramid as the commercial backer. Pick it for a Django codebase you can extend; the marketing surface is campaign basics, not automation.

Homepage of Django CRM
Django CRM homepage. Screenshot captured 2026-09-08; site content belongs to its owner.

Key Integrations

REST API (OpenAPI 3 schema)Swagger UIGoogle OAuthAmazon SES (optional email)Sentry (optional)

How to install

  1. Fastest path is Docker Compose from the repo root: git clone https://github.com/django-crm/Django-CRM.git, cd Django-CRM, then docker compose up --build. That starts six services: PostgreSQL 16, Redis 7, the Django API on port 8000, a Celery worker, a Celery beat scheduler, and the SvelteKit frontend on port 5173.
  2. Nothing needs configuring to get a working stack. The checked-in .env.docker ships development defaults and is loaded by every service; overrides go in a gitignored .env.docker.local whose values win.
  3. Migrations run automatically on container start. Load demo data with docker compose exec backend python manage.py seed_data --email [email protected], which creates an organization named MicroPyramid plus demo leads, accounts, contacts, opportunities, cases, tasks, and invoices.
  4. Sign in with docker compose exec backend python manage.py devlogin [email protected] --org MicroPyramid, which prints an access token, a refresh token, and the org UUID. The frontend is at http://localhost:5173 and the API with Swagger UI at http://localhost:8000/swagger-ui/.
  5. If Docker does not fit, the docs' Manual setup page covers running the backend, database, Redis, Celery, and frontend directly on one machine.
  6. For an agent, mint a personal access token at Settings, then API tokens, and point the agent at GET /schema/ so it can discover endpoints itself.

Requirements

Python 3.12 or later, Django 6.1.1 or later, PostgreSQL 16 (the only supported backend and the only version CI exercises, because RLS makes SQLite unusable), Redis 7, and Node 24 with pnpm 10 for the frontend. The backend also installs Cairo, Pango, and gdk-pixbuf for WeasyPrint's PDF rendering.

Best for

Django-fluent teams that want a self-hosted CRM they can extend on day one, agencies running several brands or client books from one multi-tenant instance, and shops that want AI agents driving the CRM through a documented REST API.

Not for

Teams that want SQLite or MySQL (PostgreSQL 16 only), anyone expecting enforced token scopes or an MCP endpoint, and marketing teams wanting automation - campaign and email features are basics, and integrations are whatever you build.

Hands-on notes

Assessed from the repository and its MkDocs documentation, which publishes to Read the Docs, rather than a running instance. The docs are unusually candid for a commercially backed project: they name the removed MCP server, the unenforced token scopes, and the fact that no benchmarked sizing guide exists rather than inventing one.

Multi-tenancy is the architecture story, and it is checkable. RLS policies key on app.current_org, the Django containers connect as a non-superuser crm_user role created by init-rls-user.sql, and the docs warn that connecting as the postgres superuser would make every policy silently inert. Coverage is published as a badge in the README rather than only claimed.

The AI-agent angle is documented rather than implied: no special protocol, just a bearer token and an OpenAPI schema, with RLS, RBAC, and field validation applying to the agent exactly as to the web app. Vertical packs layer industry-specific pipelines and sample records on top of seed data, which tells you the product direction is industry templates.

Verdict

A disciplined, well-documented multi-tenant CRM for Django teams that want to own the code. Everyone else gets faster value from a hosted product with a larger community.

Pros and cons

ProsCons
Open-source licensing with free self-hosting
API access for custom integrations
Established community (2,411 GitHub stars)
Deep integration catalogue (5 listed)

Building your martech shortlist?

The weekly newsletter: one tool teardown, one workflow, no fluff. Free.

Subscribe

Frequently asked questions

What is Django CRM?

Multi-tenant open-source CRM on Django with leads, campaigns, and self-hosting. It ships with 2,411 GitHub stars, an API for custom integrations. MartechSignal's review covers features, pricing, and how it compares to alternatives.

How much does Django CRM cost?

Django CRM is open source and free to self-host. Hosted plans may add support and managed features.

Is Django CRM a good CRM tool in 2026?

A disciplined, well-documented multi-tenant CRM for Django teams that want to own the code. Everyone else gets faster value from a hosted product with a larger community.

Does Django CRM support MCP?

Not any more. The project shipped an MCP server at /mcp and then removed it, documenting the reasoning: it proxied eight entities to the same REST API and added no capability. The current guidance is to point an agent at the OpenAPI schema at GET /schema/ with a personal access token.

Can Django CRM run on SQLite or MySQL?

No. Multi-tenancy depends on PostgreSQL Row-Level Security, which has no SQLite equivalent, and the only non-test settings module configures PostgreSQL. SQLite appears only in test settings, and PostgreSQL 16 is the version the project's CI exercises.

How does multi-tenancy work in Django CRM?

Each request sets a PostgreSQL session variable (app.current_org) and Row-Level Security policies filter every table against it at the database layer. The app connects as a restricted crm_user role, never a superuser, because a superuser connection bypasses RLS entirely. That is what lets one deployment host many organizations.

Similar Tools