# 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.

Alternative to: Salesforce, HubSpot, Zoho CRM

- 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/espocrm/espocrm (AGPL-3.0), 3319 stars, last commit 2026-09-03
- Last activity: 2026-09-03
- Page: apps/espocrm--espocrm.html
- JSON: apps/espocrm--espocrm.json

## Use it when

- 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

## Gotchas

- Workflows, BPM and reports are paid extensions
- AGPL-3.0 and a CLA for contributions
- Cron must run for email, workflows and scheduled jobs

## Editions

- Self-hosted: Free, open source
  - source: https://github.com/espocrm/espocrm
  - binary: https://www.espocrm.com/download/
  - container: https://docs.espocrm.com/administration/docker/installation/
- Cloud: Free, closed source
  - hosted: https://www.espocrm.com/cloud/
- Paid extensions (Advanced Pack, Sales Pack, Google, Outlook): Free, closed source
  - hosted: https://www.espocrm.com/extensions/

## Adaptable: make it yours

Effort: config-only (4 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.php, data/config-internal.php, custom/Espo/Custom/Resources/metadata/, custom/Espo/Custom/Resources/layouts/
- Prompt files: none
- Accounts you'll need: SMTP provider; EspoCRM account (cloud or paid extensions)

## Operable: what an agent can drive

Operability: official. Interface: api at https://docs.espocrm.com/development/api/ (published by the builder, both).

### Reach (partial coverage)

- 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: PHP, JavaScript, TypeScript
- Frameworks: custom SPA framework, Composer
- Package manager: composer + npm
- Database: MySQL, MariaDB, PostgreSQL
- Hosting target: Apache/NGINX, Docker, Traefik

## Evidence and confidence

- formFactor: README Architecture: SPA front end with PHP REST backend (confidence 0.95)
- executionModel: No model dependency in README (confidence 0.85)
- operability: docs.espocrm.com/development/api: api/v1, API key or HMAC, OpenAPI, SDKs in PHP, JS, Python, Rust, Java, Go, Zig (confidence 0.95)
- effort: README: metadata described by JSON Schema; docs administration/server-configuration (confidence 0.75)
- editions: README: free open source; espocrm.com cloud and extensions (confidence 0.7)
- active: GitHub pushedAt 2026-09-03
- reach:  (confidence 0.8)

## Open questions

- Cloud and extension prices
- Does the API expose email sending and campaign execution?

## Sources

- https://github.com/espocrm/espocrm (sourcing:smb-ops-crm:github)
- https://docs.espocrm.com/development/api/ (sourcing:smb-ops-crm:github)
