# Frappe CRM

AGPL CRM on the Frappe Framework; every DocType is reachable through the framework's REST API.

Leads, deals, kanban, custom views, notes, tasks and calls, with built-in Twilio and Exotel calling and an ERPNext bridge for invoicing. Runs on a Frappe bench (Python and MariaDB); Frappe Cloud is the Builder's paid hosting. Any Frappe app exposes /api/resource/&lt;DocType> and /api/method with token auth, so an agent gets the whole data model.

Alternative to: HubSpot, Pipedrive, Salesforce

- Capabilities: adaptable, operable
- Vertical: smb-ops-crm
- Shape: business-app
- Form factor: web-app
- Execution model: deterministic
- Provenance: human-written (recorded, never ranked)
- Repo: https://github.com/frappe/crm (AGPL-3.0), 3457 stars, last commit 2026-09-03
- Last activity: 2026-09-03
- Page: apps/frappe--crm.html
- JSON: apps/frappe--crm.json

## Use it when

- I already run ERPNext and want a clean sales pipeline that invoices through it
- I want unlimited users on a simple CRM and our agent updating deals through a REST API we already know

## Gotchas

- Needs a Frappe bench: Python, MariaDB, Redis, Node; not a single container
- Branch main is v1.x stable; develop is v2 unstable
- AGPL-3.0
- CRM Enrichment Settings suggests an enrichment feature; provider not documented in README

## Editions

- Self-hosted: Free, open source
  - source: https://github.com/frappe/crm
  - container: python3 ./easy-install.py deploy --image=ghcr.io/frappe/crm --version=stable --app=crm
- Frappe Cloud: Free, closed source
  - hosted: https://frappecloud.com

## Adaptable: make it yours

Effort: config-only (6 things to edit)

Site-level settings live in sites/&lt;site>/site_config.json (db, redis, mail) and in settings DocTypes editable in the UI or over REST: FCRM Settings, CRM Global Settings, CRM Twilio Settings, CRM Exotel Settings, ERPNext CRM Settings, CRM Enrichment Settings. crm/hooks.py wires the app. Adding fields and pipeline stages is in-product; new logic is a Frappe app of your own rather than a fork.

- Env vars: none
- Config files: sites/&lt;site>/site_config.json, crm/hooks.py, crm/fcrm/doctype/fcrm_settings/fcrm_settings.json, crm/fcrm/doctype/crm_global_settings/crm_global_settings.json, crm/fcrm/doctype/crm_twilio_settings/crm_twilio_settings.json, crm/fcrm/doctype/erpnext_crm_settings/erpnext_crm_settings.json
- Prompt files: none
- Accounts you'll need: Twilio or Exotel (calling, optional); SMTP provider; Frappe Cloud account (hosted edition)

## Operable: what an agent can drive

Operability: official. Interface: api at https://docs.frappe.io/framework/user/en/api/rest (published by the builder, both).

### Reach (partial coverage)

- Create and update leads and deals: reachable. Frappe REST: /api/resource/CRM Lead and CRM Deal with token auth
- Notes, tasks and call logs on a record: reachable. CRM Note, CRM Task, CRM Call Log DocTypes through /api/resource
- Move deals through pipeline stages: reachable. Status field update on CRM Deal through REST
- Add custom fields: reachable. Custom Field DocType is writable through the same API
- Send and log email: reachable. Communication DocType and frappe.core.doctype.communication.email.make through /api/method
- Place and record calls (Twilio, Exotel): undetermined. Integrations are built in; API-triggered calling not documented in README
- WhatsApp messaging: undetermined. Uses the third-party frappe_whatsapp app
- Kanban and custom views: not reachable. Views are UI; CRM View Settings DocType stores them but the board is a front-end feature
- Invoice from a deal: undetermined. Requires ERPNext integration (erpnext_crm_settings)

## Code stack

- Languages: Python, JavaScript
- Frameworks: Frappe Framework, Frappe UI, Vue.js
- Package manager: bench + pip + yarn
- Database: MariaDB, Redis
- Hosting target: Docker (easy-install.py), Frappe Cloud

## Evidence and confidence

- formFactor: README: Frappe Framework web app with Vue front end (confidence 0.95)
- executionModel: No model SDK in README; domain_enrichment module exists (unverified) (confidence 0.7)
- operability: Frappe Framework REST API docs; CRM DocTypes under crm/fcrm/doctype (confidence 0.9)
- effort: crm/hooks.py and settings DocType JSON files in the repo tree (confidence 0.8)
- editions: README: Frappe Cloud managed hosting, self-host easy-install; AGPL (confidence 0.8)
- active: GitHub pushedAt 2026-09-03
- reach:  (confidence 0.75)

## Open questions

- Frappe Cloud prices for CRM
- What does crm/domain_enrichment call?
- Is there an official Frappe MCP server yet? None found on the frappe org

## Sources

- https://github.com/frappe/crm (sourcing:smb-ops-crm:github)
- https://frappe.io/crm (sourcing:smb-ops-crm:github)
