CRM migration
Field-level mapping, validation, and rollback between Oncord and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Oncord
Source
Twenty CRM
Destination
Compatibility
3 of 10
objects map 1:1 between Oncord and Twenty CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Migrating from Oncord to Twenty CRM is primarily a Contacts and Custom Fields migration, complicated by Oncord's lack of a public API reference, no formal export tooling, and a modular plan structure where Marketing and Commerce are separate paid add-ons that may or may not contain data for a given customer. We extract Contact records through Oncord's CustomFields API component and account backups, map Oncord Groups to Twenty Tags, and transfer custom field definitions and values into Twenty's Data Model settings before import. Commerce Products and Events (if active) map to Twenty Custom Objects, and Automation Workflows are documented for manual rebuild in Twenty's workflow builder. Twenty's self-hosted model means zero per-seat licensing and full data ownership, but requires the customer to provision their own hosting environment; the Twenty Cloud option at roughly $9 per seat per month removes that operational overhead.
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 Oncord 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.
Oncord
Contact
Twenty CRM
People
1:1Oncord's primary Contact record maps to Twenty's People object. Standard fields (name, email, phone, address, website) transfer directly. Owner assignment on Contact (the team member responsible for the record) maps to Twenty's Account Owner field via email match against the Twenty Members list. We extract all Contact records through Oncord's CustomFields API component and account backup. Note that Twenty's People object starts with minimal standard fields out of the box; we create all required custom fields in Twenty's Settings Data Model before running the import, because the CSV import creates records only, not fields.
Oncord
Company
Twenty CRM
Company
1:1Oncord does not have a native Company or Account object; contact records store company affiliation in custom fields or the contact's organization name. We extract any explicit company data stored in Oncord's contact records or Custom Fields and map it to Twenty's Company object. The company name becomes the Company Name field; website, industry, and address migrate as Company fields or custom fields. If the customer has not used Oncord's contact schema to store company data separately, we document this gap during scoping and the customer decides whether to create Company records from contact affiliations post-migration.
Oncord
Group
Twenty CRM
Tag
lossyOncord Groups function as static segmentation lists attached to Contacts. We export all Group definitions and map each Group membership (contact-to-group relationship) to Twenty's Tag system. Tags in Twenty are stored as a multi-select field on the People record. During import, we resolve each Contact's group memberships and write them as comma-separated or multi-value Tag entries. We note that Twenty's native filtering works on Tags, but Groups used for complex conditional logic in Oncord automations will require manual reconfiguration in Twenty's workflow builder post-migration.
Oncord
Custom Field
Twenty CRM
Custom Field (People, Company, Opportunity)
lossyOncord exposes CustomFields via its internal API component. We extract custom field definitions (name, type, options) and values for each Contact record. Before importing into Twenty, we create matching custom fields in Settings Data Model, mapping Oncord types to Twenty field types (text to Text, number to Number, date to Date, dropdown to Select). Fields must exist in Twenty before the CSV import runs; the import does not create fields, only records. We handle the type mapping and flag any Oncord field types (e.g., complex multi-select or relational fields) that have no direct Twenty equivalent and require a custom field configuration workaround.
Oncord
Product (Commerce add-on)
Twenty CRM
Custom Object
lossyProducts are available only when the Commerce add-on ($40/month) is active on Oncord. We confirm add-on status during scoping before attempting to export. Product data (name, description, price, SKU, inventory count, images) maps to a Twenty Custom Object named Products or similar. We pre-create the Custom Object schema in Twenty, including fields for name, description, price, sku, and stock_quantity, then import via CSV. The customer should decide during scoping whether historical product data and images are worth the additional migration effort, since this is a best-effort configuration given Twenty's absence of a native e-commerce module.
Oncord
Event (Marketing add-on)
Twenty CRM
Custom Object
lossyEvents in Oncord include RSVP functionality, attendee lists linked to Contacts, date, location, and capacity. We export event definitions and attendee records (linked to Contact IDs) when the Marketing add-on is active. In Twenty, we create a Custom Object named Events with fields for name, event_date, location, capacity, and status. Attendee records are stored as separate Custom Object entries with a lookup relationship to the People record. The RSVP workflow itself (trigger emails, capacity enforcement) does not migrate and must be rebuilt manually in Twenty's workflow builder post-migration.
Oncord
Automation Workflow
Twenty CRM
Workflow (documented, not migrated)
lossyOncord automation workflows trigger on contact activity, group membership, or time-based schedules. We document each workflow's structure including triggers, conditions, filters, and actions, but the workflow logic does not migrate. Twenty's workflow builder uses a different trigger-and-action model, and Oncord's automation engine has no export format compatible with Twenty. We deliver a written inventory of all active Oncord workflows with a description of each trigger, condition branch, and action sequence, so the customer's admin can manually rebuild them in Twenty's workflow builder. Workflows must be recreated as a separate admin task post-migration; this work is outside standard migration scope.
Oncord
User / Owner
Twenty CRM
Member (User)
1:1Oncord includes unlimited admin users on base plans. We export user records (name, email, role) and map them to Twenty Members. Owner assignment on Contact records (which team member owns the contact) resolves via email match against the Twenty Members list during import. Any Oncord Owner without a matching Twenty Member is placed in a reconciliation queue, and the customer provisions the missing Member before record import resumes. Role semantics differ between platforms; Oncord role-based access maps to Twenty's workspace Members and permissions model.
Oncord
Web Form
Twenty CRM
Form (documented, not migrated)
lossyOncord web forms capture contacts and carry custom field mappings per form. We export form definitions and field-to-contact-property mappings as a written inventory. Twenty does not include a native form builder in its standard feature set; the customer rebuilds forms using their preferred form tool (Typeform, Tally, or a custom implementation) and maps form fields to Twenty custom fields documented in the inventory. This is a manual configuration task for the customer's admin post-migration.
Oncord
Discount / Coupon (Commerce add-on)
Twenty CRM
Custom Object
lossyDiscounts and coupons are available only with the Commerce add-on. We export discount rules, coupon codes, eligibility conditions, and usage limits when the Commerce add-on is active. These map to a Twenty Custom Object named Discounts with fields for code, discount_type, value, eligibility_rules, and usage_limit. Mapping to Twenty's schema is best-effort; the customer should confirm during scoping whether historical coupon data is operationally necessary or can be reconstructed manually in any replacement commerce workflow.
| Oncord | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Group | Taglossy | Fully supported | |
| Custom Field | Custom Field (People, Company, Opportunity)lossy | Fully supported | |
| Product (Commerce add-on) | Custom Objectlossy | Fully supported | |
| Event (Marketing add-on) | Custom Objectlossy | Fully supported | |
| Automation Workflow | Workflow (documented, not migrated)lossy | Fully supported | |
| User / Owner | Member (User)1:1 | Fully supported | |
| Web Form | Form (documented, not migrated)lossy | Fully supported | |
| Discount / Coupon (Commerce add-on) | Custom Objectlossy | 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.
Oncord gotchas
Email accounts are not included in the base subscription
Lite plan restrictions gate most CRM and marketing data
No formal export or migration tooling exists
Commerce and Marketing are optional paid add-ons
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 add-on audit
We audit the customer's Oncord account to determine the active plan tier (Base, Lite, or Enterprise), confirm whether the Marketing add-on and Commerce add-on are active, and estimate the volume of Contacts, Groups, Custom Fields, Products, Events, and Automation Workflows. We also identify any email account billing overhead that the customer may not have factored into their current spend. Oncord Lite plan customers are flagged separately because the 1,000 email send cap and group-only filter restrictions mean marketing and commerce data may be absent or minimal. The discovery output is a written scope document listing every object and volume estimate, with a recommendation on what data to migrate versus leave behind.
Twenty workspace preparation
We work with the customer to set up their Twenty workspace. This includes creating all custom fields in Settings Data Model (People, Company, and any Custom Objects) before any data import, because CSV imports create records only, not fields. We invite all team members to Twenty and confirm their email addresses so that the Owner lookup chain is satisfied during Contact import. If the customer is migrating Products or Events, we create the corresponding Custom Object schemas at this stage. If the customer is using Twenty Cloud, we assist with workspace provisioning; if self-hosted, we confirm the infrastructure is provisioned and the Twenty instance is reachable via API.
Oncord data extraction
We extract data from Oncord using the CustomFields API component and on-demand account backups, organizing by object type. Contacts are extracted first with all standard and custom field values. Groups are extracted as separate membership records linking contact IDs to group names. Products (if Commerce active) and Events (if Marketing active) are extracted in parallel. Automation Workflow definitions are captured as a written inventory documenting triggers, conditions, and action sequences. We recommend the customer use the migration as a data audit: records with no activity in two or more years, duplicate entries, and test data are excluded from the migration to avoid transferring clutter into Twenty. The extraction output is a set of structured CSVs per object, validated against source record counts.
Sandbox migration and reconciliation
We run a full migration into a Twenty sandbox environment (if available) or a secondary Twenty workspace, validating field mapping, custom object relationships, and tag assignment. The customer reviews a sample of migrated records against the Oncord source and confirms the mapping is accurate before we proceed to production. Any missing custom fields, incorrect type mappings, or relationship resolution failures surface at this stage rather than in production. We also validate that Owner email matching resolved correctly for all contact records, and any Oncord Owner without a matching Twenty Member is escalated for manual provisioning.
Production migration in dependency order
We run the production migration in the correct dependency order: Custom Fields and Custom Object schemas (verified pre-created), then People (Twenty Contacts), then Companies (from any extracted company data), then Tags (from Group memberships), then Products and Events Custom Objects if in scope, and finally activity history if any engagement data was logged in Oncord. Owner lookups resolve via email match against the Twenty Members list at the time of each phase. Each phase emits a row-count reconciliation report before the next phase begins. We flag any records that fail validation and resolve them in a correction pass before final sign-off.
Cutover, validation, and workflow rebuild handoff
We freeze Oncord write access during cutover to prevent divergence between systems during the final delta migration. We run a final delta pass to capture any records modified during the migration window, then hand over the automation workflow inventory document to the customer's admin for manual rebuild in Twenty's workflow builder. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Oncord automations as Twenty workflows as part of the standard migration scope; that is a separate engagement or an internal admin task. We also do not provide post-migration admin training, hosting management, or ongoing workflow maintenance.
Platform deep dives
Oncord
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Oncord and Twenty CRM.
Object compatibility
1 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
Oncord: Not publicly documented.
Data volume sensitivity
Oncord 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 Oncord to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Oncord 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 Oncord
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.