Migrate your EspoCRM data
Open-source CRM with AGPLv3 licensing and an Entity Manager that lets non-developers build custom objects without code. Ideal for teams that want full data ownership and a leaner alternative to Salesforce.
In its favor
Why people choose EspoCRM
The signal that keeps EspoCRM on the shortlist. Sourced from G2, Capterra, and customer scoping calls.
Open-source AGPLv3 license eliminates per-contact or per-seat licensing concerns, making EspoCRM cost-predictable for growing teams with large contact volumes.
The Entity Manager lets administrators create custom entity types, fields, and relationships directly in the UI without developer involvement or code deployments.
EspoCRM explicitly states that customers own their database, data files, and custom files even on cloud plans, which matters for privacy-sensitive industries.
Self-hosted deployment means there are no platform-imposed record count limits or storage quotas beyond what the hosting infrastructure supports.
Advanced Pack and Sales Pack extensions add BPM, Workflow automation, and project management capabilities that mid-market teams otherwise need third-party tools to achieve.
Email and SMS follow-up functionality requires third-party integrations and does not work out of the box, frustrating teams expecting a complete CRM experience.
Integration ecosystem is narrow compared to HubSpot or Salesforce, with official integrations limited to Google Workspace, Outlook, Zoom, VoIP, and Stripe.
Customization depth requires increasing technical knowledge; complex entity relationships and custom PHP/Before-Save scripts become difficult to maintain across upgrades.
Performance degrades on large datasets without careful server configuration; teams with hundreds of thousands of records report slow list views and search.
Reasons to switch
Why people leave EspoCRM
The recurring reasons buyers give for replacing EspoCRM. Presented as facts, not knocks.
Platform scorecard
Strengths, weaknesses, and where EspoCRM fits
Grades across six dimensions, plus a SWOT-style view of where the platform shines and where it falls short.
SWOT — strengths, weaknesses, and use-case fit
Strengths
Weaknesses
Where it works
Where it struggles
Pricing tiers
EspoCRM pricing overview
EspoCRM offers three cloud tiers (Basic at $15/user/mo, Enterprise at $25/user/mo, Ultimate at $69/user/mo) with minimum seat requirements of 3, 5, and 10 users respectively. The self-hosted option is free under the AGPLv3 license, making EspoCRM one of the most cost-predictable CRM platforms for teams that want data ownership without per-contact or per-seat licensing fees.
Basic
Tier 1 of 4
$15/user/month
What's included
Need help selecting your CRM?
Book a free 30 minute consultationPricing is informational. FlitStack AI does not bill on EspoCRM's schedule — see our quote-based pricing →
What gets migrated
EspoCRM object support
Object-by-object support for EspoCRM migrations. Per-pair details surface during scoping.
Contacts
Fully supportedStandard Contact records with name, email, phone, address, and custom fields. Fully supported via REST API with standard CRUD. We map all Contact fields 1:1 and handle multi-enum and multi-email fields carefully.
Accounts
Fully supportedAccount (company) records linked to Contacts and Opportunities. Exposed via REST API as a distinct entity type. We preserve all link-multiple relationships to Contacts during migration.
Leads
Fully supportedLead records have a distinct lifecycle stage and can be converted into Contacts and Accounts. We track the conversion status and preserve converted-to Account/Contact IDs when migrating.
Opportunities
Fully supportedOpportunity records represent deals with amount, stage, probability, and close date. Linked to Accounts and Contacts via standard relationships. Fully migratable via API.
Cases
Fully supportedCase (support ticket) records include status, priority, resolution fields, and can link to Accounts and Contacts. We preserve the full conversation thread and attachment references.
Campaigns
Fully supportedCampaign records track marketing campaign metadata and link to target Leads and Contacts. We copy campaign records and their targeting lists but do not replicate email send history.
Documents
Mapping requiredDocuments are stored as Attachment records and can link to any entity. On self-hosted instances, files may live on the filesystem requiring a separate file-transfer step. We flag Document migration for scoping during discovery.
Custom Entities (Entity Manager)
Mapping requiredCustom entity types created via Entity Manager are fully supported but require metadata export and field-type mapping. We export the entityDefs metadata first, then migrate records, then rebuild relationships. Multi-enum field option limits (default 20) can affect data integrity.
Activities
Fully supportedActivities cover Meetings, Calls, Tasks, and Emails linked to any CRM record. Activity history is migratable but the Stream (activity feed) is a live-data feature and is not reproduced in the target system.
Users
Fully supportedUser records include role assignments, team memberships, and preferences. We map Users to corresponding users in the destination system and flag unresolvable role mappings for manual review.
Attachments
Mapping requiredAttachments are stored as separate records linked to parent entities. File attachments on self-hosted instances are filesystem-based and require separate copy. We include attachment metadata in the migration package and handle file transfer as a distinct step.
| Object | Support | Notes |
|---|---|---|
| Contacts | Fully supported | Standard Contact records with name, email, phone, address, and custom fields. Fully supported via REST API with standard CRUD. We map all Contact fields 1:1 and handle multi-enum and multi-email fields carefully. |
| Accounts | Fully supported | Account (company) records linked to Contacts and Opportunities. Exposed via REST API as a distinct entity type. We preserve all link-multiple relationships to Contacts during migration. |
| Leads | Fully supported | Lead records have a distinct lifecycle stage and can be converted into Contacts and Accounts. We track the conversion status and preserve converted-to Account/Contact IDs when migrating. |
| Opportunities | Fully supported | Opportunity records represent deals with amount, stage, probability, and close date. Linked to Accounts and Contacts via standard relationships. Fully migratable via API. |
| Cases | Fully supported | Case (support ticket) records include status, priority, resolution fields, and can link to Accounts and Contacts. We preserve the full conversation thread and attachment references. |
| Campaigns | Fully supported | Campaign records track marketing campaign metadata and link to target Leads and Contacts. We copy campaign records and their targeting lists but do not replicate email send history. |
| Documents | Mapping required | Documents are stored as Attachment records and can link to any entity. On self-hosted instances, files may live on the filesystem requiring a separate file-transfer step. We flag Document migration for scoping during discovery. |
| Custom Entities (Entity Manager) | Mapping required | Custom entity types created via Entity Manager are fully supported but require metadata export and field-type mapping. We export the entityDefs metadata first, then migrate records, then rebuild relationships. Multi-enum field option limits (default 20) can affect data integrity. |
| Activities | Fully supported | Activities cover Meetings, Calls, Tasks, and Emails linked to any CRM record. Activity history is migratable but the Stream (activity feed) is a live-data feature and is not reproduced in the target system. |
| Users | Fully supported | User records include role assignments, team memberships, and preferences. We map Users to corresponding users in the destination system and flag unresolvable role mappings for manual review. |
| Attachments | Mapping required | Attachments are stored as separate records linked to parent entities. File attachments on self-hosted instances are filesystem-based and require separate copy. We include attachment metadata in the migration package and handle file transfer as a distinct step. |
Gotchas
What to watch for in EspoCRM migrations
Issues we've hit on past EspoCRM migrations, tagged by severity. FlitStack AI handles every one — surfacing them up front because buyer engineering teams want to know.
Default 200-record API GET ceiling requires pagination
Server migration leaves WebSocket references pointing to old domain
Multi-enum field option cap of 20 limits data fidelity
Custom entity import ordering creates chicken-and-egg reference problems
Attachments on self-hosted instances are filesystem-stored
| Severity | Issue |
|---|---|
| Medium | Default 200-record API GET ceiling requires pagination |
| High | Server migration leaves WebSocket references pointing to old domain |
| Medium | Multi-enum field option cap of 20 limits data fidelity |
| High | Custom entity import ordering creates chicken-and-egg reference problems |
| Medium | Attachments on self-hosted instances are filesystem-stored |
Leaving EspoCRM?
Where EspoCRM customers move next
12 destinations EspoCRM can migrate to.
How a EspoCRM migration works
Four steps, EspoCRM-specific
Connect
API key (generated per-user in EspoCRM settings) into EspoCRM. Scopes limited to read-only on the data we move.
Map
We translate EspoCRM-specific structures (custom fields, objects, value lists) to the destination's model.
Sample
Test with a 50–200 record subset to validate EspoCRM quirks before production.
Migrate
Full migration with EspoCRM rate-limit handling. Rollback available throughout.
FAQ
EspoCRM migration FAQ
Answers to the questions buyers ask most during EspoCRM migration scoping. Not seeing yours? Book a call.
Can't find your answer?
Walk through your EspoCRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationReady when you are
Migrate EspoCRM.
Without the rebuild.
Free scoping call with a migration engineer. Tell us about your EspoCRM setup and destination — written quote back within a business day.