Frappe CRM
Open-source CRM with unlimited users, built-in Twilio, Exotel, WhatsApp, and ERPNext integrations — self-host in minutes.
Frappe CRM is a fully featured, open-source customer relationship management platform built on the Frappe Framework and Vue.js 3, designed for modern sales teams that want powerful CRM capabilities without per-user licensing fees or vendor lock-in. It centralizes lead and deal management, multi-channel communications, and workflow automation in a clean, intuitive interface that works equally well on desktop and mobile.
The platform ships with built-in integrations for Twilio and Exotel for voice calling, WhatsApp for messaging, Meta (Facebook/Instagram) for lead capture, and ERPNext for invoicing and accounting — all configurable from within the UI without writing code. A visual field layout editor lets non-technical users customize CRM forms, sidepanels, and grid views with a real-time drag-and-drop interface, while a Service Level Agreement engine tracks first-response and rolling-response times against configurable SLA policies.
Frappe CRM supports deployment via Frappe Cloud’s managed hosting, a one-command Docker setup, or a self-hosted Linux environment. Development is extremely active — over 250 commits per month and more than 200 releases published — making it one of the most rapidly evolving open-source CRM projects available today. The project is backed by Frappe Technologies, the same team behind ERPNext and the Frappe Framework, ensuring long-term maintenance and a broad ecosystem.
What You Get
- All-in-One Lead/Deal Page — Every activity, comment, note, task, call log, email thread, and WhatsApp message for a contact lives on a single page, eliminating context-switching between tabs or apps.
- Visual Kanban Pipeline — Drag-and-drop Kanban boards for leads and deals with configurable columns matching your actual sales stages, updated in real time across all users via WebSocket.
- Custom Views & Filters — Build and save unlimited personalized list views with custom columns, filters, sort orders, and group-by settings, shared per-user or team-wide.
- Built-in Voice Calling (Twilio & Exotel) — Make and receive calls directly from the CRM browser interface using Twilio’s WebRTC SDK or Exotel’s mobile agent routing, with automatic call recording and log creation.
- WhatsApp Messaging — Send and receive WhatsApp messages via the frappe_whatsapp integration, with full conversation history attached to lead and deal records.
- Meta Lead Sync — Automatically pull leads from Facebook and Instagram lead-gen ads on configurable sync schedules (every 5 minutes to daily), with all form fields mapped to CRM fields.
- No-Code Field Layout Editor — Drag-and-drop editor for customizing Quick Entry forms, sidepanel fields, data sections, and grid row layouts with live preview and cached rendering for performance.
- Service Level Agreement Engine — Define SLA policies with first-response and rolling-response time targets per communication status, with automated status tracking (Fulfilled/Failed) and scheduled notification triggers.
- ERPNext Integration — Bidirectional sync of contacts, organizations, and deals with ERPNext; convert a won deal to a quotation or sales order directly from the CRM.
- Sales Hierarchy & Territory Management — Restrict lead and deal visibility using an org hierarchy and territory tree, with permission query conditions enforced at the database query level.
Common Use Cases
- Digital agency managing inbound social leads — An agency connects Facebook/Instagram lead-gen ads to Frappe CRM for automatic lead capture, routes them by territory to sales reps, and tracks WhatsApp follow-up conversations — all without manual CSV exports or per-seat fees.
- B2B SaaS startup running outbound sales — A founding team uses the Kanban view and Twilio integration to run outbound call campaigns, logs every call automatically, and tracks deals through a custom pipeline aligned to their sales motion.
- SMB with ERPNext on backend — A manufacturing business uses Frappe CRM as the sales front-end and ERPNext as the order/invoice back-end; won deals automatically create customers and quotations in ERPNext, eliminating duplicate data entry.
- Support-heavy business with SLA commitments — A team defines SLA policies with first-response time targets, monitors real-time SLA status (Fulfilled / Rolling Response Due / Failed) on every lead, and receives automated reminders before breach.
- Enterprise with complex territory rules — A regional sales organization configures a sales hierarchy and territory tree to ensure reps only see their own leads and deals, enforced at the SQL query level rather than application-layer filtering.
Under The Hood
Architecture Frappe CRM follows a framework-centric architecture where the Python backend is structured as a Frappe application — a set of DocType classes, hooks, and whitelist-decorated API methods that plug into the Frappe Framework’s request lifecycle. Business logic lives in DocType event handlers (before_validate, validate, on_update) registered via hooks.py, and in dedicated API modules for activities, contacts, notifications, and integrations. The frontend is a standalone Vue 3 single-page application compiled by Vite and served as a static asset bundle from Frappe’s public directory. Communication between the two layers happens through Frappe’s JSON-RPC API surface and a Socket.IO WebSocket channel for real-time event push. This separation is clean at the deployment level but lacks formal API contracts — the frontend depends on knowledge of Frappe’s internal method naming conventions, making the boundary implicit rather than explicit.
Tech Stack The backend is Python 3.10+ running on the Frappe Framework (v15/v16), using PyPika’s query builder for complex filtered list queries and Twilio’s Python SDK for voice integration. The frontend uses Vue 3 with Pinia for state management, Vue Router for SPA routing, frappe-ui as the component library, Vite for builds, and Vitest with happy-dom for unit tests. Tailwind CSS v3 handles styling. Real-time updates use Socket.IO. The project is packaged via Flit for Python and Yarn for the frontend, with Ruff and ESLint enforcing code style on their respective stacks. Deployment targets include Frappe Cloud, Docker Compose, and the frappe-bench CLI for bare-metal Linux setups.
Code Quality The Python codebase applies Ruff linting with a well-configured rule set (flake8, pyupgrade, bugbear, isort) and enforces type annotations on all whitelisted API methods via require_type_annotated_api_methods. DocType classes use Frappe’s auto-generated type stubs, providing IDE-level type safety within the framework’s conventions. The test suite uses Frappe’s IntegrationTestCase with database rollback for isolation, covering integrations, dashboard logic, utility functions, and exchange rates — though overall coverage of business logic paths is limited. The frontend has Vitest unit tests and ESLint with eslint-plugin-vue. Pre-commit hooks and crowdin localization workflows are in place, and release cadence is extremely high with comprehensive changelogs.
What Makes It Unique Frappe CRM’s most distinctive technical capability is its configurable SLA engine: SLA policies evaluate against dynamic conditions using safe_eval with a sandboxed Frappe context, support priority-based matching via a join on CRM Service Level Priority, and track rolling response times as a child table updated on every customer reply — a level of SLA granularity uncommon in open-source CRMs. The lead syncing subsystem runs configurable background jobs at frequencies from every 5 minutes to monthly via Frappe’s scheduler, with per-source error isolation using frappe.log_error. The no-code fields layout editor serializes a nested tab/section/column/field structure to JSON, with caching and real-time preview, enabling non-technical users to reshape the entire CRM UI without deployment cycles.
Self-Hosting
Frappe CRM is released under the GNU Affero General Public License v3.0 (AGPL-3.0). This means you can use, modify, and self-host it for any purpose including commercial use at no cost, but if you distribute a modified version or run it as a network service for others, you must release your modifications under the same AGPL-3.0 license. For internal use by a company running their own CRM instance, the AGPL copyleft obligation does not extend to your proprietary business data or internal customizations — only to the application code itself. Organizations that need to keep their modifications private should evaluate a commercial license from Frappe Technologies.
Running Frappe CRM yourself requires operating the full Frappe bench stack: a Python/WSGI application server (Gunicorn), Nginx as a reverse proxy, Redis for caching and job queues, and MariaDB or PostgreSQL as the database. A one-command Docker Compose setup is provided for evaluation and smaller deployments, and Frappe’s easy-install.py script can provision a production-ready instance in roughly five minutes. For larger teams, you’re responsible for database backups, SSL certificate renewal, Frappe framework upgrades, and horizontal scaling — bench’s worker architecture handles background jobs via Celery but requires manual tuning for high-concurrency call integrations.
Frappe Cloud, the managed hosting service from Frappe Technologies, handles all of this for you: automated backups, SSL, rolling framework updates, site monitoring, and a migration wizard. The trade-off is a subscription cost per site (not per user, which is still unlimited). Self-hosters give up guaranteed uptime SLAs, professional support response times, and the convenience of managed upgrades — though the active Telegram group and Discuss forum provide community-level support. There is no feature split between the open-source and cloud-hosted versions; Frappe Cloud is purely an operational convenience, not a feature gate.
Related Apps
Odoo
ERP · CRM · Productivity
The open source ERP platform that integrates CRM, accounting, inventory, manufacturing, and 60+ business apps into one seamlessly connected suite.
Odoo
Othertwenty
CRM
The open-source CRM you build, ship, and version like the rest of your stack — with customizable objects, AI agents, and a TypeScript SDK.
twenty
OtherKrayin CRM
Ecommerce · CRM
Free, open-source Laravel & Vue.js CRM for SMEs and enterprises to manage the complete customer lifecycle.