CRM migration

Migrate from CentraHub CRM to Twenty CRM

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

CentraHub CRM logo

CentraHub CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between CentraHub CRM and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from CentraHub CRM to Twenty CRM addresses two structural pain points that appear consistently in reviews: the mandatory 5-user minimum pricing that locks out small teams, and the absence of a documented API that makes programmatic exports unreliable. Twenty CRM is an open-source MIT-licensed platform that stores its data model as Companies, People, and Opportunities with a native activity timeline, making it a natural destination for teams leaving the Focus Softnet/centraHub ecosystem. The migration requires a CSV-first extraction from CentraHub since no public API exists, followed by dependency-ordered inserts into Twenty via GraphQL and REST. We preserve Account-to-Person relationships by writing Companies first, then resolving the Person-to-Company foreign key at import time. Deals map to Opportunities with stage matching against Twenty's configurable pipeline. Workflows, automation rules, and email campaigns do not migrate as code; we deliver a written inventory of every active workflow and sequence for the customer's admin to rebuild in Twenty's workspace 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

CentraHub CRM logo

CentraHub CRM

What's pushing teams away

  • Minimum 5-user seat requirement on every paid tier locks out solo practitioners and very small teams that only need 1–3 licenses.
  • Initial setup support is reported as not meeting expectations, with reviewers citing poor onboarding assistance during configuration.
  • Lack of publicly documented API makes programmatic exports difficult — teams resort to CSV manual exports which strip relationships between records.
  • Brand rebranding from CentraHub CRM to Focus Softnet creates uncertainty about long-term product direction and support continuity.
  • Limited English-language community presence and sparse Reddit/G2 discussion make peer troubleshooting difficult for non-Indian users.

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

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

CentraHub CRM

Account

maps to

Twenty CRM

Company

1:1
Fully supported

CentraHub Account records map directly to Twenty Company records. The Account ID becomes the primary dedupe key during import. We write Companies first in the migration sequence because Twenty's Person-to-Company relationship requires the Company to exist before a Person can be linked to it. Account address fields (street, city, state, country, postal code) map to Twenty's address compound field, and the Account name maps to Company name.

CentraHub CRM

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

CentraHub Contact records map to Twenty Person records. We resolve the parent Company by matching the Contact's Account reference to the Account ID we imported in the Companies phase. If a Contact has no Account assignment, we create a stub Company record to satisfy the foreign key constraint. Contact name fields, email, phone, job title, and standard address fields map directly. We preserve the Contact's created date and last modified date as Twenty's createdAt and updatedAt.

CentraHub CRM

Lead

maps to

Twenty CRM

Person (unqualified)

1:many
Fully supported

CentraHub Leads map to Twenty Person records in the same object as Contacts. We apply a qualification filter based on Lead status and created date to determine whether to treat the record as a raw lead (no Company attachment) or a qualified lead (attached to a Company). The original Lead status is preserved in a custom field for segmentation. Any Lead without an email address is flagged as incomplete and held in a reconciliation queue for the customer's admin to complete or suppress.

CentraHub CRM

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

CentraHub Deals map to Twenty Opportunities. The Deal's associated Account maps to the Opportunity's Company via the Company lookup. We map deal amount, close date, and stage name directly. Stage matching is performed against Twenty's default pipeline stages, and any CentraHub stages with no direct match are flagged for the customer to configure before migration runs.

CentraHub CRM

Deal Stage

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Each unique CentraHub Deal stage name becomes a Twenty Opportunity stage label. Stage probabilities migrate from CentraHub to Twenty if they exist as custom fields. We configure the pipeline in Twenty's workspace settings before the Opportunity import phase begins, and we flag any stage names that differ from Twenty's defaults so the customer can decide on normalization before cutover.

CentraHub CRM

Task

maps to

Twenty CRM

Task

1:1
Fully supported

CentraHub Tasks map to Twenty Task records. The task due date, priority, status, and description fields migrate directly. We resolve the task's associated Contact or Account reference to the corresponding Person or Company in Twenty and attach the task to the correct record via the targetObject and targetRelatedObject fields. Standalone tasks with no association are imported as orphaned tasks flagged for manual reassignment.

CentraHub CRM

Activity: Call

maps to

Twenty CRM

Task (type call)

1:1
Fully supported

CentraHub call activity records map to Twenty Task records with type = call. Call duration, disposition, and outcome stored in CentraHub custom fields migrate to custom fields on the Twenty Task. The activity timestamp becomes the Task's due date and completion date. We attach the call task to the related Person or Company via the targetObject lookup.

CentraHub CRM

Activity: Email

maps to

Twenty CRM

Comment

1:1
Fully supported

CentraHub email activity logs migrate to Twenty Comment records on the Person record. The email subject, body (plain text or HTML-stripped), sender, and recipient map to Comment fields. We attach each Comment to the Person record via the targetObject field. Email activity timestamps are preserved as the Comment creation date.

CentraHub CRM

Activity: Note

maps to

Twenty CRM

Comment (type note)

1:1
Fully supported

CentraHub Notes attached to Contacts, Accounts, or Deals migrate to Twenty Comment records with type = note. The note body migrates as the Comment content, and the associated Person or Company lookup is resolved via the Person/Company mapping. Notes without a parent association are flagged and held for manual review.

CentraHub CRM

Custom Field (per module)

maps to

Twenty CRM

Custom Field (workspace-level)

lossy
Fully supported

CentraHub per-module custom fields map to Twenty workspace-level custom fields. We extract the full custom field schema per module during discovery, map each field's data type to the nearest Twenty field type (text, number, date, single-select, multi-select, URL, phone, email), and create the custom fields in Twenty before the corresponding record import phase. Picklist values map to Twenty select options; multi-select picklists map to Twenty multi-select fields.

CentraHub CRM

Tag

maps to

Twenty CRM

Tag

1:1
Fully supported

CentraHub tags applied across objects migrate to Twenty Tag records. Tags are stored as tag-to-record associations in both systems, so we preserve the full tag list per object type and re-attach them post-import using Twenty's tag association API. Tags that do not match exactly are flagged for manual mapping during reconciliation.

CentraHub CRM

Owner

maps to

Twenty CRM

WorkspaceUser

1:1
Fully supported

CentraHub Owner records map to Twenty WorkspaceUser records. We resolve owners by email match. Any CentraHub Owner without a matching Twenty user is held in a reconciliation queue for the customer's admin to provision before the Person and Opportunity import phases begin, because OwnerId references are required on most Twenty standard objects.

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.

CentraHub CRM logo

CentraHub CRM gotchas

High

Five-user minimum applies to every paid tier

High

Workflows reference field IDs, not field names

High

No documented public API for bulk exports

Medium

Rebrand to Focus Softnet causes support and documentation drift

Medium

Custom field data type enforcement is loose on import

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

  • CentraHub has no public API — exports are manual CSV only

    CentraHub CRM does not publish API documentation, and all documented integrations (Dropbox, Box, Mailchimp, QuickBooks) are pre-built connectors rather than open endpoints. Exports must use the platform's manual CSV download per module, which does not include attachment files, historical activity logs in the base export, or relationship IDs in a format that preserves foreign keys between modules. We request full data exports from the customer, reconstruct relationships from exported ID columns, and supplement with direct database reads where the Centra Hosted edition provides database access. This extends discovery timelines by one to two weeks compared to API-based migrations.

  • Activity history requires manual enablement in CSV exports

    CentraHub's base CSV export does not include historical activity logs (calls, emails, meetings, tasks) by default. These must be explicitly selected in the export UI or requested from CentraHub support. If the customer has not enabled activity logging exports before migration scoping begins, we must request them retroactively, which can delay the migration start by several days. We verify activity log availability during discovery and flag any missing exports before transformation begins.

  • CentraHub Workflows reference field IDs, not field names

    CentraHub Workflows store field references by internal ID rather than human-readable field names. When a custom field is renamed during migration mapping, the workflow condition silently breaks. We extract all workflow definitions as structured JSON during discovery, cross-reference field IDs against the migration field map, and flag every workflow that will break if a mapped field is renamed. We do not migrate Workflows as code; we deliver a written inventory of each workflow's trigger, conditions, actions, and recommended Twenty automation equivalent.

  • Twenty's default pipeline stage names differ from CentraHub defaults

    CentraHub Deal pipelines use default stage names (New, Qualification, Proposal, Negotiation, Closed Won, Closed Lost) that do not exactly match Twenty's default Opportunity stages. We configure the Twenty pipeline stages before migration runs and normalize stage names during the transform step. Stages that have no equivalent in Twenty's schema are flagged for the customer to configure before Opportunity import. Stage probability percentages are preserved as custom fields if they exist in CentraHub.

  • CentraHub's Focus Softnet rebrand creates support portal inconsistency

    The product is transitioning from CentraHub CRM branding to Focus Softnet. The official support center URL redirects to Focus Softnet, and some help guides show mixed branding. Legacy configuration paths, feature names, and support contacts may differ between pre- and post-rebrand accounts. We verify the customer's account branding during discovery and adjust our migration runbook to match the current support portal and feature set.

Migration approach

Six steps for a successful CentraHub CRM to Twenty CRM data migration

  1. Discovery and data audit

    We audit the customer's CentraHub instance across modules, custom fields, active workflows, deal pipelines, and activity log volume. Since there is no public API, we request full CSV exports from each module and verify that activity history exports have been enabled. We identify relationship chains (Account-to-Contact, Deal-to-Account) from exported ID columns and flag any records with missing required fields. The discovery output is a written migration scope document with a record-count estimate, a custom field schema map, and a list of CentraHub workflows requiring rebuild.

  2. Twenty workspace configuration

    We configure the Twenty CRM workspace before any data import. This includes creating custom fields that match the CentraHub schema (field types, picklist values, required/optional flags), configuring the Opportunity pipeline stages to match the CentraHub deal stage matrix, setting up any required select options for status and type picklists, and provisioning the workspace users who correspond to the CentraHub owners. We validate the configuration in Twenty before the first production import.

  3. Owner and user provisioning

    We extract every distinct CentraHub Owner referenced on Contact, Account, Deal, and Activity records and match by email against the Twenty workspace user list. Owners without a matching Twenty user are added to a reconciliation queue for the customer's admin to provision before record import begins. Migration cannot proceed past this step because OwnerId references are required on Twenty Person and Opportunity records.

  4. CSV extraction and dependency-ordered import

    We extract CentraHub data module by module and structure it into a dependency-ordered import sequence: Companies first (from Accounts), then Persons (from Contacts and Leads with Company lookup resolved), then Opportunities (from Deals with Company lookup resolved), then Tasks and Comments (activity history attached to the resolved Person and Company records). We validate data types on custom fields during transformation and flag records with type mismatches before writing to Twenty. Each phase emits a row-count reconciliation report before the next phase begins.

  5. Sandbox migration and reconciliation

    We run a full migration into Twenty using production-like data volume to validate the import sequence, verify relationship resolution, and check custom field population. The customer's RevOps lead spot-checks 20-30 random records against the CentraHub source records, confirms the pipeline stage mapping, and signs off the mapping before production migration begins. Any mapping corrections happen in the sandbox phase, not in production.

  6. Production migration, cutover, and workflow handoff

    We run production migration in the validated dependency order: Companies, then Persons, then Opportunities, then Tasks and Comments. We freeze CentraHub writes during the cutover window, 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. We support a three-day hypercare window for reconciliation issues. We do not rebuild CentraHub workflows as Twenty automations inside the migration scope.

Platform deep dives

Context on both ends of the pair

CentraHub CRM logo

CentraHub CRM

Source

Strengths

  • Unlimited record storage on all paid tiers — no per-contact billing shock as records grow.
  • All-in-one sales, marketing, and service modules with a single vendor and unified data model.
  • Per-user pricing is competitive against HubSpot and Salesforce for teams between 5 and 50 seats.
  • Industry-specific editions provide vertical templates for Real Estate, Automotive, and Education use cases.
  • Custom field support per module allows teams to tailor the schema without developer involvement.

Weaknesses

  • Minimum 5-user seat requirement excludes solo users and very small teams regardless of plan tier.
  • No publicly documented API endpoint reference — programmatic exports are undocumented and unsupported.
  • Initial onboarding and setup support receive consistent criticism from early-stage reviewers.
  • Brand pivot to Focus Softnet creates uncertainty about product roadmap and long-term support continuity.
  • Sparse English-language community presence makes peer troubleshooting difficult outside of Indian user networks.
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. 3 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 CentraHub CRM and Twenty CRM.

  • Object compatibility

    B

    3 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

    CentraHub CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 10,000 Contacts, 2,000 Deals, and no custom objects. Migrations with custom objects, large activity histories (over 100,000 activity records), or multi-stage deal pipelines move to six to ten weeks because of the manual CSV extraction, relationship reconstruction, and custom field schema design required. The absence of a CentraHub API extends discovery by one to two weeks compared to API-based migrations.

Adjacent paths

Related migrations to explore

Ready when you are

Move from CentraHub CRM.
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