CRM migration
Field-level mapping, validation, and rollback between EspoCRM and Mailchimp. We move data and schema; workflows are rebuilt natively in Mailchimp.
EspoCRM
Source
Mailchimp
Destination
Compatibility
2 of 9
objects map 1:1 between EspoCRM and Mailchimp.
Complexity
BStandard
Timeline
1-2 weeks
Overview
EspoCRM and Mailchimp serve fundamentally different functions: EspoCRM is a full-stack CRM that manages Contacts, Accounts, Opportunities, Cases, and custom entity types via its Entity Manager, while Mailchimp is an email service provider (ESP) optimized for audience segmentation, campaign automation, and send analytics. Migrating between them means accepting that only contact records and campaign targeting lists have a direct destination — Opportunities, Cases, custom entity types, activity history, and EspoCRM workflows do not have Mailchimp equivalents and are not migrated. We extract Contacts and Leads from EspoCRM via its REST API (paginated at 200 records per request), map EspoCRM fields to Mailchimp merge fields and tags, import suppression lists (unsubscribed, bounced, cleaned) so Mailchimp does not re-email them, and deliver a written inventory of any custom entity types that require manual audience reconstruction in Mailchimp.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a EspoCRM object lands in Mailchimp, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
EspoCRM
Contact
Mailchimp
Audience Member
1:1EspoCRM Contact records map to Mailchimp Audience members. We extract firstName, lastName, email, phone, and address fields and map them to Mailchimp's standard address and phone merge fields. Custom fields on Contact created via Entity Manager map to Mailchimp merge fields (maximum 40 per audience); if the source has more than 40 custom fields, we prioritize by usage frequency and flag the remainder for manual audience enrichment in Mailchimp. Multi-email fields on EspoCRM Contact are mapped to the primary EMAIL merge field; additional email addresses are stored as custom merge fields or tags.
EspoCRM
Lead
Mailchimp
Audience Member
1:1EspoCRM Lead records map to Mailchimp Audience members with their original lead status preserved as a tag or custom merge field. Leads that have been converted to Contacts (tracked via the converted flag and linked Contact/Account IDs in EspoCRM) are deduplicated against existing Contacts before import to avoid duplicate audience members. We import converted Leads as contacts and unconverted Leads as subscribers at their current EspoCRM email opt-in status.
EspoCRM
Campaign (target list)
Mailchimp
Audience Segment or Tag
lossyEspoCRM Campaign records with associated target lists (linked Leads and Contacts) are migrated as Mailchimp segments or as tag-applied contacts within a single primary audience. If the customer uses multiple EspoCRM Campaigns as distinct targeting lists, each can become a separate Mailchimp segment or the customer can consolidate into one audience with tags per campaign source. We apply tags matching the EspoCRM Campaign name to all members of that target list.
EspoCRM
Account
Mailchimp
Audience Member Merge Field or Company Tag
lossyEspoCRM Account records (companies) do not have a direct Mailchimp equivalent because Mailchimp is a contact-centric platform, not a company-centric one. We extract the company name from each Contact's Account link and map it to a COMPANY merge field on the Mailchimp audience member. If the customer uses Accounts as a segmentation dimension, we also apply a company-based tag to each audience member.
EspoCRM
Opportunity
Mailchimp
None
lossyEspoCRM Opportunities have no Mailchimp equivalent. Mailchimp does not support deal pipeline, stage, probability, or revenue tracking. We flag Opportunities during discovery, export them as a CSV for the customer's reference, and advise rebuilding the pipeline view in a dedicated CRM or spreadsheet. This is a manual reconstruction step outside the automated migration scope.
EspoCRM
Case
Mailchimp
None
lossyEspoCRM Cases (support tickets) do not migrate to Mailchimp. Mailchimp does not have a ticket or case management object. We export Case records as a CSV with status, priority, and resolution fields, and advise the customer to evaluate dedicated helpdesk platforms (Zendesk, HubSpot Service Hub, Freshdesk) if case management is needed post-migration.
EspoCRM
Custom Entity (Entity Manager)
Mailchimp
Merge Fields or Tags
lossyCustom entity types created via EspoCRM's Entity Manager are evaluated for Mailchimp compatibility. If a custom entity links to Contacts (e.g., a Subscription, Property, or Vehicle linked via link-multiple), we extract the related entity name or ID as a tag or custom merge field on the parent Contact audience member. Custom entities that are standalone with no Contact relationship are exported as CSV reference data and not imported into Mailchimp.
EspoCRM
Activity (calls, emails, meetings, tasks)
Mailchimp
None
lossyEspoCRM Activity history (Meeting, Call, Task, Email records linked to Contacts) does not migrate. Mailchimp tracks its own send engagement data (opens, clicks, bounces, unsubscribes) and does not accept external activity history as a native object. We export Activities as a CSV timeline for the customer's records. The Mailchimp engagement timeline begins on the date of the first campaign send post-migration.
EspoCRM
Document (Attachment)
Mailchimp
None
lossyEspoCRM Document records and their associated file attachments (stored on the filesystem on self-hosted instances under data/files/) do not migrate to Mailchimp. Mailchimp does not have a document management object. We identify Document records linked to Contacts during discovery, extract referenced files from the EspoCRM filesystem archive if self-hosted, and deliver them as a zip archive for manual attachment to relevant audience members or for use in future campaigns.
| EspoCRM | Mailchimp | Compatibility | |
|---|---|---|---|
| Contact | Audience Member1:1 | Fully supported | |
| Lead | Audience Member1:1 | Fully supported | |
| Campaign (target list) | Audience Segment or Taglossy | Fully supported | |
| Account | Audience Member Merge Field or Company Taglossy | Fully supported | |
| Opportunity | Nonelossy | Fully supported | |
| Case | Nonelossy | Fully supported | |
| Custom Entity (Entity Manager) | Merge Fields or Tagslossy | Fully supported | |
| Activity (calls, emails, meetings, tasks) | Nonelossy | Fully supported | |
| Document (Attachment) | Nonelossy | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
EspoCRM gotchas
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
Mailchimp gotchas
Contact count includes unsubscribed and non-subscribed records
Automation workflows cannot be exported
Account suspensions trigger silently during migration
Template HTML is Mailchimp-specific and may not render in other platforms
E-commerce data requires active store connection
Pair-specific challenges
Migration approach
Discovery and contact audit
We authenticate to the EspoCRM instance via REST API and audit all entity types with record counts. We extract Contact, Lead, Account, Campaign, and custom entity metadata including field names, data types, and option values. We identify opt-out status fields, bounced email flags, and multi-email field patterns. We confirm the self-hosted versus cloud deployment because self-hosted instances may store attachments on the filesystem requiring a separate file extraction step. The discovery output is a written data map with record counts, field inventory, and a Mailchimp plan recommendation based on the contact volume.
Suppression list extraction and formatting
We extract all EspoCRM contacts with opt-out status, bounced email flags, and status set to Spam or Cleaned. We format these as a Mailchimp suppression list CSV (email address plus status reason) and import them into the target Mailchimp audience before any active contact import. This step is mandatory to protect sender reputation and prevent Mailchimp from rejecting active imports that conflict with suppression records. We confirm the suppression import completed in Mailchimp's audience settings before proceeding.
Merge field schema design
We map EspoCRM Contact and Lead fields to Mailchimp merge fields and tags. Standard fields (first name, last name, email, phone, address) map to Mailchimp's built-in merge fields. Custom Entity Manager fields are evaluated for merge field creation, ranked by usage density, and truncated to the 40-field limit per Mailchimp audience. Multi-enum fields with more than 20 options (the EspoCRM cap) are mapped to Mailchimp tags rather than merge fields. We configure the Mailchimp audience merge field schema via the Mailchimp API before record import begins.
Active contact and lead import
We export all EspoCRM Contacts and Leads (excluding suppression records already handled) via paginated REST API calls, applying EspoCRM's maxSize parameter and sequential pagination to retrieve all records without truncation. We transform each record using the merge field mapping from step 3, resolve each Contact's linked Account name into the COMPANY merge field, apply Campaign target list names as tags, and upsert into the Mailchimp audience using the email address as the dedupe key. We use Mailchimp's batch API for imports exceeding 1,000 records to stay within rate limits.
Campaign target list import and tagging
We extract EspoCRM Campaign records and their associated target list relationships (which Contacts and Leads are linked to each Campaign). We apply Mailchimp tags matching each Campaign name to the corresponding audience members. If the customer uses separate EspoCRM Campaigns as distinct audience segments rather than targeting lists for a single audience, we discuss whether to create separate Mailchimp audiences or consolidate into one audience with per-campaign tags. We document the tagging strategy in the migration spec and apply tags via Mailchimp's batch tag API.
Cutover, validation, and reference data delivery
We freeze EspoCRM contact writes during the cutover window and run a delta pass to capture any records modified since the initial extraction. We validate the Mailchimp audience by spot-checking 25-50 records against the EspoCRM source, confirming email addresses, merge field values, and tags are correct. We deliver the suppressed CSV, the activity history export, the Opportunity export, and the Document/attachment zip archive to the customer's designated dropbox. We do not rebuild EspoCRM workflows or Advanced Pack automations in Mailchimp Customer Journeys; we deliver a written automation inventory for the customer's marketing team to rebuild manually.
Platform deep dives
EspoCRM
Source
Strengths
Weaknesses
Mailchimp
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between EspoCRM and Mailchimp.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across EspoCRM and Mailchimp.
Object compatibility
All 8 core objects map 1:1 between EspoCRM and Mailchimp.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
EspoCRM: Not publicly documented; rate limits can be configured server-side in the EspoCRM config file.
Data volume sensitivity
EspoCRM doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during EspoCRM to Mailchimp migration scoping. Not seeing yours? Book a call.
Walk through your EspoCRM to Mailchimp migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave EspoCRM
Other ways to arrive at Mailchimp
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.