CRM migration

Migrate from Mailchimp to Twenty CRM

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

Mailchimp logo

Mailchimp

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between Mailchimp and Twenty CRM.

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Try the reverse

Twenty CRM
Mailchimp

Overview

What this migration involves

Moving from Mailchimp to Twenty CRM is a shift from an email-marketing platform with contact-list features to a full CRM with Contacts, Companies, Opportunities, Tasks, and a native Activity timeline. The structural difference is that Mailchimp organizes data around Audiences (top-level containers) while Twenty CRM uses a workspace with Contacts, Companies, and custom objects. We resolve the Audience-to-workspace mapping during scoping, map standard contact fields and merge fields to Twenty's typed schema, and preserve Tags as labels on each Contact record. Suppressed and cleaned Mailchimp addresses are explicitly flagged at import time so they do not default to active status in Twenty. Mailchimp Automations, Sequences, and workflow logic do not migrate; we deliver a written inventory of each automation with its trigger, step count, and recommended CRM equivalent in Twenty. Campaign content migrates as a structured Note on each Contact with the campaign name, subject, send date, and engagement summary.

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

Mailchimp logo

Mailchimp

What's pushing teams away

  • Pricing scales aggressively with contact count; reports of $45/month for just 1,000–1,500 contacts create sticker shock as lists grow.
  • Automation workflow builder becomes restrictive on Standard tier with a five-step limit, forcing upgrades to unlock basic customer journeys.
  • Post-Intuit acquisition (2021) leaves users uncertain about platform direction, with Reddit threads calling it 'limited' and 'letting it die on the vine.'
  • Template design flexibility is limited; power users report needing HTML, CSS, and JavaScript workarounds to achieve desired visual results.
  • Account suspensions happen unpredictably according to review reports, causing disruption to active campaign schedules.

Choosing

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How Mailchimp objects map to Twenty CRM

Each row shows how a Mailchimp object lands in Twenty CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Mailchimp

Audience

maps to

Twenty CRM

Workspace (single or multiple)

lossy
Fully supported

Mailchimp Audiences are top-level containers that hold contacts, tags, groups, segments, and merge fields with their own opt-in settings and GDPR compliance flags. Twenty CRM organizes data within a single workspace per deployment. For migrations with one Audience, we create a single workspace. For multi-Audience migrations, we assess whether contacts belong in one workspace (with a source_Audience label) or whether separate workspaces are warranted, and we preserve the original Audience name as a custom field mc_original_audience__c on each Contact record for audit and segmentation purposes.

Mailchimp

Contact

maps to

Twenty CRM

Contact

1:1
Fully supported

Mailchimp Contact records map directly to Twenty CRM Contact. We map standard fields: email (EMAIL), first name (FNAME), last name (LNAME), phone (PHONE), address fields (CITY, STATE, COUNTRY, ZIP, ADDRESS fields). Subscription status (subscribed, unsubscribed, non-subscribed, cleaned) maps to a custom picklist field mc_subscription_status__c on Twenty Contact. GDPR consent flags (GDPR_consent, GDPR_consent_sent) map to a boolean field mc_gdpr_consent__c. Merge field values migrate to their corresponding custom fields in Twenty's Contact schema.

Mailchimp

Tag

maps to

Twenty CRM

Tag (on Contact)

1:1
Fully supported

Mailchimp Tags are freeform labels applied to individual contacts. We export all tag names and their contact associations. Tags migrate 1:1 to Twenty CRM as labels on each Contact record. Twenty stores tags as a tag_ids array on the Contact object. We resolve each tag by name, creating the tag in Twenty if it does not already exist. Tags preserve the full contact-to-tag relationship so that segmentation logic in Twenty can reference the same tag set that was used in Mailchimp.

Mailchimp

Segment

maps to

Twenty CRM

Static Group or Filter

lossy
Fully supported

Mailchimp Segments are dynamic filter definitions applied to an Audience based on field conditions (tag, merge field value, engagement status, signup source). These depend on Mailchimp's query syntax which is not portable. We export the segment rules as structured JSON metadata and apply them as static filters in Twenty CRM at migration time where feasible, or document them as named Filters in Twenty's filter builder for the admin to recreate. For segments based on engagement history (opened, clicked, purchased), we convert the segment into a static Contact list in Twenty by querying the migrated engagement data.

Mailchimp

Group

maps to

Twenty CRM

Tag or Custom Field

lossy
Fully supported

Mailchimp Groups are category-based groupings within an Audience (e.g., a 'Product Interest' category with groups 'Widget A', 'Widget B'). Groups require their parent Category to exist first. We export both Category and Group names and preserve the relationship. If the group count is small (under 20 total), we map Groups to Tags in Twenty. If the group structure is complex or used for preference management, we map to a custom multi-select picklist field on Contact (e.g., product_interest__c with options 'Widget A', 'Widget B'). The customer's admin chooses the strategy during scoping.

Mailchimp

Merge Field

maps to

Twenty CRM

Custom Field (on Contact)

1:1
Fully supported

Mailchimp Merge Fields are custom contact properties beyond the standard fields. We preserve all merge field names, types (text, number, date, address, phone, email, dropdown, radio, checkbox, birthday), and values per contact. We create equivalent custom fields in Twenty CRM's Contact schema before import, using the appropriate Twenty field type (text, number, date, select, multi-select, checkbox). Field display labels migrate as Twenty field labels; the original Mailchimp merge tag (e.g., *|FNAME|*) is noted in the field description for reference.

Mailchimp

Campaign

maps to

Twenty CRM

Note (on Contact)

1:1
Fully supported

Mailchimp Campaign records represent sent emails, automations, or ads. We export campaign metadata (name, subject line, send date, recipient count, open rate, click rate, bounce count, unsubscribe count) as structured fields and attach a Campaign summary Note to each Contact in Twenty CRM who was a recipient. The Note includes the campaign name, send date, and a summary of the Contact's engagement (opened, clicked, bounced, unsubscribed). Full campaign content (HTML body) is exported separately as an HTML file and referenced in the Note for the admin to review.

Mailchimp

Automation

maps to

Twenty CRM

N/A (document only)

1:1
Fully supported

Mailchimp's automation engine (Welcome emails, abandoned cart, birthday, post-purchase, date-based, API-triggered) stores workflow logic in a proprietary format with no export mechanism. We do not migrate automations as code. We inventory every active automation with its trigger type (e.g., 'Contact joins segment', 'Date arrives', 'API call'), step count, enrollment count, and action summary. We deliver this as a structured checklist with recommended equivalents in Twenty CRM's task and activity model. The customer's admin rebuilds automations manually or connects an external workflow tool (n8n, Zapier) using Twenty's REST API.

Mailchimp

Template

maps to

Twenty CRM

HTML export (no active mapping)

1:1
Fully supported

Mailchimp email templates use Mailchimp-specific content block syntax (variables, images, dividers) that does not render natively in other platforms. We export templates as raw HTML files. In Twenty CRM, there is no native email templating feature in the core open-source release; teams that need email outreach templates typically connect a dedicated email sending tool (Gmail SMTP, Mailgun, Postmark) via Twenty's API or a Zapier/n8n integration. We flag which templates require visual rebuilding and note the original block structure for reference.

Mailchimp

Email Activity

maps to

Twenty CRM

Activity (on Contact)

1:1
Mapping required

Mailchimp Email Activity tracks individual open, click, bounce, and unsubscribe events per contact. We export the last 90 days of activity by default. Each event becomes an Activity record in Twenty CRM attached to the Contact: opens and clicks as Activity with type 'Email interaction' and metadata (campaign name, timestamp, action), bounces as a status update to mc_subscription_status__c, unsubscribes as a status update plus an Activity record. Full history pagination across multiple API pages is handled during export to ensure no events are skipped.

Mailchimp

Suppressed Address

maps to

Twenty CRM

Exclusion list

lossy
Fully supported

Mailchimp suppressed and cleaned addresses (bounced, unsubscribed, compliance-cleaned) are flagged in our export with their suppression reason and date. We do not import suppressed records as active Contacts in Twenty CRM unless explicitly requested. We deliver a suppression list as a CSV of email addresses and suppression reasons. If the customer wants a complete historical record, we import suppressed records as Contacts with mc_subscription_status__c set to 'cleaned' or 'unsubscribed' so the status is visible in Twenty without counting toward active outreach.

Mailchimp

E-Commerce Data (Orders, Products, Customers)

maps to

Twenty CRM

N/A (requires separate integration)

1:1
Fully supported

Orders, products, and customers synced via Mailchimp's e-commerce integration (Shopify, WooCommerce, BigCommerce) are only accessible while the connected store remains linked. If the customer migrates to Twenty CRM and intends to disconnect the Mailchimp store connection, we export e-commerce data to a structured CSV before the connection is severed. Twenty CRM has no native e-commerce connector in its core release; the customer will need to establish a new integration between their store and Twenty via API, Zapier, or a partner connector. We document the e-commerce data exported from Mailchimp and note the fields for mapping into any new e-commerce CRM integration.

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.

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

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • Mailchimp automation logic cannot be exported

    Mailchimp's automation engine stores workflow logic (triggers, conditions, delays, actions, enrollment criteria) in a proprietary format with no API export endpoint. Automations cannot be migrated as functional code into Twenty CRM or any other platform. We inventory every active automation with its trigger type, step count, enrollment size, and action sequence. The customer receives a structured automation checklist with recommended equivalents in Twenty CRM's task and activity model, and their admin rebuilds each workflow manually or via an external automation tool connected to Twenty's REST API. Skipping this step means the customer loses visibility into which automated customer journeys existed.

  • Contact count includes unsubscribed and non-subscribed records in Mailchimp

    Mailchimp bills based on total contacts across all Audiences, counting subscribed, unsubscribed, and non-subscribed records equally. Archived, cleaned, and deleted contacts do not count. When importing contacts into Twenty CRM, every imported record defaults to active status unless explicitly flagged. We set mc_subscription_status__c on every migrated Contact to preserve the original Mailchimp status. If the customer wants a clean suppression list, we provide a separate CSV of suppressed email addresses so they can be excluded from outreach sequences in Twenty or loaded into a suppression list in whatever email sending tool they connect.

  • Multi-Audience mapping requires upfront scope decision

    Mailchimp accounts with multiple Audiences (separate lists for different brands, products, or regions) create a mapping challenge in Twenty CRM. Twenty's workspace model organizes data within a single workspace per deployment, unlike HubSpot's portal-per-Audience structure. We resolve this during scoping: either contacts from all Audiences land in one Twenty workspace (with mc_original_audience__c preserving the source) or the customer provisions multiple Twenty workspaces if they require hard data isolation. The choice affects pricing (Twenty Cloud charges per workspace seat) and must be confirmed before migration begins.

  • E-commerce data requires early extraction before store disconnect

    Orders, products, and customers synced through Mailchimp's e-commerce integration are only retrievable while the store connection is active. If the customer discontinues the Mailchimp store connection as part of the migration, historical order data may become inaccessible. We coordinate the migration timeline so that e-commerce data export runs first, before any store connection changes. Twenty CRM has no native e-commerce connector in its core release; the customer needs to plan a separate integration between their storefront and Twenty via API or an automation tool.

  • Template HTML is Mailchimp-specific and will not render in Twenty

    Mailchimp email templates use Mailchimp-specific content block syntax (merge tags, dynamic content blocks, Mailchimp image variables) that does not parse or render in Twenty CRM or any other platform. We export templates as raw HTML files, but the customer should expect to rebuild visually complex templates in the destination's own builder. Twenty CRM does not include a native email template builder in its core release; teams sending email from Twenty typically connect an external sending tool (Gmail SMTP, Mailgun, Postmark) that has its own template system. We flag which templates require rebuilding and note the original Mailchimp block structure for reference.

Migration approach

Six steps for a successful Mailchimp to Twenty CRM data migration

  1. Discovery and Audience audit

    We audit every Mailchimp Audience in the account: total contact count, subscription status breakdown (subscribed, unsubscribed, non-subscribed, cleaned), merge field count and types, active segment definitions, active automation inventory, tag and group taxonomy, campaign history volume, and any connected e-commerce store. We also identify API key status (account-level or user-specific) and confirm that the API key remains active and has no IP restrictions that would block our export process. The discovery output is a written scope document with Audience-to-workspace mapping recommendations, a suppression list preview, and an automation inventory checklist.

  2. Workspace and schema design in Twenty CRM

    We design the destination schema in Twenty CRM based on the Mailchimp audit. For single-Audience migrations, we create one Twenty workspace. For multi-Audience migrations, we confirm the customer's choice between one workspace with source labels or multiple workspaces with data isolation. We pre-create custom fields on the Contact object for every Mailchimp merge field, the mc_subscription_status__c picklist, the mc_gdpr_consent__c boolean, and the mc_original_audience__c text field. Tags are created in Twenty before contact import so that tag IDs are available for assignment during the bulk insert phase.

  3. Suppression list extraction and contact filtering

    We export the full suppressed address list from Mailchimp before the active contact export. Suppressed records (bounced, unsubscribed, compliance-cleaned) are held in a separate CSV with their reason and date. Active contact export runs against the subscribed and non-subscribed Mailchimp segments. We apply the subscription status mapping so that unsubscribed and non-subscribed contacts land in Twenty with the correct mc_subscription_status__c value rather than defaulting to active. The suppression CSV is delivered alongside the migration as an exclusion list for the customer's email sending tool.

  4. Contact, tag, and merge field migration

    We export all contacts from each Mailchimp Audience using the Marketing API, paginating across all records and resolving any API rate-limit responses with exponential backoff. Merge field values export per contact and map to the pre-created custom fields in Twenty. Tags resolve by name — creating new Tags in Twenty if they do not exist — and attach to each Contact record at insert time. Groups migrate to Tags or a custom multi-select field based on the customer's scoping choice. The insert uses Twenty's REST API with batch chunking to handle large contact volumes without timeouts.

  5. Campaign engagement history and activity timeline migration

    We export email activity (opens, clicks, bounces, unsubscribes) per contact for the trailing 90-day window using Mailchimp's activity endpoint with full pagination. Each engagement event becomes an Activity record in Twenty CRM attached to the relevant Contact: opens and clicks as Email interaction activities with campaign metadata, bounces and unsubscribes as status-change activities. Campaign metadata (subject, send date, recipient count, aggregate open/click/bounce rates) attaches as a summary Note on each recipient Contact. Full campaign HTML content is exported as separate HTML files referenced in the Notes.

  6. Automation inventory and template handoff

    We deliver the automation inventory checklist: every active Mailchimp automation with its trigger type, step count, enrollment criteria, and action summary. We do not rebuild automations in Twenty CRM because the platform's core open-source release does not include a visual workflow builder. We recommend connecting an external automation tool (n8n, Make, Zapier) to Twenty's REST API for workflow reconstruction. We also deliver exported HTML files for each Mailchimp template with a note flagging any Mailchimp-specific block syntax that requires manual rebuilding in the customer's chosen email sending tool.

  7. Cutover, validation, and e-commerce coordination

    We pause new Mailchimp writes during cutover and run a final delta export of any contacts modified during the migration window. We validate Twenty CRM by spot-checking contact counts against Mailchimp totals, verifying field mapping on 25-50 randomly sampled records, confirming tag distributions, and validating subscription status flags against the original suppression list. If the customer has an e-commerce store connected to Mailchimp, we coordinate the final e-commerce data extraction before the store connection is updated. We deliver a reconciliation report and a post-migration guide documenting any manual steps the customer's admin must complete (e.g., connecting an email sending tool, rebuilding automations in an external workflow tool).

Platform deep dives

Context on both ends of the pair

Mailchimp logo

Mailchimp

Source

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.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

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 Mailchimp and Twenty CRM.

  • 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

    Mailchimp: Not publicly documented; varies by plan tier and request type.

  • Data volume sensitivity

    A

    Mailchimp exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Mailchimp to Twenty CRM 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 Mailchimp to Twenty CRM data migrations

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

Can't find your answer?

Walk through your Mailchimp to Twenty CRM 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 a single Audience with under 5,000 Contacts, standard merge fields, and no e-commerce data export. Multi-Audience migrations, large contact volumes (over 20,000 records), complex merge field schemas, or full campaign engagement history migrations extend to four to six weeks. The e-commerce data extraction step requires coordination with the customer's store connection timing and may add a few days if the store must remain linked during export.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Mailchimp.
Land in Twenty CRM, 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