CRM migration

Migrate from CentralStationCRM to Twenty CRM

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

CentralStationCRM logo

CentralStationCRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

70%

7 of 10

objects map 1:1 between CentralStationCRM and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from CentralStationCRM to Twenty CRM is a structural migration for teams that have outgrown a simplicity-first CRM but want to retain self-hosted data ownership. CentralStationCRM stores People, Companies, Deals, Leads, and Activities across REST endpoints with a flat tag vocabulary; Twenty CRM receives these as Companies, People, Opportunities, and Tasks or Notes via CSV import or API. The primary migration complexity is CentralStationCRM's per-tenant custom field schema (each account defines its own fields with no fixed API name) and its 50 req/10s rate limit, which requires request throttling and Retry-After handling during export. Twenty requires all custom fields and custom objects to exist in the workspace before import begins, which we resolve in the scoping phase. Workflows, automations, and email templates from CentralStationCRM do not migrate; we deliver a written inventory of every active configuration for the customer's admin to rebuild in Twenty's 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

CentralStationCRM logo

CentralStationCRM

What's pushing teams away

  • Small teams that scale beyond 10-25 users find the platform's feature set insufficient for complex sales processes or advanced reporting
  • Reviewers mention the CRM is designed for simplicity, which means features common in Pipedrive or HubSpot (advanced automation, multi-currency, granular permissions) are absent
  • Some users migrating to Pipeline CRM cite a need for stronger visual pipeline management and built-in eSign capabilities that CentralStationCRM lacks
  • A reviewer noted data export felt limited to earlier Excel versions before a support correction clarified the platform supports current Excel exports

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

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

CentralStationCRM

People

maps to

Twenty CRM

Person (People)

1:1
Fully supported

CentralStationCRM People records map to Twenty Person objects. We export via GET /api/people.json and map firstname, lastname, email, phone, website, and job_title to their Twenty Person field equivalents. The responsible_user_id field resolves to a Twenty User record via email match. Addresses are not embedded in the Person record — we traverse GET /api/people/{id}/addrs.json per contact to capture all address rows and write them to the Person's address fields or as a separate Address relation in Twenty.

CentralStationCRM

Company

maps to

Twenty CRM

Company

1:1
Fully supported

CentralStationCRM Company records map directly to Twenty Company. We export via GET /api/companies.json, map name, domain, phone, and industry fields, and create the Company in Twenty before any Person import so that the Person-to-Company relationship is satisfied at the moment of Person insert. If CentralStationCRM stores a billing or shipping address on the Company record, we write it to Twenty's address fields.

CentralStationCRM

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

CentralStationCRM Deals map to Twenty Opportunity. We export via GET /api/deals.json and map deal name, value (amount), stage, and close date. The assignee maps via responsible_user_id email resolution to the Twenty User. Deal stage labels from CentralStationCRM map to the Twenty pipeline stage values, and we flag any custom stage names requiring configuration in Twenty's pipeline settings before import.

CentralStationCRM

Lead

maps to

Twenty CRM

Lead

1:1
Fully supported

CentralStationCRM Leads are pre-contact prospects distinct from Deals. We export via GET /api/leads.json and map lead name, email, phone, source, status, and assignee. The mapping preserves any CentralStationCRM lead score as a custom field in Twenty. If Twenty does not have a Lead object in the workspace at migration time (it must be enabled in settings), we map Leads to Twenty Person records and flag the object for confirmation during scoping.

CentralStationCRM

Activity

maps to

Twenty CRM

Task or Note

1:many
Fully supported

CentralStationCRM Activities (calls, meetings, notes) are attached to People or Companies via nested routes (GET /api/people/{id}/activities.json). We traverse all activity routes per parent record and map call activities to Twenty Task records with Task subtype = Call, meeting activities to Event-like Task records, and notes to Twenty Note records. Activity timestamps are preserved as ActivityDate so the chronological timeline is intact in Twenty.

CentralStationCRM

Offer

maps to

Twenty CRM

Opportunity (quote context)

1:1
Fully supported

CentralStationCRM Offers are standalone quote-like objects linked to People or Companies with line items and totals. We export via GET /api/offers.json, map offer name, total amount, status, and line items to Opportunity custom fields or a linked Note that captures the offer body. If Twenty has a Quote or Custom Object configured for quote tracking, we map to that object and preserve line item detail in structured fields.

CentralStationCRM

Task

maps to

Twenty CRM

Task

1:1
Fully supported

CentralStationCRM Tasks are standalone task records attached to People or Deals. We export task title, due date, status, and assignee (responsible_user_id resolved via email match). Completion state migrates as a status field; we do not hard-delete completed tasks. Tasks are written after the parent Person or Opportunity is created in Twenty to satisfy the relationship reference.

CentralStationCRM

Tag

maps to

Twenty CRM

Tag

lossy
Fully supported

CentralStationCRM tags are flat key-value labels applied to People, Companies, Deals, and Offers. We export all tag assignments per record and apply the same tag set in Twenty, handling the vocabulary as-is. If tag counts exceed Twenty's tag field capacity, we map high-frequency tags to multi-select picklist custom fields and document the strategy during scoping.

CentralStationCRM

Custom Field (per-tenant)

maps to

Twenty CRM

Custom Field

lossy
Fully supported

Each CentralStationCRM tenant defines their own custom fields with no fixed schema across accounts. We discover all custom fields during scoping (visible via the API response payload for each object) and map them explicitly to Twenty custom fields. Twenty requires custom fields to exist in Settings → Data Model before CSV import or API write. We coordinate with the customer to create matching custom field definitions in Twenty before migration begins.

CentralStationCRM

Address (child of People)

maps to

Twenty CRM

Address (on Person)

1:1
Fully supported

CentralStationCRM addresses exist as 1-n children of People, accessible only via GET /api/people/{id}/addrs.json. We traverse each nested address route during export so that every address row is captured. In Twenty, address fields live on the Person record. If a Person has multiple addresses (billing, shipping), we write the primary to the Person address fields and store secondary addresses as structured data in a custom field or linked Note.

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.

CentralStationCRM logo

CentralStationCRM gotchas

High

50 req/10s rate limit causes 429 errors on fast exports

Medium

Nested routes required for child object exports

Low

No OAuth — API key only with header authentication

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

  • 50 req/10s rate limit requires request throttling on large exports

    CentralStationCRM enforces a hard 50 request per 10 second rate limit. Any export that exceeds this threshold receives a 429 response with a Retry-After header. We track request counts throughout the migration run, introduce cooldown delays when the threshold approaches, and honour the Retry-After value so that large record sets export without silent truncation or skipped pages. For accounts with over 10,000 records, this adds measurable time to the export phase and is factored into the timeline estimate.

  • Nested routes required for child object export

    CentralStationCRM does not embed child records in parent responses. Addresses are not in GET /api/people.json but fetched via GET /api/people/{id}/addrs.json. Activities are not in the Person response but fetched via nested activity routes. We traverse every nested route during export so that addresses, activities, and related records are captured. If a parent record exists but its child route returns an error, we flag the parent record and log the incomplete relationship for manual follow-up after migration.

  • Per-tenant custom field schema must be discovered and created in Twenty before import

    CentralStationCRM has no fixed custom field schema across accounts. Each tenant defines their own fields on People, Companies, Deals, Leads, and other objects. Twenty requires custom fields to exist in Settings → Data Model before any import writes to them. We discover all custom fields during scoping by inspecting the full API response payloads, share the list with the customer for confirmation, and create matching field definitions in Twenty before migration begins. If fields are missed during discovery, import attempts for those records fail at migration time.

  • Owner and responsible_user references require User pre-provisioning in Twenty

    CentralStationCRM's responsible_user_id field on People, Deals, Tasks, and Activities points to the user who owns or acted on the record. Twenty requires all referenced Users to exist before OwnerId or assignee fields can be resolved. We extract every distinct responsible_user across the migration scope, match by email against Twenty's User table, and hold records with unmatched owners in a reconciliation queue. The customer's Twenty admin provisions missing Users before record import resumes.

  • Workflows and automations do not migrate between platforms

    CentralStationCRM's Business tier includes basic workflow and automation features. Twenty's workflow system is in active development and does not have a feature-equivalent migration path from CentralStationCRM. We do not migrate automations as code. We deliver a written inventory of every active CentralStationCRM automation with its trigger, conditions, and actions, and a recommended manual rebuild path in Twenty's settings. This document becomes the admin's checklist for post-migration configuration work.

Migration approach

Six steps for a successful CentralStationCRM to Twenty CRM data migration

  1. Discovery and schema audit

    We audit the CentralStationCRM account via API across all object types (People, Companies, Deals, Leads, Activities, Offers, Tasks, Tags) and capture the per-tenant custom field definitions by inspecting full API response payloads for each object. We count records per object, identify the responsible_user_id references that map to Twenty Users, assess the activity history volume, and inventory any active workflows or email templates. The discovery output is a written migration scope confirming object counts, custom field definitions, owner resolution plan, and a preliminary timeline.

  2. Twenty workspace preparation

    We create all custom field definitions in Twenty's Settings → Data Model before any data import begins. Custom fields must exist in Twenty before import writes to them. We create custom field types matched to the CentralStationCRM data (text, number, date, select, multi-select) and invite all team members to Twenty so that OwnerId and assignee references resolve during migration. Any CentralStationCRM workflow or automation triggers are documented for the rebuild inventory.

  3. Sandbox validation and mapping review

    We run a full migration into Twenty using representative data volume. The customer reconciles record counts, spot-checks 20-30 records against the CentralStationCRM source (correct field values, relationship integrity, tag assignments), and approves the mapping before production migration begins. Any field-level corrections, custom field additions, or relationship fixes happen at this stage. We do not proceed to production without a signed mapping approval.

  4. Company and Person migration

    We export Companies from CentralStationCRM via GET /api/companies.json, write them to Twenty Company records, then export People via GET /api/people.json. For each Person, we traverse the nested address route (GET /api/people/{id}/addrs.json) and write addresses to the Person record or structured address fields. We resolve responsible_user_id to a Twenty User via email match. Tags and custom field values migrate as-is per the field mapping approved in scoping.

  5. Deal, Lead, Offer, and Task migration

    We export Deals via GET /api/deals.json, map stage labels to Twenty pipeline stages, resolve assignee via email match, and write Opportunities. Leads export via GET /api/leads.json and map to Twenty Lead records. Offers export via GET /api/offers.json and map to Opportunity quote context. Tasks export and write with parent Person or Deal references resolved from the existing record set. Each phase emits a row-count reconciliation report before the next begins.

  6. Activity history migration

    We traverse all nested activity routes per Person record (GET /api/people/{id}/activities.json) and write Activities as Task or Note records in Twenty, preserving original timestamps and linking to the parent Person. Call activities write as Tasks with call subtype; meetings as Tasks with meeting context; notes as Note records. Activity volumes can reach tens of thousands per account; we throttle writes to respect any destination API limits and emit a completion report per activity type.

  7. Cutover, validation, and automation inventory delivery

    We freeze writes in CentralStationCRM during cutover, run a final delta migration of any records modified during the migration window, then mark Twenty as the system of record. We deliver the automation and workflow inventory document to the customer's admin team for manual rebuild in Twenty. We support a 5-business-day hypercare window for reconciliation issues. We do not rebuild CentralStationCRM workflows inside the migration scope; that is separate work for the customer's admin.

Platform deep dives

Context on both ends of the pair

CentralStationCRM logo

CentralStationCRM

Source

Strengths

  • German servers and DSGVO compliance satisfy EU data-residency requirements out of the box
  • Free tier covers the full feature set with no artificial limitations, letting teams evaluate before paying
  • Per-user pricing is competitive: Small Office at €75/month for 10 users beats comparable Pipedrive seats
  • Ease of use is the primary design principle, reflected in consistent high ratings for interface simplicity
  • Customer support rated 5.0 by reviewers on Capterra, with fast response times cited across multiple accounts

Weaknesses

  • Feature set is intentionally minimal, lacking advanced automation, multi-currency, and granular role-based access controls found in Pipedrive or HubSpot
  • API has no bulk import endpoint; migrations must loop through individual records at the 50 req/10s rate limit
  • No native campaign or marketing automation features, making the platform unsuitable for marketing-led growth strategies
  • Smaller ecosystem means fewer third-party integrations than major CRM platforms, with Zapier as the primary integration path
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. 2 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 CentralStationCRM and Twenty CRM.

  • Object compatibility

    B

    2 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

    CentralStationCRM: 50 requests within 10 seconds; returns HTTP 429 with Retry-After header when exceeded.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your CentralStationCRM 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 5,000 People and 2,000 Deals with no custom objects. Migrations with per-tenant custom field schemas requiring explicit field-level definition in Twenty, large activity histories (over 100,000 records), or Offer-to-quote transformations move to eight to twelve weeks because of the scoping overhead for custom fields and the sequential dependency order required for parent-child record resolution.

Adjacent paths

Related migrations to explore

Ready when you are

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