CRM migration

Migrate from erxes to Mailchimp

Field-level mapping, validation, and rollback between erxes and Mailchimp. We move data and schema; workflows are rebuilt natively in Mailchimp.

erxes logo

erxes

Source

Mailchimp

Destination

Mailchimp logo

Compatibility

25%

2 of 8

objects map 1:1 between erxes and Mailchimp.

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

erxes is a full CRM with Contacts, Companies, Deals, Pipelines, Tasks, and multi-channel Conversations; Mailchimp is an email marketing platform centered on Audiences of subscribers with merge field personalization and campaign automation. The migration is a data consolidation in one direction: we extract erxes Contact and Company records via GraphQL, normalize them into Mailchimp subscriber format, and push through the Mailchimp Marketing API. Deals, Pipelines, Tasks, and Conversation history do not map to Mailchimp objects and are excluded from migration scope. We deliver a written inventory of erxes Automations and Channels for the customer to rebuild inside Mailchimp's automation builder. The critical pre-work is suppressions list hygiene—erxes unsubscribes must import as suppressed contacts in Mailchimp before any sendable records land, or the migration risks triggering a spam filter audit on the new account.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

erxes logo

erxes

What's pushing teams away

  • Steep learning curve for non-technical teams who expect a point-and-click CRM without touching code or GraphQL
  • Limited enterprise-grade documentation and support outside the paid Enterprise tier leaves self-hosted teams troubleshooting alone
  • Plugin ecosystem lacks the third-party integrations available on established platforms, requiring custom development for niche tools
  • Mobile app has stability issues according to App Store reviews, with login failures reported by multiple users
  • Performance and stability can degrade with large datasets when running on underpowered self-hosted infrastructure

Choosing

Mailchimp logo

Mailchimp

What's pulling them in

  • Generous free tier with up to 500 contacts allows small teams to validate email marketing before committing to a paid plan.
  • Intuitive drag-and-drop email builder and 130+ templates let non-technical users produce professional campaigns without HTML or CSS knowledge.
  • 300+ native integrations, especially Canva and Shopify, make it easy to connect existing tools without custom development work.
  • Detailed open-rate, click-through, and campaign analytics give small businesses actionable insights without a dedicated marketing team.
  • One-platform consolidation of email campaigns, automations, landing pages, and ads reduces tool sprawl for lean marketing teams.

Object mapping

How erxes objects map to Mailchimp

Each row shows how a erxes 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.

erxes

Contact

maps to

Mailchimp

Audience Member

1:1
Fully supported

erxes Contact records map 1:1 to Mailchimp Audience members. The email address is the dedupe key. Standard fields (firstName, lastName, phone) map to Mailchimp FNAME, LNAME, and PHONE merge fields. Any erxes custom fields on Contact migrate as Mailchimp merge fields, which we create in the destination Audience before import. erxes ownerId does not map to a Mailchimp field; we flag this in the handoff documentation for teams that need rep attribution.

erxes

Company

maps to

Mailchimp

Merge Fields on Audience Member

1:many
Fully supported

erxes Company records do not have a direct Mailchimp equivalent because Mailchimp has no Account object. We split company data: the company name becomes a COMPANY merge field on each Contact that links to it, and additional company properties (industry, size, website, address) become merge fields (COMPANYINDUSTRY, COMPANYSIZE, COMPANYWEBSITE) that we populate per linked Contact. The customer decides during scoping whether to use one Audience for all contacts or segment by company domain.

erxes

Engagement: Email Campaign

maps to

Mailchimp

Tag

lossy
Fully supported

erxes email campaign history does not map to Mailchimp campaign records (Mailchimp campaigns are not created by API import; they are built inside the Mailchimp UI). Instead, we tag each Contact in Mailchimp with tags reflecting their erxes engagement history (e.g., 'Received Welcome Email', 'Opened Campaign Q4 Newsletter'). This preserves a lightweight signal of past email interaction without recreating the full campaign audit trail.

erxes

Engagement: Unsubscribes

maps to

Mailchimp

Suppression List

lossy
Fully supported

erxes contacts with an unsubscribed email status must import into Mailchimp as suppressed contacts before any sendable records land. We export the erxes unsubscribes list, format it for Mailchimp's suppression import API, and push it first. This step is mandatory for deliverability protection: importing sendable records before suppression lists can trigger Mailchimp's spam filter audit and temporarily suspend the new account's sending reputation.

erxes

User/Team Member

maps to

Mailchimp

Tag or Merge Field

lossy
Fully supported

erxes Users (team members) do not map to Mailchimp objects because Mailchimp uses account-level user access rather than contact-level owner assignments. We document the erxes user list and their assigned contacts in the handoff spreadsheet. If the customer needs rep attribution on Mailchimp contacts (e.g., for accountability or territory management), we add a REPASSIGNMENT merge field and populate it from erxes ownerId during contact import.

erxes

Conversation

maps to

Mailchimp

Tag

lossy
Fully supported

erxes multi-channel Conversation history (email, SMS, chat, WhatsApp messages) has no Mailchimp equivalent. We tag contacts who appear in Conversations with metadata tags (e.g., 'Has SMS History', 'Has Chat History') to signal conversation touchpoints, but the full message body, thread ordering, and channel metadata do not migrate. This is a conscious data reduction decision because Mailchimp is an email marketing platform, not a helpdesk.

erxes

Custom Field (Contact-level)

maps to

Mailchimp

Merge Field

1:1
Fully supported

erxes custom fields defined on Contacts migrate to Mailchimp merge fields with type mapping: text fields become TEXT merge fields, date fields become DATE merge fields, dropdown selects become dropdown merge fields. We create the merge fields in Mailchimp before contact import using the Mailchimp Marketing API. erxes custom fields on other objects (Deals, Tasks, Companies) do not migrate because the parent objects have no Mailchimp equivalent.

erxes

Automation Workflows

maps to

Mailchimp

Documented Inventory

lossy
Mapping required

erxes Automation Workflows (trigger-action sequences defined in the Marketing plugin) do not migrate to Mailchimp Customer Journeys because the automation logic, triggers, and conditions are platform-specific and not exportable from erxes. We extract the automation names, active/inactive status, and trigger types and deliver them as a written inventory with Mailchimp Customer Journeys equivalents. The customer rebuilds them in Mailchimp's automation builder post-migration.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

erxes logo

erxes gotchas

High

No native bulk export in Community edition

Medium

Plugin activation state affects data visibility

Medium

Custom fields have no type enforcement during import

Low

Conversation message ordering depends on server timestamps

Mailchimp logo

Mailchimp gotchas

High

Contact count includes unsubscribed and non-subscribed records

High

Automation workflows cannot be exported

Medium

Account suspensions trigger silently during migration

Medium

Template HTML is Mailchimp-specific and may not render in other platforms

Medium

E-commerce data requires active store connection

Pair-specific challenges

  • erxes has no native bulk export—extraction is GraphQL-only

    erxes does not ship a bulk export UI or REST endpoint in its open-source edition. All Contact and Company records must be extracted via paginated GraphQL queries against the erxes API. For datasets over 5,000 records, we implement cursor-based pagination with configurable page sizes, rate-limit awareness on the erxes instance, and checkpointing to resume on timeout. Very large datasets (50,000+ records) require chunking strategies across multiple export runs. We confirm all relevant plugins (Sales, Marketing) are activated before extraction begins, because deactivated plugins make their data objects inaccessible via the API even if records exist in the database.

  • Suppression list hygiene must precede sendable contact import

    Mailchimp enforces strict suppression rules: unsubscribed, bounced, and cleaned addresses must import as suppressed contacts before any sendable records land in the new Audience. If a suppressed address appears in the sendable import batch, Mailchimp rejects the entire batch and may flag the account for deliverability review. We run the erxes unsubscribes export first, push to Mailchimp's suppression list via the Marketing API, and only then begin the sendable contact import. Teams that skip this step have experienced temporary sending suspensions on the migrated account.

  • Mailchimp API rate limits restrict bulk import throughput

    The Mailchimp Marketing API enforces per-endpoint rate limits (typically 2,000 requests per minute for subscriber operations, with concurrent connection limits). Our import pipeline uses batched upsert operations (up to 500 subscribers per request using the PUT /lists/{list_id}/members/{subscriber_hash} endpoint) and respects Retry-After headers on 429 responses with exponential backoff. For migrations over 25,000 contacts, the total import window extends to several hours; we schedule imports during off-peak Mailchimp hours to minimize queue pressure.

  • erxes company-to-contact relationship collapses in Mailchimp

    erxes Companies are distinct records with a one-to-many relationship to Contacts (one Company linked to many Contacts). Mailchimp has no Account or Company object—company data lives as merge fields on individual subscriber records. When we split the Company onto Contact merge fields, the one-to-many relationship is flattened. This means Mailchimp cannot generate a 'all contacts at Company X' view natively. We document this limitation in the handoff and recommend using Mailchimp's tagging strategy (e.g., a tag per company) as a partial workaround for segmentation, though it does not replace a true relational company object.

Migration approach

Six steps for a successful erxes to Mailchimp data migration

  1. Discovery and plugin activation verification

    We audit the erxes instance to confirm which plugins are active (Sales, Marketing, Operations) because inactive plugins make their data objects inaccessible via the API. We extract record counts for Contacts, Companies, Conversations, and active Automations. We verify SPF, DKIM, and domain authentication status on erxes for deliverability baseline. We review erxes custom field definitions on Contacts to map them to Mailchimp merge field types (TEXT, DATE, NUMBER, DROPDOWN). The discovery output is a written scope confirming object counts, field mapping, and suppression list volume.

  2. Mailchimp Audience setup and merge field creation

    We create the destination Mailchimp Audience (or confirm the existing Audience name and list ID) and provision all required merge fields using the Mailchimp Marketing API before any contact import begins. Merge field names follow Mailchimp naming conventions (max 10 characters, uppercase, alphanumeric). We configure the audience settings: default from-name, reply-to address, and double opt-in preference. We also set up any tags required for engagement history signaling (e.g., 'erxes-migrated', 'Has-Conversation-History').

  3. Suppression list import first

    We export all erxes contacts with an unsubscribed, bounced, or cleaned email status and format the list for Mailchimp's suppression import API. We push this suppression list before any sendable record import. This step is sequenced first and validated by querying Mailchimp's suppression list count before proceeding. If the suppression list is empty, we document that and proceed directly to sendable import.

  4. Contact extraction via GraphQL with pagination

    We extract erxes Contacts in paginated GraphQL batches using cursor-based pagination. Each batch includes all standard fields (email, firstName, lastName, phone) plus all custom field values and the linked Company ID for merge field enrichment. We implement checkpointing so that extraction can resume from the last cursor position on timeout. For datasets over 25,000 records, we split extraction across multiple concurrent workers with shared checkpoint state.

  5. Transform, deduplicate, and push via Mailchimp API

    We transform erxes contacts into Mailchimp subscriber format: email becomes the subscriber_hash (MD5 of lowercase email), standard fields map to FNAME/LNAME/PHONE, company data enriches to merge fields, and engagement history generates tags. We run deduplication against the Mailchimp Audience before each batch upsert to avoid creating duplicate subscribers. Batches of up to 500 subscribers push via the Mailchimp PUT members endpoint with exponential backoff on rate-limit responses. We emit a per-batch success/failure count and log failures for reconciliation.

  6. Validation, reconciliation, and handoff

    We run a post-migration reconciliation comparing erxes sendable contact count against Mailchimp Audience member count (excluding suppressions). We spot-check 25-50 records in Mailchimp against the erxes source for field-level accuracy on merge fields and tags. We deliver the written Automation inventory document listing each erxes automation with its trigger type and a Mailchimp Customer Journeys equivalent recommendation. We do not rebuild automations inside Mailchimp; that work is handled by the customer's marketing team or a Mailchimp-certified partner.

Platform deep dives

Context on both ends of the pair

erxes logo

erxes

Source

Strengths

  • True open-source with MIT license gives full code access and modification rights without vendor lock-in
  • Self-hosting option on DigitalOcean, AWS, or on-premise infrastructure provides complete data residency control
  • All-in-one platform consolidating marketing, sales, operations, and customer service modules
  • Plugin-based architecture allows activating only needed functionality without paying for unused features
  • Free Community edition offers generous feature set comparable to paid SaaS CRM tiers

Weaknesses

  • Steep technical learning curve requiring GraphQL knowledge and React familiarity for deep customization
  • Limited third-party integration marketplace compared to established CRM platforms
  • Documentation gaps make self-service troubleshooting difficult outside of paid support tiers
  • Mobile application stability issues reported in user reviews with authentication failures
  • Performance can degrade with large data volumes on underpowered self-hosted deployments
Mailchimp logo

Mailchimp

Destination

Strengths

  • Free plan up to 500 contacts makes it the lowest-friction entry point for new email marketers.
  • Drag-and-drop builder and template library produce polished emails without design or coding skills.
  • Strong deliverability reputation backed by years of email infrastructure expertise.
  • 300+ native integrations cover the most common marketing stack combinations out of the box.
  • Consolidated platform for email, automation, landing pages, and ads reduces the number of tools small teams must manage.

Weaknesses

  • Contact-based pricing model charges for unsubscribed and non-subscribed records, inflating costs relative to competitors.
  • Five-step automation limit on Standard tier forces upgrades for basic customer journeys, a frequently cited frustration.
  • Template HTML is Mailchimp-specific and does not export cleanly for use in other email platforms.
  • Post-Intuit roadmap uncertainty means customers cannot confidently plan long-term platform investments.
  • Account suspension risk without clear pre-warning disrupts campaign scheduling for affected businesses.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across erxes and Mailchimp.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    erxes: Not publicly documented.

  • Data volume sensitivity

    B

    erxes doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your erxes to Mailchimp migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about erxes to Mailchimp data migrations

Answers to the questions buyers ask most during erxes to Mailchimp migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your erxes to Mailchimp migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and three weeks for under 10,000 Contacts with no custom objects. Migrations with 10,000-50,000 Contacts, company merge field normalization, engagement history tagging, and suppression list pre-import extend to four to six weeks. The erxes GraphQL extraction phase typically takes one to three days depending on record volume and instance performance. The Mailchimp API import phase takes four to eight hours for 10,000 contacts due to rate-limit pacing; larger datasets extend proportionally.

Adjacent paths

Related migrations to explore

Ready when you are

Move from erxes.
Land in Mailchimp, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day