CRM migration

Migrate from MARS to Twenty CRM

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

MARS logo

MARS

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

80%

8 of 10

objects map 1:1 between MARS and Twenty CRM.

Complexity

CModerate

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from MARS to Twenty CRM is a platform modernization that trades mid-market SaaS licensing for an open-source, self-hostable CRM with a $9 per seat per month cloud option. MARS stores contacts, companies, deals, and activities in a standard CRM object model; Twenty uses Company, People, Opportunity, Task, and Note as its core objects with a deliberately minimal standard field set. We pre-create every custom field in Twenty Settings before CSV import, resolve owner references by inviting the team before record migration, and preserve deal stage ordering as Opportunity stage values. Twenty's open-source model (AGPL-3.0, 44,000+ GitHub stars) means your data is portable via direct SQL query. We do not migrate workflows, automations, or views; we deliver a written inventory of these for your admin to rebuild in Twenty's settings.

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

MARS logo

MARS

What's pushing teams away

  • Limited public footprint makes peer validation impossible and slows due diligence.
  • No publicly documented developer API restricts integration into modern BI, marketing, and automation tools.
  • Smaller vendor scale translates to thinner partner ecosystem and integration libraries.
  • Mobile, cloud-native UX, and modern admin tooling typically lag market leaders.
  • Pricing and contract terms are sales-led with no transparency for early-stage evaluation.

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

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

MARS

Contact

maps to

Twenty CRM

People

1:1
Fully supported

MARS Contact records map to Twenty People. The mapping requires that every MARS contact field has a corresponding Twenty field created in Settings → Data Model before CSV import. If MARS stores multiple phone numbers or email addresses per contact, these map to the primary Phone and Email fields; additional contact details may require custom fields in Twenty since GitHub issue #13953 notes that Twenty's standard Person fields are intentionally minimal. Owner references on People require that the corresponding Twenty User exists before import.

MARS

Company

maps to

Twenty CRM

Company

1:1
Fully supported

MARS Company records map directly to Twenty Company. Twenty's Company object uses the same object name, which simplifies the mapping. The MARS company domain or website becomes the Company Website field. Companies are imported first because People records typically reference a Company via a lookup field. Custom fields on MARS Company require pre-creation in Twenty Settings → Data Model before import.

MARS

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

MARS Deal records map to Twenty Opportunity. The MARS deal stage maps to Twenty's Opportunity stage values, which the customer configures in Settings before migration. Closed-Lost and Closed-Won reasons from MARS custom fields migrate as custom Opportunity fields in Twenty. The Opportunity amount and close date map directly to the corresponding Twenty Opportunity fields.

MARS

Deal Stage

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Each MARS pipeline stage becomes a Twenty Opportunity stage value. The customer configures the ordered stage list in Settings before migration. Probability percentages from MARS can be stored as custom Opportunity fields in Twenty since Twenty's standard Opportunity model does not include automatic stage probability. The stage mapping document created during scoping is referenced during CSV import.

MARS

Activity (calls, emails, meetings)

maps to

Twenty CRM

Task or Note

1:1
Fully supported

MARS Activity records map to Twenty Task or Note depending on the activity type. Calls and tasks map to Twenty Task. Meeting records map to Twenty Task with a meeting flag or to Note depending on the activity content. Email records without a call or meeting classification typically map to Note in Twenty's standard model since Twenty does not have a native email logging object equivalent to Salesforce's EmailMessage. Activity timestamps preserve the original MARS date for timeline ordering.

MARS

Owner

maps to

Twenty CRM

User

1:1
Fully supported

MARS Owner records map to Twenty User. Owner resolution happens by email match. Critical requirement from Twenty's documentation: users must be invited and must accept the invitation in Twenty Settings → Members before importing any records that reference an owner or assignee. Owners without a matching Twenty User are held in a reconciliation queue for the customer's admin to provision before record import proceeds.

MARS

Custom Object

maps to

Twenty CRM

Custom Object

1:1
Fully supported

MARS custom objects migrate to Twenty Custom Objects with equivalent API names. Each custom object requires pre-creation in Twenty Settings → Data Model before data import. Custom fields on custom objects, lookup relationships to standard objects (People, Company, Opportunity), and any validation settings must be configured before the CSV import runs. The import order for custom objects is last in the dependency sequence because they often have foreign keys to standard objects imported earlier.

MARS

Product (if applicable)

maps to

Twenty CRM

Custom Object (Products)

1:1
Fully supported

If MARS stores product or service records linked to Deals, these migrate as Twenty Custom Objects since Twenty's standard model does not include a built-in Product2 equivalent. Product name, SKU, unit price, and description map to custom fields on the Products custom object. Price book and pricing configuration from MARS requires manual setup in Twenty or a custom field structure.

MARS

Tag or Label

maps to

Twenty CRM

Custom Field or Note Tag

lossy
Fully supported

MARS tags and labels stored as multi-select properties on Contact, Company, or Deal migrate to Twenty custom multi-select fields. If MARS tags are used for content classification rather than CRM segmentation, they may map to Note tags or a custom classification field. The customer chooses the tag strategy during scoping based on how tags are used in reporting and segmentation.

MARS

Note or Attachment

maps to

Twenty CRM

Note

1:1
Fully supported

MARS notes migrate to Twenty Note records linked to the parent People, Company, or Opportunity record. Attachments associated with MARS notes migrate as file references in Twenty if the attachment storage path is preserved in the export, or as Note records with a content summary. Rich text formatting in MARS notes preserves as plain text or basic HTML in Twenty Note.

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.

MARS logo

MARS gotchas

High

Low public information

High

Vendor-implemented deployments vary widely

Medium

No public API documented

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

  • Custom fields must exist before CSV import runs

    Twenty's CSV import creates records, not fields. If MARS has custom fields (contact types, deal categories, custom dates, or custom numeric fields), those fields must be created in Twenty Settings → Data Model before the import process begins. GitHub issue #13953 documents the onboarding friction where new Twenty users spend 30-60 minutes creating basic fields before they can start. We pre-create all MARS custom fields in the Twenty workspace during the setup phase, but the customer must review and approve the field list so that no required mappings are missed. Skipping this step causes the CSV import to silently drop custom field data or fail on type mismatches.

  • User accounts must be provisioned before owner references can resolve

    Twenty's migration documentation explicitly states that users must exist before importing records with owner or assignee references. If MARS owner records reference users who have not been invited and have not accepted their Twenty invitation, those owner references will be null or orphaned. We run owner reconciliation as a dedicated step before any record migration, extracting every distinct MARS owner by email and matching against the Twenty User table. Any unmatched owners go to a queue for the customer's admin to provision. This is a blocking step for record import.

  • Workflows, automations, and views do not migrate

    Twenty's migration documentation states that views, workflows, and permissions must be recreated manually after migration. MARS workflows and automation rules cannot be exported and replayed in Twenty because the automation models are architecturally different. We do not migrate workflows as code. We deliver a written inventory of every active MARS workflow and automation with its trigger, conditions, actions, and recommended Twenty equivalent. The customer's admin rebuilds these in Twenty Settings. This work is outside the standard migration scope and should be budgeted separately.

  • Activity history may require manual field mapping for non-standard types

    Twenty's standard model does not include a native email logging object equivalent to Salesforce's EmailMessage. MARS activities that are emails (not calls, meetings, or tasks) map to Twenty Note rather than a structured activity object. If the customer's MARS data relies on activity type classification for reporting, the migration team needs to document the classification rules and apply them during the CSV transform. Activity timestamps and content migrate, but the activity type filter behavior may differ in Twenty's UI compared to MARS.

  • Data cleanup before migration reduces import volume and errors

    MARS exports typically include outdated contacts (no activity in two or more years), duplicate records, test data, and unused custom fields that were created and abandoned over time. Migrating everything as-is means carrying that noise into Twenty. We recommend and perform a pre-migration data audit: identify active versus inactive records, mark duplicates for deduplication in MARS before export, remove test records, and document which custom fields are actually used versus abandoned. This reduces CSV import volume, shortens migration time, and improves data quality in the destination system.

Migration approach

Six steps for a successful MARS to Twenty CRM data migration

  1. Discovery and data audit

    We audit the MARS data model across contacts, companies, deals, activities, custom objects, custom fields, owner assignments, and deal stage configurations. We identify which MARS fields are actively used versus legacy or abandoned. We extract record counts per object, identify duplicates and outdated records for cleanup, and document the custom field types that require pre-creation in Twenty. The discovery output is a written migration scope, a data cleanup recommendation, and a field inventory mapping each MARS field to a Twenty field (standard or custom).

  2. Twenty workspace preparation

    We configure the Twenty workspace before any data import. This includes creating all custom fields identified during discovery in Settings → Data Model (for both standard and custom objects), configuring Opportunity stage values and ordering to match the MARS deal stage configuration, setting up custom object schemas with lookup relationships, and inviting all team members who appear as owners in the MARS data. The Twenty workspace is prepared in a staging environment first so that the customer can verify field labels, picklist values, and stage orderings before production migration begins.

  3. Owner reconciliation and user provisioning

    We extract every distinct MARS Owner referenced across contacts, companies, deals, and activities and match by email against the Twenty User table. Owners without a matching Twenty User are flagged in a reconciliation report. The customer's admin provisions any missing users in Twenty Settings → Members and confirms acceptance of invitations. Migration cannot proceed past this step because OwnerId references on People, Company, and Opportunity require a valid Twenty User record to resolve.

  4. Sandbox migration and validation

    We run a full migration into a staging Twenty instance using the exported MARS data. The customer's team spot-checks 25-50 records against the MARS source to verify field mapping accuracy, deal stage assignment, activity content, and owner assignment. Any mapping corrections (field name typos, incorrect type mappings, missing custom fields) are documented and corrected before production migration begins. This validation step prevents corrections in production, which are more disruptive.

  5. Production migration in dependency order

    We run production migration in the correct dependency sequence: Twenty Users (validated, not re-imported), Companies (base object, no dependencies), People (with Company lookup resolved), Opportunities (with Company lookup and OwnerId resolved), Tasks and Notes (with parent record Lookups resolved), Custom Objects (last because they often reference standard objects). Each phase emits a row-count reconciliation report. The MARS system is placed in read-only mode during the cutover window to capture any last-minute changes as a delta import.

  6. Cutover, validation, and workflow handoff

    We freeze MARS writes during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty as the system of record. We deliver the Workflow and Automation inventory document to the customer's admin team with recommended equivalents in Twenty Settings. We support a three-day hypercare window where we resolve any data quality issues reported by the customer's team. We do not rebuild MARS workflows in Twenty; that work is scoped separately for the customer's admin.

Platform deep dives

Context on both ends of the pair

MARS logo

MARS

Source

Strengths

  • Configurable to domain-specific workflows.
  • Direct vendor relationship for support and customization.
  • On-premise or private-cloud deployment options.
  • Tenant-specific schema flexibility.
  • Responsive support during onboarding (typical of smaller vendors).

Weaknesses

  • Limited public reviewer presence.
  • No publicly documented developer API.
  • Smaller integration ecosystem.
  • Mobile and cloud-native UX lags.
  • Sales-led pricing with limited transparency.
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?

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

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across MARS and Twenty CRM.

  • Object compatibility

    D

    8 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

    MARS: Not publicly documented..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Migrations under 15,000 contacts, 3,000 deals, and no custom objects typically complete in two to four weeks. Mid-market migrations with multiple custom objects, large activity histories (over 200,000 activity records), complex deal stage configurations, or teams of 25-100 users extend to five to eight weeks. The pre-migration workspace setup (creating custom fields and inviting users) adds one to two weeks of preparation before data migration begins. Twenty's own documentation recommends planning time for configuration work post-migration.

Adjacent paths

Related migrations to explore

Ready when you are

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