mothermachine

Browse / SMB ops and CRM

Frappe CRM

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

AdaptableOperable Business appWeb app Deterministic PythonJavaScript API License: AGPL-3.0

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/<DocType> and /api/method with token auth, so an agent gets the whole data model.

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

Last activity Sep 3, 2026. Fit: adaptable 2, operable 3.

Editions

Self-hosted · Free open source

  • Clonegit clone https://github.com/frappe/crm
  • ImageContainer

Frappe Cloud · Free closed source

For agents: JSON · Markdown

Adaptable: what is yours to change

Make it yours

Config only6 things to edit

Site-level settings live in sites/<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/<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 need
Twilio or Exotel (calling, optional)SMTP providerFrappe Cloud account (hosted edition)

Source

Operable: what an agent can drive

Interface

OfficialAPIpublished by the builderremote or local

How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.

Docs
docs.frappe.io/framework/user/en/api/rest

Reach

Partial coverage. 5 of 9 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
Create and update leads and dealsReachableFrappe REST: /api/resource/CRM Lead and CRM Deal with token auth
Notes, tasks and call logs on a recordReachableCRM Note, CRM Task, CRM Call Log DocTypes through /api/resource
Move deals through pipeline stagesReachableStatus field update on CRM Deal through REST
Add custom fieldsReachableCustom Field DocType is writable through the same API
Send and log emailReachableCommunication DocType and frappe.core.doctype.communication.email.make through /api/method
Place and record calls (Twilio, Exotel)UndeterminedIntegrations are built in; API-triggered calling not documented in README
WhatsApp messagingUndeterminedUses the third-party frappe_whatsapp app
Kanban and custom viewsNot reachableViews are UI; CRM View Settings DocType stores them but the board is a front-end feature
Invoice from a dealUndeterminedRequires ERPNext integration (erpnext_crm_settings)

Code stack

Languages
PythonJavaScript
Frameworks
Frappe FrameworkFrappe UIVue.js
Package manager
bench + pip + yarn
Database
MariaDBRedis
Hosting target
Docker (easy-install.py)Frappe Cloud
Built
Human-written (recorded, never ranked)

Evidence and confidence

FieldWhere it was seenConfidence
formFactorREADME: Frappe Framework web app with Vue front end95%
executionModelNo model SDK in README; domain_enrichment module exists (unverified)70%
operabilityFrappe Framework REST API docs; CRM DocTypes under crm/fcrm/doctype90%
effortcrm/hooks.py and settings DocType JSON files in the repo tree80%
editionsREADME: Frappe Cloud managed hosting, self-host easy-install; AGPL80%
activeGitHub pushedAt 2026-09-03–
reach75%

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