CRM migration
Field-level mapping, validation, and rollback between MARS and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
MARS
Source
Twenty CRM
Destination
Compatibility
8 of 10
objects map 1:1 between MARS and Twenty CRM.
Complexity
CModerate
Timeline
2-4 weeks
Overview
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.
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 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
Twenty CRM
People
1:1MARS 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
Twenty CRM
Company
1:1MARS 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
Twenty CRM
Opportunity
1:1MARS 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
Twenty CRM
Opportunity Stage
lossyEach 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)
Twenty CRM
Task or Note
1:1MARS 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
Twenty CRM
User
1:1MARS 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
Twenty CRM
Custom Object
1:1MARS 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)
Twenty CRM
Custom Object (Products)
1:1If 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
Twenty CRM
Custom Field or Note Tag
lossyMARS 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
Twenty CRM
Note
1:1MARS 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.
| MARS | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Deal Stage | Opportunity Stagelossy | Fully supported | |
| Activity (calls, emails, meetings) | Task or Note1:1 | Fully supported | |
| Owner | User1:1 | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| Product (if applicable) | Custom Object (Products)1:1 | Fully supported | |
| Tag or Label | Custom Field or Note Taglossy | Fully supported | |
| Note or Attachment | Note1:1 | 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.
MARS gotchas
Low public information
Vendor-implemented deployments vary widely
No public API documented
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
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).
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.
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.
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.
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.
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
MARS
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 8 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across MARS and Twenty CRM.
Object compatibility
8 of 8 objects need a mapping; the rest are 1:1.
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
MARS: Not publicly documented..
Data volume sensitivity
MARS 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 MARS to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave MARS
Other ways to arrive at Twenty CRM
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.