CRM migration

Migrate from Pro-Sales CRM to Twenty CRM

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

Pro-Sales CRM logo

Pro-Sales CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between Pro-Sales CRM and Twenty CRM.

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Pro-Sales CRM to Twenty CRM is a lightweight-to-open-source migration with a meaningful schema gap: Pro-Sales CRM ships standard fields for pipeline stages, lifecycle stage, and owner assignment out of the box, while Twenty CRM requires administrators to create most fields before any import can begin. We close that gap during the discovery phase by extracting the active field list from Pro-Sales CRM and pre-creating matching fields in Twenty's Data Model, including industry, employee count, and annual revenue on the Company object — fields that Twenty does not include as standard but that are expected by integrations and CRM analysts. We migrate the core record types (Contacts, Companies, Deals, Activities) via Twenty's GraphQL API with batch operations and exponential backoff. We do not migrate Pro-Sales CRM Workflows or automation rules as code; we deliver a written inventory of every active rule for the customer's admin to rebuild in Twenty's Workflow builder. Attachments and tag-assignment metadata do not migrate because Pro-Sales CRM does not expose a confirmed export path for these data types.

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

Pro-Sales CRM logo

Pro-Sales CRM

What's pushing teams away

  • Per-seat economics get expensive — $199/month for 1 user and $99/month for each additional user adds up vs. lower-cost SMB CRMs like HubSpot Free, Zoho, or Pipedrive.
  • Limited public review footprint and small market share compared to mainstream SMB CRMs makes peer-reference due diligence harder.
  • User reviews report mixed experience with data integration and manual data entry, prompting teams with custom tech stacks to migrate to more integrated platforms.
  • Optional setup, training, and data migration fees ($198-$498) inflate the year-one TCO beyond the headline subscription rate.
  • No public API documentation limits custom integrations and automation workflows for technically-savvy teams.

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

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

Pro-Sales CRM

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Pro-Sales CRM Contact records map to Twenty CRM's Person object. Standard fields (name, email, phone) map directly. Lifecycle stage from Pro-Sales CRM becomes a custom select field in Twenty since the standard field set is minimal out of the box. We inspect the source field list during discovery and create matching custom fields (e.g., jobTitle, department, source) before migration begins. Email is the primary deduplication key during import.

Pro-Sales CRM

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Pro-Sales CRM Company records map to Twenty CRM's Company object. The address, industry, and size fields in Pro-Sales CRM require custom field creation in Twenty before migration because Twenty does not include industry, employeeCount, or annualRevenue as standard fields. We create these fields during the schema pre-creation phase and then populate them from the Pro-Sales CRM export. Companies are imported before Persons so that the Person-Company relationship (workspaceMember) resolves correctly during Person import.

Pro-Sales CRM

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Pro-Sales CRM Deal records map to Twenty CRM's Opportunity object. The deal name, value, close date, and stage migrate directly. Pipeline stage names are customer-configured in Pro-Sales CRM; we extract the active stage configuration and create matching stage values in Twenty's Opportunities pipeline before migration. Stage probability percentages transfer to a custom field or to Twenty's stage probability if supported in the target workspace version.

Pro-Sales CRM

Pipeline Stage

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Pro-Sales CRM allows custom stage names and probability weights per pipeline. We extract the full stage configuration (stage name, probability, order) and create a matching stage sequence in Twenty's Opportunities object. If the customer uses multiple pipelines in Pro-Sales CRM, we create Twenty workspaces or filter views per pipeline and document the mapping in the discovery output.

Pro-Sales CRM

Activity: Call

maps to

Twenty CRM

Task (type = Call)

1:1
Fully supported

Pro-Sales CRM call logs migrate to Twenty Task records with the type set to Call. Call duration, disposition, and outcome transfer to custom fields on the Task. The associated Person or Company reference resolves via the email lookup performed during the Person and Company import phase. Activity timestamps are preserved to maintain the timeline ordering on the record.

Pro-Sales CRM

Activity: Email

maps to

Twenty CRM

Task (type = Email)

1:1
Fully supported

Pro-Sales CRM email engagement records migrate to Twenty Task records of type Email. Email subject, body, and direction (sent/received) transfer to custom fields on the Task. The recipient and sender are resolved to the corresponding Person records via email address matching. If the source email body contains HTML, we strip to plain text for Twenty's field type compatibility.

Pro-Sales CRM

Activity: Meeting

maps to

Twenty CRM

Task (type = Meeting)

1:1
Fully supported

Pro-Sales CRM meeting records migrate to Twenty Task records of type Meeting. Start time, end time, and location transfer to custom date and text fields on the Task. Attendee information resolves to Person records by email where attendees are present in the source data.

Pro-Sales CRM

Activity: Note

maps to

Twenty CRM

Task (type = Note)

1:1
Fully supported

Pro-Sales CRM note records migrate to Twenty Task records of type Note. Note body transfers to a custom long-text field on the Task. The linked record reference (Person or Company) resolves via the lookup performed during the Person and Company import phase.

Pro-Sales CRM

Custom Property (Contact)

maps to

Twenty CRM

Custom Field (Person)

lossy
Fully supported

Pro-Sales CRM allows custom fields on Contact records. We inspect the full custom field list during discovery, create matching custom fields in Twenty's Person object schema (with type mapping: text to text, number to number, date to date, picklist to select), and then populate them during Person import. Multi-select picklists in Pro-Sales CRM map to Twenty multi-select fields if available, otherwise to text with comma-separated values.

Pro-Sales CRM

Custom Property (Deal)

maps to

Twenty CRM

Custom Field (Opportunity)

lossy
Fully supported

Pro-Sales CRM allows custom fields on Deal records. We create matching custom fields in Twenty's Opportunity object during the schema pre-creation phase, type-mapped from the source field definitions. Custom fields with lookup references to Company or Contact records are migrated after all primary record imports complete so that the referenced record IDs are available for resolution.

Pro-Sales CRM

Owner

maps to

Twenty CRM

WorkspaceMember (User)

1:1
Fully supported

Pro-Sales CRM assigns a single owner per Contact, Company, and Deal record. We extract the owner ID and email from each record and match against Twenty CRM's WorkspaceMember list by email. Any owner without a matching WorkspaceMember is flagged and reassigned to a designated fallback WorkspaceMember. The customer provisions any missing Twenty users before the production migration phase.

Pro-Sales CRM

Tag/Label

maps to

Twenty CRM

Custom Select or Multi-Select Field

lossy
Fully supported

Pro-Sales CRM tag assignments on records migrate to a custom select or multi-select field in Twenty. The tag strings are preserved verbatim. If the customer has a large tag vocabulary (over 50 unique tags), we discuss whether to use a single multi-select field or split into multiple single-select fields for better filtering performance in Twenty views.

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.

Pro-Sales CRM logo

Pro-Sales CRM gotchas

Medium

Catalog name 'Pro-Sales CRM' is non-standard — vendor brands as SalesPro CRM

Medium

Add-on data migration and training fees add to year-one TCO

High

No documented public API

Low

Per-user pricing scales linearly without enterprise discount tier publicly listed

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

  • Twenty CRM lacks standard fields for industry, employee count, and revenue

    Unlike Pro-Sales CRM, which ships standard fields for industry, company size, and annual revenue on Company records, Twenty CRM's base installation does not include these fields. A GitHub issue filed against the Twenty project explicitly calls out onboarding friction caused by missing standard fields, noting that CRM imports from other platforms (including lightweight tools) cannot map their data automatically because standard fields do not exist. We address this by creating industry, employeeCount, annualRevenue, and similar fields during the schema pre-creation phase before any data is written to Twenty. If the customer has integrations that expect standard fields (e.g., enrichment services), those integrations may need adjustment after migration.

  • Twenty CRM has no native CSV import UI as of 2026

    Pro-Sales CRM provides a built-in CSV export and import interface for Contacts, Companies, and Deals. Twenty CRM does not ship a native CSV import wizard in its current release. All data must be imported via the GraphQL API using a custom script or a middleware tool like n8n or a purpose-built migration script. We build and execute a GraphQL-based import script per migration, with batch operations, cursor-based pagination, and retry logic. Migrations that assume a native import UI will stall at execution. This gotcha also means the customer cannot self-serve a re-import without the script.

  • Attachment export is not confirmed in Pro-Sales CRM API

    Pro-Sales CRM's API documentation does not confirm a stable export path for file attachments associated with Contact, Company, or Deal records. The source platform context explicitly marks Attachments as unsupported for migration. We flag this to the customer during scoping and recommend a parallel file migration plan (e.g., exporting attachments to a shared drive with filename references updated to point to the new Twenty CRM record ID). Attachments that exist inside Pro-Sales CRM activity records (call recordings, email attachments) are similarly not migratable without a confirmed export endpoint.

  • Custom fields must be created before any data import

    Twenty CRM's Data Model requires custom fields to be created via Settings before they can accept data. This means the migration workflow for Pro-Sales CRM, which frequently uses custom fields on Contacts and Deals, requires a schema pre-creation phase that does not exist in migrations between platforms with more complete base schemas. We run this phase during discovery, creating every custom field in Twenty before writing any records. If a new custom field is discovered during the migration (e.g., a field only present on a subset of records), the import must pause, the field is created, and the import resumes.

  • Pro-Sales CRM Workflows do not map to Twenty Workflows

    Pro-Sales CRM Workflows (property-triggered automation rules) have no structural equivalent in Twenty CRM's Workflow builder. Twenty's Workflow builder supports record-triggered actions but the trigger conditions, delay types, and action library differ from Pro-Sales CRM's model. We do not migrate Workflows as code. We audit every active Pro-Sales CRM Workflow during discovery, document its trigger, conditions, and actions in a written inventory, and deliver this to the customer's admin for rebuild in Twenty's Workflow builder post-migration. Sequences and sales engagement cadences are similarly out of scope.

Migration approach

Six steps for a successful Pro-Sales CRM to Twenty CRM data migration

  1. Discovery and schema audit

    We extract the full Pro-Sales CRM data inventory: Contact records with all standard and custom fields, Company records with address and custom fields, Deal records with pipeline stage configuration and custom fields, Activity records (calls, emails, meetings, notes) with timestamps and owner references, Owner list with email addresses, and active Workflow definitions. We compare this inventory against Twenty CRM's base schema and identify the custom field creation list. The discovery output is a written migration scope that includes the custom field pre-creation list, the pipeline stage mapping table, the owner reconciliation list, and the Workflow inventory. This phase also establishes the record-count baseline for pricing and timeline confirmation.

  2. Custom field pre-creation in Twenty CRM

    Before any data is written to Twenty CRM, we create every custom field required by the migration. This includes industry, employeeCount, annualRevenue, and similar fields on the Company object; lifecycle stage, source, and any other custom Contact fields on the Person object; and all custom Deal fields on the Opportunity object. Each field is created with its correct type (text, number, date, select, multi-select) and configured to display in the relevant Twenty workspace views. Fields are created via Twenty's Settings Data Model interface, and the complete field list is validated against the Pro-Sales CRM export before proceeding to import.

  3. Company and Person import via GraphQL API

    We import Pro-Sales CRM Companies into Twenty CRM Companies first because Contact records reference Company records via a lookup relationship. The Company import uses Twenty's GraphQL API with batch operations (typically 50-100 records per request) and exponential backoff on rate limit responses. Email address is the deduplication key. After Company import completes and row counts reconcile, we import Person records, resolving the workspaceMember relationship to the corresponding Company by domain or name match. Any Person without a matching Company is imported with a flag for manual review.

  4. Opportunity and pipeline stage configuration

    We create the pipeline stage values in Twenty CRM's Opportunities object before importing Deal records, matching the stage names, order, and probability percentages from Pro-Sales CRM's active pipeline configuration. Deal records are then imported with their stage, value, close date, and custom fields resolved. The Opportunity-Company and Opportunity-Person relationships are resolved via the Company and Person IDs established during the prior import phases. Closed-won and closed-lost states are preserved with their original close dates to maintain historical pipeline reporting accuracy.

  5. Activity history import (calls, emails, meetings, notes)

    We import Activity records from Pro-Sales CRM as Twenty Task records of the corresponding type (Call, Email, Meeting, Note). Each Task is linked to its parent Person or Company record via the ID resolution performed during the Person and Company import phases. Activity timestamps are preserved to maintain timeline ordering. Calls with disposition data transfer to custom fields on the Task. Emails with HTML bodies are stripped to plain text for Twenty field type compatibility. This phase runs after the primary record import is complete so that parent-record lookups are fully resolved.

  6. Owner reconciliation and cutover

    We extract all distinct Owner IDs from the Pro-Sales CRM export and match them by email against Twenty CRM's WorkspaceMember list. Any WorkspaceMember without a Pro-Sales CRM counterpart is flagged and reassigned to a designated fallback user. After owner reconciliation is complete, we run a full row-count reconciliation across all objects, spot-check 25-50 records against the Pro-Sales CRM source, and deliver the reconciliation report to the customer's admin for sign-off. We then freeze Pro-Sales CRM writes, run a final delta import of any records modified during the migration window, and mark Twenty CRM as the system of record. The Workflow inventory document is delivered at this point for admin rebuild.

Platform deep dives

Context on both ends of the pair

Pro-Sales CRM logo

Pro-Sales CRM

Source

Strengths

  • Flat-fee monthly billing with no long-term contracts
  • US/Canada-based infrastructure and English-first support
  • 60-day free trial with included setup/training
  • 30+ features bundled into all plans without feature gating
  • 256-bit encryption and 99.9% uptime guarantee

Weaknesses

  • No public API or developer documentation
  • Per-seat economics get expensive vs. SMB CRM alternatives
  • Small public review footprint and market presence
  • Mixed user reviews on data integration and manual entry
  • Add-on setup/training/migration fees inflate year-one cost
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 Pro-Sales CRM 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

    Pro-Sales CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Pro-Sales 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 two and three weeks for accounts under 10,000 Contacts and 2,000 Deals with no more than 10 custom fields per object. Migrations with larger data volumes (over 100,000 activity records), complex custom field schemas across multiple objects, or multiple pipeline configurations move to four to seven weeks because of the custom field pre-creation phase and the GraphQL API import script development. The discovery phase adds one to two weeks at the front of the timeline regardless of data volume.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Pro-Sales 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