CRM migration
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
Source
Twenty CRM
Destination
Compatibility
8 of 12
objects map 1:1 between Pro-Sales CRM and Twenty CRM.
Complexity
BStandard
Timeline
2-3 weeks
Overview
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.
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 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
Twenty CRM
Person
1:1Pro-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
Twenty CRM
Company
1:1Pro-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
Twenty CRM
Opportunity
1:1Pro-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
Twenty CRM
Opportunity Stage
lossyPro-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
Twenty CRM
Task (type = Call)
1:1Pro-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
Twenty CRM
Task (type = Email)
1:1Pro-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
Twenty CRM
Task (type = Meeting)
1:1Pro-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
Twenty CRM
Task (type = Note)
1:1Pro-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)
Twenty CRM
Custom Field (Person)
lossyPro-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)
Twenty CRM
Custom Field (Opportunity)
lossyPro-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
Twenty CRM
WorkspaceMember (User)
1:1Pro-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
Twenty CRM
Custom Select or Multi-Select Field
lossyPro-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.
| Pro-Sales CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Activity: Call | Task (type = Call)1:1 | Fully supported | |
| Activity: Email | Task (type = Email)1:1 | Fully supported | |
| Activity: Meeting | Task (type = Meeting)1:1 | Fully supported | |
| Activity: Note | Task (type = Note)1:1 | Fully supported | |
| Custom Property (Contact) | Custom Field (Person)lossy | Fully supported | |
| Custom Property (Deal) | Custom Field (Opportunity)lossy | Fully supported | |
| Owner | WorkspaceMember (User)1:1 | Fully supported | |
| Tag/Label | Custom Select or Multi-Select Fieldlossy | 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.
Pro-Sales CRM gotchas
Catalog name 'Pro-Sales CRM' is non-standard — vendor brands as SalesPro CRM
Add-on data migration and training fees add to year-one TCO
No documented public API
Per-user pricing scales linearly without enterprise discount tier publicly listed
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 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.
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.
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.
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.
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.
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
Pro-Sales CRM
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 Pro-Sales CRM 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
Pro-Sales CRM: Not publicly documented.
Data volume sensitivity
Pro-Sales CRM 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 Pro-Sales CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Pro-Sales CRM
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.