← Back to overview

EspoCRM

CRM · evaluated · Website · espocrm/espocrm:latest

Summary

Closest OSS equivalent to GHL. PHP/Apache + MariaDB, 139 tables covering full sales and marketing CRM: accounts, contacts, leads, opportunities, campaigns, mass email, target lists, lead capture, knowledge base, portals, calendaring, documents. REST API over everything with metadata editability, but no MCP/GraphQL and no built-in agent system. Avg score: 7.3/10.

Evaluation Scores

AI Controllability 7/10 Solid for AI operation. Full REST over every business entity, metadata API allows defining custom entities and fields at runtime, formula fields and workflows can be set via API (workflows require paid Advanced Pack). Lacks native MCP. Claude can manage contacts, run campaigns, send mass emails, capture leads, manage sales pipeline fully via API. Lower than Twenty because no MCP, no built-in agent/skill system, no GraphQL.
API Coverage 8/10 Comprehensive REST API covering all entities (Contact, Lead, Account, Opportunity, Campaign, MassEmail, TargetList, Meeting, Call, Task, Email, KnowledgeBase, Document, Portal, User, Team, Role). Metadata endpoint /api/v1/Metadata exposes full entity definitions. Multiple auth methods: API key + secret with HMAC, OAuth 2.0, HTTP Basic. Supports create/read/update/delete, list with filters/sorting/pagination. No built-in OpenAPI spec served by default.
DB Schema Quality 7/10 139 tables in MariaDB. Classic normalised relational CRM schema with snake_case naming. Strong junction tables (account_contact, contact_opportunity, lead_target_list, account_target_list). Entity-per-table model (account, contact, lead, opportunity, campaign, mass_email, target, target_list, email_template, knowledge_base_article, etc.). Less dynamic than Twenty metadata model, but custom entities and fields can be added through Entity Manager which generates tables/columns.
Feature Completeness 9/10 Closest open-source GHL equivalent of the three. Covers: full sales CRM (accounts, contacts, leads, opportunities), marketing (campaigns, mass email, target lists, lead capture, email templates with categories, tracking URLs), inbound email parsing, knowledge base with categories and portal sharing, customer portals, calendaring (meetings, calls, tasks with assignees), document management, currencies with rates, authentication providers, autofollow, dashboard templates. Advanced Pack adds workflows / BPM / formula scripting. Gaps: no built-in funnel/website builder, no SMS, no in-app scheduling for public bookings.
Resource Usage 6/10 Four containers: espocrm (PHP+Apache), espocrm-db (MariaDB), espocrm-daemon (cron runner), espocrm-websocket. PHP + Apache is a moderate footprint. Daemon and websocket containers exit and restart periodically which produces log noise but is by design. MariaDB shared across all 139 tables. Heavier than Listmonk, lighter than Mautic, similar envelope to Twenty.
Setup Complexity 7/10 Docker compose brings it up with environment variables only. Admin user is auto-created from ESPOCRM_ADMIN_USERNAME / ESPOCRM_ADMIN_PASSWORD. Schema built on first run. Working in under 30 seconds after containers start. Need to set ESPOCRM_SITE_URL to match the public URL. Easier than Twenty (no APP_SECRET generation, no Redis to manage).

Research Notes

Feature List feature_list

Sales CRM: Account, Contact, Lead, Opportunity, Case, Task, Call, Meeting, Note, Document, DocumentFolder. Full activity stream. Marketing: Campaign, CampaignLogRecord, CampaignTrackingUrl, MassEmail, Target, TargetList, TargetListCategory, LeadCapture (web-to-lead), LeadCaptureLogRecord. Email drip-ish via scheduled MassEmail + workflow (workflow = paid Advanced Pack). Email: Email, EmailAccount, EmailTemplate, EmailTemplateCategory, InboundEmail, EmailQueueItem, EmailFilter, EmailFolder, GroupEmailFolder, ImportEml. Full 2-way IMAP/SMTP. SMS: Sms entity exists — configurable via provider. Uses SMS templates, sendable from contact. Voice/Phone: Call logging only (no built-in dialer/Voice AI). AI: No built-in AI agent framework. No MCP. Recent versions ship optional AI extension (OpenAI-backed summarise/reply). Community OSS: Claude/Anthropic integrations exist as extensions. Funnel/Website Builder: None. Forms: LeadCapture form API + embeddable web forms. Surveys: None built-in. Calendar/Booking: Meeting, Call, Task, Reminder, WorkingTimeCalendar, WorkingTimeRange. No public booking page built-in (extensions exist). Courses/Memberships: KnowledgeBaseArticle + KnowledgeBaseCategory + Portal + PortalRole → client portal with KB. Not a proper LMS. Communities: Portal (customer portal) only. Payments/Invoicing/Products: Not built-in. Currency, CurrencyRecord, CurrencyRecordRate present. Extensions add Sales Pack (invoices/quotes). Reputation: None. Reporting/Dashboards: DashboardTemplate, LayoutSet, LayoutRecord. Reports engine built-in (list/grid/joint/chart). Workflows/Automation: Basic workflow in core; BPM + Advanced Pack (paid) adds drag-drop workflow + formula scripting. ScheduledJob, Job, MassAction, Autofollow, StreamSubscription, StarSubscription. Integrations: REST API (full CRUD on every entity), Metadata API (create custom entities at runtime), OAuth 2.0, HMAC API keys, Webhooks, AuthenticationProvider, Extension, Integration, ExternalAccount, OAuthAccount, OAuthProvider. White-label/SaaS Mode: Basic rebrand (Advanced Pack). No native multi-tenant. Snapshots: Extension export/import + Metadata cloning. Social: None built-in. Other: Team, Role, User, Preferences, AuthToken, 2FA (TwoFactorCode), PasswordChangeRequest, Portal, Webhook, Import/ImportEntity/ImportError.