CRM migration

Migrate from Oncord to Twenty CRM

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

Oncord logo

Oncord

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

30%

3 of 10

objects map 1:1 between Oncord and Twenty CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Oncord logo

Oncord

What's pushing teams away

  • Feature depth creates a steep learning curve — customers report feeling overwhelmed by the number of tools available and not knowing where to start.
  • Built-in analytics are described as shallow compared to Google Analytics or dedicated BI tools, frustrating customers who need detailed campaign reporting.
  • No formal data export process means customers leaving Oncord must manually download backups or build custom exports, adding friction to migration timelines.
  • Analytics limitations and the learning curve combine to create churn among customers who expected a simpler, more intuitive experience out of the box.
  • The platform is website-builder-first rather than CRM-first, which causes friction for teams that prioritised contact management over web presence.

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

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

maps to

Twenty CRM

People

1:1
Fully supported

Oncord'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

maps to

Twenty CRM

Company

1:1
Fully supported

Oncord 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

maps to

Twenty CRM

Tag

lossy
Fully supported

Oncord 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

maps to

Twenty CRM

Custom Field (People, Company, Opportunity)

lossy
Fully supported

Oncord 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)

maps to

Twenty CRM

Custom Object

lossy
Fully supported

Products 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)

maps to

Twenty CRM

Custom Object

lossy
Fully supported

Events 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

maps to

Twenty CRM

Workflow (documented, not migrated)

lossy
Fully supported

Oncord 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

maps to

Twenty CRM

Member (User)

1:1
Fully supported

Oncord 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

maps to

Twenty CRM

Form (documented, not migrated)

lossy
Fully supported

Oncord 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)

maps to

Twenty CRM

Custom Object

lossy
Fully supported

Discounts 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.

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.

Oncord logo

Oncord gotchas

Medium

Email accounts are not included in the base subscription

Medium

Lite plan restrictions gate most CRM and marketing data

High

No formal export or migration tooling exists

Low

Commerce and Marketing are optional paid add-ons

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

  • Oncord has no formal export or migration tooling

    Oncord's own migration FAQ directs customers to 'download a back-up of your data' before terminating, with no mention of a structured export tool, a public API endpoint for bulk data retrieval, or a partner migration program. We work around this by extracting data through Oncord's CustomFields API component and on-demand account backups. We flag upfront that export completeness depends entirely on what Oncord's internal systems have stored, and we cannot guarantee byte-for-byte fidelity without a documented public API. Customers on the Lite plan face additional restrictions that may further limit what data is accessible for export.

  • Twenty requires all custom fields created before CSV import

    Twenty's People and Company objects ship with minimal standard fields out of the box. An active GitHub issue (#13953) documents that this creates significant onboarding friction and forces users to spend 30-60 minutes creating basic fields before importing from other CRMs. We pre-create all required custom fields in Settings Data Model before running any CSV import, because the import creates records only, not fields. If a custom field is missing during import, any data in that column is silently dropped. We confirm the full field list with the customer during scoping and validate field existence before each import phase.

  • Oncord automations and Twenty workflows use different engines

    Oncord automation workflows and Twenty's workflow builder are different automation systems with incompatible trigger-action models. We do not migrate workflow logic as code. We deliver a written inventory of every active Oncord automation with its trigger, conditions, branches, and actions, and the customer's admin rebuilds them manually in Twenty's workflow builder post-migration. This is a known limitation of migrating away from any marketing automation platform and is not unique to this pair, but it is particularly acute for Oncord customers who built complex drip sequences or event-triggered automations that will require manual reconstruction.

  • Oncord analytics gaps mean contact activity history may be sparse

    Oncord's built-in analytics are shallow, and customers frequently report that contact activity logging depends on manual team discipline rather than automated capture. When scoping a migration, we audit the volume and quality of historical engagement data (calls, emails, meetings logged against contacts) and advise the customer on what is worth migrating. Dirty data, stale records, and sparse activity histories that get transferred into Twenty become the customer's new CRM's problem. We recommend that customers use the migration as an opportunity to audit and clean contact records before transfer, keeping only active contacts with meaningful engagement history.

  • Twenty's feature stability and performance at scale vary

    Twenty CRM is actively developed (v2.0 shipped with extensibility features) and the core team has publicly acknowledged that feature velocity has sometimes outpaced quality work. Community reports indicate performance degradation and UI instability at record volumes above approximately 600 contacts in some workspaces, and views occasionally reset unexpectedly. We advise customers running large datasets to validate migration results in a Twenty sandbox environment before production cutover and to monitor Twenty's GitHub issue tracker for fixes relevant to their use case. The cloud-hosted version (~$9/seat/month) may offer better stability guarantees than self-hosted for teams without dedicated DevOps capacity.

Migration approach

Six steps for a successful Oncord to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Oncord logo

Oncord

Source

Strengths

  • All-in-one platform removes the need to coordinate separate website, CRM, and marketing vendors.
  • Unlimited contacts on the base plan eliminates per-record billing surprises common in other CRMs.
  • Bundled hosting includes SSL, automated backups, and platform updates at no extra cost.
  • Marketing tools (email, SMS, social, automation) are pre-integrated with the contact database, reducing data silos.
  • Integrated e-commerce with unlimited products and referral tracking on the Commerce add-on.

Weaknesses

  • No publicly documented API reference for developers to programmatically read or write data outside the platform.
  • No formal migration or export tooling — customers leaving Oncord must rely on manual backups or bespoke exports.
  • Lite plan ($5/month) has severe restrictions (1,000 email sends, 15 products, no source code access) that make it unsuitable for active marketing or commerce use.
  • Limited analytics depth compared to Google Analytics or dedicated reporting tools, frustrating data-driven teams.
  • The platform is website-builder-first, which creates friction for teams prioritising CRM functionality over web presence management.
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 Oncord 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

    Oncord: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Straightforward migrations under 10,000 Contacts with no Commerce add-on, fewer than 50 custom fields, and no complex group membership logic complete in two to four weeks. Migrations with active Commerce or Events data (mapped to Twenty Custom Objects), large custom field sets, or customer requests for data deduplication move to six to ten weeks because of schema design, Custom Object provisioning, and validation cycles. The main variable is Oncord's lack of a formal export API, which means data extraction and reconciliation are manual steps that depend on the quality of the customer's existing records.

Adjacent paths

Related migrations to explore

Ready when you are

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