EspoCRM
AGPL PHP CRM with a documented REST API, OpenAPI spec and official SDKs in seven languages.
Leads, contacts, opportunities, campaigns and support cases in a fast single-page app on a PHP REST backend. Configure through data/config.php and the admin UI; extend through the custom/ metadata layer without touching core. The REST API (API key or HMAC) covers CRUD, relationships, search, attachments, metadata and mass actions; workflows and reports are paid extensions.
- I need a mature CRM on a cheap PHP host with a REST API our agent can use today
- I want to add our own entities and fields without maintaining a fork
- Workflows, BPM and reports are paid extensions
- AGPL-3.0 and a CLA for contributions
- Cron must run for email, workflows and scheduled jobs
Last activity Sep 3, 2026. Fit: adaptable 2, operable 3.
Editions
Self-hosted · Free open source
Cloud · Free closed source
- HostedOpen the hosted app
Paid extensions (Advanced Pack, Sales Pack, Google, Outlook) · Free closed source
- HostedOpen the hosted app
Adaptable: what is yours to change
Make it yours
Config only4 things to edit
Runtime settings are data/config.php and data/config-internal.php (database, site URL, mail, cron). Entities, fields, layouts and labels are metadata JSON edited in the admin UI or dropped into custom/Espo/Custom/Resources; the docs describe a JSON Schema for every parameter. Core code stays untouched, which keeps upgrades clean.
- Env vars
- none
- Config files
data/config.phpdata/config-internal.phpcustom/Espo/Custom/Resources/metadata/custom/Espo/Custom/Resources/layouts/- Prompt files
- none
- Accounts you need
- SMTP providerEspoCRM account (cloud or paid extensions)
Source
- github.com/espocrm/espocrm
- AGPL-3.0 license
- Last commit Sep 3, 2026
- 3,319 stars
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.
Reach
Partial coverage. 7 of 10 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| CRUD on leads, contacts, accounts, opportunities, cases | Reachable | docs.espocrm.com API: CRUD on entities at api/v1/ |
| Link and unlink related records | Reachable | API: relationships |
| Search and filter | Reachable | API: search with where clauses |
| Attach files | Reachable | API: attachments |
| Mass update, delete, assign | Reachable | API: mass actions |
| Read the data model | Reachable | API: metadata; OpenAPI at /api/v1/OpenApi from v9.3 |
| Post to the activity stream | Reachable | API: stream |
| Send email and run campaigns | Undetermined | Email entity is CRUD-able; sending endpoint not confirmed on the API index |
| Workflows and BPM | Not reachable | Advanced Pack is a paid extension; not in the free edition |
| Reports | Not reachable | Reports are a paid extension |
Code stack
- Languages
- PHPJavaScriptTypeScript
- Frameworks
- custom SPA frameworkComposer
- Package manager
- composer + npm
- Database
- MySQLMariaDBPostgreSQL
- Hosting target
- Apache/NGINXDockerTraefik
- Built
- Human-written (recorded, never ranked)
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README Architecture: SPA front end with PHP REST backend | 95% |
| executionModel | No model dependency in README | 85% |
| operability | docs.espocrm.com/development/api: api/v1, API key or HMAC, OpenAPI, SDKs in PHP, JS, Python, Rust, Java, Go, Zig | 95% |
| effort | README: metadata described by JSON Schema; docs administration/server-configuration | 75% |
| editions | README: free open source; espocrm.com cloud and extensions | 70% |
| active | GitHub pushedAt 2026-09-03 | – |
| reach | 80% |
Open questions
- Cloud and extension prices
- Does the API expose email sending and campaign execution?
Sources
- github.com/espocrm/espocrm sourcing:smb-ops-crm:github
- docs.espocrm.com/development/api/ sourcing:smb-ops-crm:github