CRM migration

Migrate from cMercury to Twenty CRM

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

cMercury logo

cMercury

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

82%

9 of 11

objects map 1:1 between cMercury and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from cMercury to Twenty CRM is a cross-category migration from an email marketing platform into a CRM. cMercury stores subscribers with engagement scores, custom profile fields, tags, and campaign performance history; Twenty CRM is an open-source CRM built around Contacts, Companies, and Opportunities with a REST API and custom object extensibility. The primary mapping is cMercury Subscribers to Twenty CRM Contacts, carrying email address, subscription status, custom fields, tags, and engagement scores as custom Contact properties. Campaign metadata and engagement history (opens, clicks, bounces) migrate as Activity records on the relevant Contact. We do not migrate automations as code, and cMercury campaign sending capabilities have no equivalent in Twenty CRM — we document the existing campaign list and recommend a send-capable tool for post-migration email execution. Sending domains require fresh DNS configuration in Twenty rather than transfer. The self-hosted update path for Twenty is documented separately as an operational consideration for customers choosing the self-hosted deployment option.

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

cMercury logo

cMercury

What's pushing teams away

  • The drag-and-drop editor, while user-friendly, lacks the advanced layout control that power users need, pushing experienced designers toward more capable tools.
  • Automation workflows are functional but lack the depth of branching logic and conditional triggers found in dedicated marketing automation platforms.
  • Some users report that customer support response times vary significantly depending on plan tier, with slower turnaround on non-Enterprise accounts.
  • The platform's relative size compared to enterprise competitors means fewer third-party integrations and a smaller ecosystem of plugins and extensions.

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 cMercury objects map to Twenty CRM

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

cMercury

Subscriber

maps to

Twenty CRM

Contact

1:1
Fully supported

cMercury Subscribers map directly to Twenty CRM Contacts. We map email address, subscription status (subscribed, unsubscribed, bounced), custom profile fields, and tags. The cMercury subscriber ID is preserved in a custom field cmercury_id__c for audit and cross-reference. Engagement score migrates as a numeric custom property engagement_score__c on the Contact record. Subscribers without an email address are flagged in the reconciliation report for manual review before import.

cMercury

Custom Fields

maps to

Twenty CRM

Custom Fields (Contact)

lossy
Fully supported

cMercury custom profile fields (text, number, date, dropdown) are provisioned as custom fields on the Twenty CRM Contact object via the /metadata API before import. We map each field by data type: text to TEXT, numbers to NUMBER, dates to DATE, and dropdowns to SELECT with the picklist options created in Twenty's schema. Field labels are preserved; API names are normalised to lowercase_underscore format per Twenty conventions.

cMercury

Tag

maps to

Twenty CRM

Tag

lossy
Fully supported

cMercury tags are flat labels applied per subscriber. We export all tags and their per-subscriber assignments, then recreate them in Twenty CRM as tag records linked via the Taggable type on Contact. Twenty's tagging model supports multiple tags per contact. If Twenty's tag count exceeds a practical limit for the customer's use case, we discuss converting high-frequency tags to a multi-select custom field instead.

cMercury

Engagement Score

maps to

Twenty CRM

Custom Field (Contact)

1:1
Fully supported

cMercury tracks per-subscriber engagement scores as numeric values. We export the score value and map it to a custom NUMBER field engagement_score__c on the Twenty CRM Contact. If the customer prefers a qualitative label (High, Medium, Low) rather than the raw score, we apply a transformation rule during import based on the customer's existing score thresholds.

cMercury

Email Verification Result

maps to

Twenty CRM

Custom Field (Contact)

1:1
Fully supported

cMercury Verify stores validation status per email address (valid, invalid, risky, catch-all). We preserve this badge as a custom SELECT field email_verification_status__c on the Twenty CRM Contact, carrying the original cMercury verification result. This allows the customer's team to filter contacts by verification status in Twenty and make deliverability decisions before sending from the new email platform.

cMercury

Segment

maps to

Twenty CRM

Named View or Custom Field Filter

1:1
Fully supported

cMercury Segments are defined by filter rules (source, engagement, custom field values). Twenty CRM does not have a native segment equivalent; instead we recreate segment logic as Named Views on the Contact list with the same filter conditions applied as saved filters. Complex nested conditions that cannot be expressed as a single view are documented as a written filter specification for the customer to implement manually in Twenty.

cMercury

Campaign (metadata)

maps to

Twenty CRM

Note or Activity (Contact)

1:1
Fully supported

cMercury campaign records include subject lines, send dates, and aggregate performance stats (opens, clicks, bounces, unsubscribes). Since Twenty CRM has no campaign sending capability, we migrate campaign metadata as Activity records (type = Note) on the Contact record, with the campaign name as the subject and performance stats in the note body. Campaign content blocks are not migratable to Twenty's data model.

cMercury

Campaign (aggregate stats)

maps to

Twenty CRM

Custom Report Data

1:1
Fully supported

Aggregate campaign performance data (open rate, click rate, bounce rate, unsubscribe rate per campaign) is exported from cMercury and delivered as a CSV companion file alongside the migration. This allows the customer's admin to reference historical campaign performance in a spreadsheet or BI tool post-migration, since Twenty CRM reporting does not natively accommodate email marketing metrics.

cMercury

Asset Library

maps to

Twenty CRM

File (Contact or Company)

1:1
Mapping required

Images and files stored in cMercury's Asset Library are downloaded and attached to the corresponding Contact record in Twenty CRM via Twenty's file attachment model. File names and folder organisation are preserved where possible. Files without a clear contact association are attached to the primary Company record or delivered as a separate file package.

cMercury

Sending Domain

maps to

Twenty CRM

Domain Configuration Documentation

1:1
Fully supported

cMercury sending domains are configured with DKIM, SPF, and DMARC records tied to cMercury's infrastructure. We document the existing domain configuration (DNS records, authentication methods) during discovery and deliver a DNS checklist for the customer to reconfigure in their new email sending platform (SendGrid, AWS SES, Postmark, or equivalent) post-migration. Sending domain ownership cannot be transferred between platforms.

cMercury

Automations

maps to

Twenty CRM

Written Inventory (rebuild required)

1:1
Mapping required

cMercury automations are named workflow sequences with triggers, delays, and actions. We document the full automation tree structure, trigger conditions, and action sequence during discovery and deliver a written automation inventory. Since Twenty CRM does not have a native automation engine equivalent and the cMercury automation model is not compatible with any CRM workflow format, the customer's admin rebuilds automations manually in their chosen platform. We estimate 1-2 hours per complex workflow.

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.

cMercury logo

cMercury gotchas

Medium

Free tier caps daily sends at 200 emails

Low

cMercury branding on Free plan emails

High

Automation workflows do not migrate automatically

Medium

Sending domain ownership cannot be transferred

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

  • cMercury campaigns have no sending equivalent in Twenty CRM

    Twenty CRM is a contact and pipeline management tool, not an email marketing platform. Campaign sending, template layouts, send-time personalisation, and A/B testing are cMercury features that do not exist in Twenty. We migrate campaign metadata and aggregate performance stats as Activity records and CSV data, but the customer must choose and configure a dedicated email sending platform (SendGrid, AWS SES, Mailchimp, Klaviyo, or equivalent) for post-migration email execution. We do not configure that platform as part of the migration scope.

  • cMercury automations do not migrate to Twenty CRM

    Automations in cMercury are workflow sequences tied to subscriber actions (sign-ups, link clicks, date-based triggers). Twenty CRM does not have an equivalent automation engine with the same trigger model or action vocabulary. We document every automation's structure and deliver a written inventory for the customer's admin to rebuild in their chosen CRM workflow tool. Skipping this step leaves critical nurture sequences and onboarding flows inactive after cutover.

  • Twenty CRM self-hosted update process can leave the CRM blank

    A documented GitHub issue (twentyhq/twenty#14705) describes a case where updating a self-hosted Twenty instance from v1.3.0 to v1.6.7 resulted in a blank CRM on login despite the database migrations completing and the server starting normally. For customers choosing self-hosted Twenty, we flag this as an operational risk during migration planning and recommend either using Twenty's managed cloud for the initial deployment or maintaining a staging update process before applying version upgrades to production.

  • Custom fields require schema provisioning via the metadata API

    Twenty CRM requires custom fields to be added through the /metadata API before data import. We provision the full field schema (field name, type, picklist options) in Twenty's sandbox or staging environment before any contact data loads. Customers choosing self-hosted Twenty must have API access enabled. Custom field naming conventions from cMercury (which allows spaces and special characters) must be normalised to Twenty's lowercase_underscore format, which we handle as part of the field mapping step.

  • Sending domains and sender reputation do not transfer

    Each cMercury sending domain carries DKIM, SPF, and DMARC records configured for cMercury's mail infrastructure. When migrating to Twenty CRM (which does not send email natively), the customer must configure DNS authentication records for their new email sending provider. We provide a DNS checklist during cutover, but the actual record changes and verification are performed by the customer's DNS administrator. A gap in this step will cause emails to land in spam or fail authentication on first send from the new platform.

Migration approach

Six steps for a successful cMercury to Twenty CRM data migration

  1. Discovery and object mapping

    We audit the cMercury account across subscriber volume, custom field definitions (field name, data type, picklist options), tag taxonomy, segment logic, automation inventory, campaign list and historical performance, engagement score distribution, and asset library size. We pair this with a Twenty CRM scoping call to confirm deployment model (self-hosted or managed cloud), API access, and custom object requirements. The discovery output is a written migration scope document with the complete object mapping table and a Twenty schema checklist.

  2. Twenty CRM schema provisioning

    We provision the destination schema in Twenty CRM using the /metadata API before any data import. This includes creating all custom fields on the Contact object (matching cMercury field types to Twenty field types), setting up picklist options for dropdown fields, and creating any custom objects required. Schema is validated in Twenty's environment before subscriber data loads. Field labels from cMercury are preserved; API names are normalised per Twenty conventions.

  3. Subscriber export and transformation

    We export cMercury subscriber records in CSV format including all standard fields (email, subscription status, created date, updated date) and custom profile fields. Engagement scores and cMercury Verify badges are extracted as separate columns. Tags are exported as a normalised relational table (subscriber_id, tag_name). We run the transformation in a staging environment, applying field type conversions, picklist value matching, and the engagement score custom field mapping before loading into Twenty.

  4. Contact migration with reconciliation

    We load contacts into Twenty CRM in batches via the REST API, with batch chunking and exponential backoff on rate limit responses. After each batch, we reconcile row counts against the source export and flag any records that failed to import. The cMercury subscriber ID is preserved in a custom field for audit. Tags are loaded after contacts are confirmed to avoid orphaned tag assignments. Engagement scores and email verification status are loaded as custom properties on each Contact.

  5. Activity and campaign history migration

    cMercury campaign metadata and aggregate performance stats are exported and delivered as Activity records (type = Note) on the relevant Contact in Twenty. Opens, clicks, and bounces per campaign are summarised and delivered as a CSV companion file. Asset library files are downloaded and re-attached to the corresponding Contact or Company record in Twenty. All engagement history is flagged as historical and not requiring further CRM action.

  6. Cutover, DNS handoff, and automation inventory delivery

    We freeze writes to cMercury during cutover and run a final delta migration of any contacts modified during the migration window. We deliver the DNS checklist for the new email sending platform and the written automation inventory document. We perform a final row-count reconciliation against the source export and hand off to the customer's admin team. We do not configure the new email sending platform or rebuild automations; those are separate engagements with the customer's marketing operations or development team.

Platform deep dives

Context on both ends of the pair

cMercury logo

cMercury

Source

Strengths

  • Built-in email verification reduces bounce rates and protects sender reputation before and after migration.
  • Multiple sending domains allow brand isolation, useful for migrating multi-brand subscriber bases.
  • Deep segmentation with conditional logic supports sophisticated audience targeting.
  • AI Writing Assistant up to 1,000 words on Enterprise helps teams generate content without third-party tools.
  • Hands-on migration support is offered directly by cMercury for teams switching platforms.

Weaknesses

  • The platform is smaller than enterprise competitors, resulting in fewer third-party integrations and a narrower ecosystem.
  • Advanced automation branching logic is limited compared to dedicated marketing automation platforms.
  • Customer support response times vary by plan tier, with non-Enterprise users reporting slower turnaround.
  • The drag-and-drop editor, while accessible, lacks the advanced layout controls that power users expect.
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 cMercury 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

    cMercury: Not publicly documented. cMercury's Terms reference API rate limits as service restrictions but exact thresholds are not disclosed on the public docs site (cmercuryapi.readme.io)..

  • Data volume sensitivity

    A

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

Estimator

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

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

Can't find your answer?

Walk through your cMercury 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 three and five weeks for accounts under 10,000 subscribers with no custom objects and a straightforward tag taxonomy. Migrations with engagement score history, large campaign performance datasets, complex custom field schemas, or custom objects requiring metadata API provisioning move to eight to twelve weeks. Twenty CRM's self-hosted update cadence and schema provisioning process add to the planning timeline for self-hosted deployments.

Adjacent paths

Related migrations to explore

Ready when you are

Move from cMercury.
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