CRM migration
Field-level mapping, validation, and rollback between Mothernode and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Mothernode
Source
Twenty CRM
Destination
Compatibility
8 of 12
objects map 1:1 between Mothernode and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Mothernode to Twenty CRM is a departure from a department-centric, all-in-one platform toward a self-hosted or cloud-native open-source CRM with a flexible custom object model. Mothernode organizes data around Customers and Contacts as distinct entities with Leads and Opportunities sharing a single API endpoint, while Twenty CRM consolidates people and organizations under People, Companies, and Opportunities with a configurable pipeline. We resolve the Customer-Contact distinction by mapping Customers to Companies and Contacts to People, then handle the paginated extraction from Mothernode's narrow API surface, which covers only Customers, Contacts, Leads/Opportunities, Notes/Events, and Invoices. Enterprise-tier objects (Project Folders, Job Center) are not confirmed in Mothernode's public API documentation and are flagged for manual export. Workflows, email sequences, and reporting configurations do not migrate; we deliver a written inventory of these for the customer's 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 Mothernode 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.
Mothernode
Customer
Twenty CRM
Company
1:1Mothernode Customer records map to Twenty CRM Company. The customer_id from the GET /customers response becomes the Company identifier. Customer name maps to the Company display name, and the associated address, phone, and domain fields map to Twenty's Company fields. We resolve the Company insert order so that any subsequent Contact or Opportunity import can satisfy the Company lookup at the moment of record creation. Mothernode Enterprise customers with Project Folder or Job Center associations have these flagged for manual export because the API availability is not confirmed in the public documentation.
Mothernode
Contact
Twenty CRM
Person
1:1Mothernode Contact records map to Twenty CRM Person. We use email as the primary dedupe key during import and cross-reference the associated customer_id to link the Person to the pre-inserted Company via the Company link field in Twenty's Person schema. Contact first name, last name, phone, email, title, and address fields map directly. Custom fields detected in the API response payload during the extraction phase migrate to Twenty custom fields that we pre-create via the /metadata API before the Person import begins.
Mothernode
Lead
Twenty CRM
Person or Opportunity (semantic split)
1:manyMothernode's FAQ confirms that Leads and Opportunities are distinct objects with different meanings in the sales workflow. Both are returned from the shared GET /leads-and-opportunities endpoint with a record type indicator in the response payload. We separate Leads from Opportunities at extraction time using this indicator. Leads with early-stage semantics (sourced, uncontacted) map to Twenty Person records with a Lead opportunity status. We preserve the original Mothernode record type in a custom field on the Person for audit. Customers who have repurposed these fields non-standardly require a pre-import validation call to confirm the mapping table before data moves.
Mothernode
Opportunity
Twenty CRM
Opportunity
1:1Mothernode Opportunities share the same API endpoint as Leads and are separated using the record type indicator. We map Opportunity fields directly to Twenty CRM Opportunity: name, amount, close date, stage, owner assignment, and associated Contact and Customer references. The Customer reference resolves to the Twenty Company record via the lookup relationship established during the Company import phase. Pipeline stage names and values from Mothernode's configuration migrate to Twenty's Opportunity pipeline stage configuration, which we set up via Twenty's pipeline settings before Opportunity records are inserted.
Mothernode
Note
Twenty CRM
Comment
1:1Mothernode Notes accessible via the Notes/Events API endpoint migrate to Twenty CRM Comments. We extract note body content, associated entity IDs (Contact or Opportunity), created timestamp, and author attribution. Comments in Twenty are linked to the target record (Person or Opportunity) via the Twenty ActivityComment schema. We set the ActivityDate to the original Mothernode timestamp to preserve chronological ordering in the activity timeline.
Mothernode
Event
Twenty CRM
Activity
1:1Mothernode Events share the Notes/Events API endpoint with Notes. We extract event type, start and end datetime, duration, location, and the associated Contact or Opportunity link. Calendar-bound events migrate to Twenty CRM Activity records with start datetime, end datetime, and the linked Person or Opportunity preserved. The event type indicator maps to an Activity type field in Twenty.
Mothernode
Invoice
Twenty CRM
Custom Object (Invoice)
lossyMothernode Invoices migrate to a Twenty CRM custom object named Invoice that we pre-create via the /metadata API before import. The custom object includes fields for invoice number, issue date, due date, line items, total amount, status, and the associated Customer reference (resolved to the Twenty Company record). Invoice line items migrate as child records under the Invoice custom object. We flag any billing configurations that are Mothernode-specific (progress invoicing, which is Enterprise-only in Mothernode) as requiring admin review post-migration.
Mothernode
Owner
Twenty CRM
WorkspaceMember
1:1Owner references on Mothernode Contact, Opportunity, and Event records (owner_id in the API payload) map to Twenty CRM WorkspaceMember records. The Mothernode API does not expose a dedicated Users endpoint, so we extract distinct owner_id values from the records themselves and resolve them by email match against the Twenty workspace members table. Any owner without a matching WorkspaceMember goes to a reconciliation queue for the customer's admin to provision before record import resumes. The migration cannot proceed past Opportunity and Contact imports without resolved OwnerId references.
Mothernode
Custom Fields
Twenty CRM
Custom Fields
lossyCustom fields on Mothernode Contacts, Customers, Leads, and Opportunities are not explicitly documented in the API reference. We probe the API response schema during extraction to identify any non-standard fields beyond the documented field set. Each custom field discovered is pre-created in Twenty CRM via the /metadata API with a matching field type (text, number, date, picklist, checkbox, or currency). Custom field values migrate as part of the parent object import. Customer input is required during scoping to confirm which custom fields carry business-critical data and which can be dropped.
Mothernode
Pipeline Stages
Twenty CRM
Opportunity Pipeline Stages
lossyOpportunity records in Mothernode carry a pipeline stage value that governs the sales workflow state. The stage names and count are customer-specific and vary by Mothernode configuration. We extract all stage values from the source data, map them to Twenty's pipeline stage configuration, and pre-create the pipeline with the same stage sequence before any Opportunity records are written. Stage order and probability percentages migrate where they exist in the source data. Customers with non-standard stage repurposing require a pre-import review call to confirm the stage mapping table.
Mothernode
Project Folders
Twenty CRM
Not migrated (Enterprise-tier object)
1:1Project Folders are gated behind Mothernode Enterprise and their API availability is not confirmed in the public API documentation. We attempt to probe these endpoints during the extraction phase. If the API returns 403 or 404, we flag Project Folders as requiring a manual UI export and do not include them in the automated migration scope. Customers with heavy reliance on Project Folders should schedule a parallel manual export step and plan to recreate the structure in Twenty CRM or a separate project management tool.
Mothernode
Job Center / Jobs
Twenty CRM
Not migrated (Enterprise-tier object)
1:1Job Center Modules handle real-time job tracking for manufacturing or service operations and are an Enterprise-tier feature. The public API reference does not cover these objects. We flag Job records as requiring a manual export and do not attempt automated migration. If the customer uses Twenty CRM's self-hosted deployment and has custom object requirements for job tracking, we recommend creating a Jobs custom object via Twenty's /metadata API post-migration and populating it from the manual export.
| Mothernode | Twenty CRM | Compatibility | |
|---|---|---|---|
| Customer | Company1:1 | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Lead | Person or Opportunity (semantic split)1:many | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Note | Comment1:1 | Fully supported | |
| Event | Activity1:1 | Fully supported | |
| Invoice | Custom Object (Invoice)lossy | Fully supported | |
| Owner | WorkspaceMember1:1 | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| Pipeline Stages | Opportunity Pipeline Stageslossy | Mapping required | |
| Project Folders | Not migrated (Enterprise-tier object)1:1 | Mapping required | |
| Job Center / Jobs | Not migrated (Enterprise-tier object)1:1 | Mapping required |
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.
Mothernode gotchas
No bulk API forces sequential record reads
Enterprise-tier objects lack confirmed API coverage
HTTP Basic auth with no OAuth 2.0
Rate limits are not publicly documented
Lead vs. Opportunity distinction requires manual validation
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 API capability audit
We audit the source Mothernode tenant via its REST API endpoints: /customers, /contacts, /leads-and-opportunities, /notes-and-events, and /invoices. We probe for Enterprise-tier endpoints (Project Folders, Job Center) and document which return data versus which return 403 or 404. We capture record counts per object, identify custom fields by inspecting the response payload schema, and list distinct owner_id values for owner reconciliation. We pair this with a Twenty CRM edition review: self-hosted (free, fully configurable) or cloud (API access, OAuth 2.0). The discovery output is a written migration scope document covering what migrates automatically, what requires manual export, and what does not migrate.
Schema design and custom object provisioning in Twenty CRM
We design the destination schema in Twenty CRM. For each Mothernode object we migrate, we pre-create any missing standard objects (Opportunity pipeline, pipeline stages) and any custom objects (Invoice, or other customer-specific objects) via Twenty's /metadata API. Custom fields discovered during extraction are created with matching types before any data import begins. We configure the pipeline stage order to match the source Mothernode configuration and create the workspace member mapping table for owner reconciliation. Schema is deployed into a staging workspace first for validation before any production data moves.
Owner reconciliation and WorkspaceMember provisioning
We extract every distinct owner_id referenced across Contact, Opportunity, and Event records and attempt to match by email against Twenty CRM's WorkspaceMember table. Any owner without a matching WorkspaceMember goes to a reconciliation queue. The customer's admin provisions any missing workspace members in Twenty (active or inactive depending on whether the original owner is still active in the organization). Migration cannot proceed past Company, Person, and Opportunity imports because OwnerId references are required on most records. We validate the WorkspaceMember mapping table before beginning the production migration.
Staging migration and reconciliation
We run a full migration into a Twenty CRM staging environment using production-like data volume. The customer reconciles record counts (Companies in, People in, Opportunities in, Activities in), spot-checks 25-50 random records against the Mothernode source, and validates that the Customer-Contact mapping is producing the expected Company-Person structure. Any mapping corrections happen here before production migration begins. We also validate that the self-hosted Twenty installation (if applicable) is running a stable version and that the database migrations complete without the blank-CRM issue documented in Twenty's GitHub.
Production migration in dependency order
We run production migration in record-dependency order: Companies (from Mothernode Customers), People (from Mothernode Contacts, with Company link resolved), Opportunities (with Company lookup, Owner reference, and pipeline stage resolved), Activities and Comments (from Notes and Events via paginated reads), Invoices (to custom Invoice object if applicable), and custom field values as part of their parent record inserts. Each phase emits a row-count reconciliation report before the next phase begins. We use pagination chunking and parallel reads where the Mothernode API responds consistently, and exponential backoff if 429 responses appear.
Cutover, validation, and admin handoff
We freeze Mothernode write access during the cutover window, run a final delta migration of any records modified during the migration window, then enable Twenty CRM as the system of record. We deliver a written inventory of any Enterprise-tier objects requiring manual import (Project Folders, Job Center), a list of any Mothernode custom fields that could not be mapped due to missing destination schema, and a workflow rebuild reference for any marketing automation or sequence data that does not migrate. We support a one-week hypercare window to resolve reconciliation issues raised by the customer's team.
Platform deep dives
Mothernode
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Mothernode and Twenty CRM.
Object compatibility
2 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
Mothernode: Not publicly documented.
Data volume sensitivity
Mothernode 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 Mothernode to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Mothernode 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 Mothernode
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.