CRM migration
Field-level mapping, validation, and rollback between SalesTown CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
SalesTown CRM
Source
Twenty CRM
Destination
Compatibility
6 of 10
objects map 1:1 between SalesTown CRM and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from SalesTown CRM to Twenty CRM is a migration from a WhatsApp-native, mobile-first platform with no documented API to an open-source, developer-first CRM with REST, GraphQL, and webhook capabilities. SalesTown CRM organizes its data around a Lead Management System with Deals flowing through customizable Pipelines, while Twenty CRM uses a modern object model with Opportunities, Companies, and People as first-class records. The primary technical constraint on the source side is the absence of a public API, which means all extraction uses the in-product CSV/Excel export and must account for row caps per tier. We sequence parent objects (Users, Companies, Pipelines) before child records (Contacts, Leads, Deals) to satisfy Twenty's foreign-key requirements, and we reconstruct WhatsApp activity threads from flat export rows using timestamp ordering and sender IDs. Workflows, automations, and custom templates do not migrate; we deliver a written inventory for your admin to rebuild in Twenty's visual builder.
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 SalesTown 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.
SalesTown CRM
Contact
Twenty CRM
Person
1:1SalesTown Contact records map directly to Twenty Person records. Standard fields (name, phone, email, address) map 1:1. Custom Contact properties migrate to Twenty's custom field infrastructure, with the workspaceMember querying the /metadata API to pre-create destination fields before import. Owner assignment from SalesTown maps to Twenty workspaceMember by email resolution.
SalesTown CRM
Lead
Twenty CRM
Person (unqualified) or Opportunity (qualified)
1:manySalesTown Leads collected via the Lead Management System split into Twenty Persons for unqualified leads and Twenty Opportunities for leads that progressed to a deal stage. We evaluate the Lead's stage, last activity date, and any deal association to determine the correct destination. The original LMS assignment and distribution rule are preserved as custom fields for audit.
SalesTown CRM
Company (Account)
Twenty CRM
Company
1:1SalesTown Company/Account records map directly to Twenty Company records. Company name, domain, industry, employee count, and address fields migrate 1:1. SalesTown's undocumented Company schema means we inspect the CSV export to identify available fields, map each to Twenty's Company object, and flag any unmapped fields in a reconciliation report for the customer to address post-migration.
SalesTown CRM
Deal
Twenty CRM
Opportunity
1:1SalesTown Deals map to Twenty Opportunities. Deal amount, stage, owner, expected close date, and pipeline assignment transfer directly. We resolve the parent pipeline and stage reference at migration time, ensuring the Opportunity stage maps to a Twenty pipeline stage that the customer's admin has configured before the import phase.
SalesTown CRM
Pipeline
Twenty CRM
Pipeline
lossySalesTown Pipelines export with names, stage order, and stage-specific win/loss flags. We recreate Pipelines in Twenty before loading any Deals, configuring stage names, probabilities, and ordering to match the source. Pipelines with different stage counts between systems require explicit stage-to-stage mapping rather than positional mapping to prevent stage misalignment.
SalesTown CRM
Pipeline Stage
Twenty CRM
Pipeline Stage
lossySalesTown Pipeline Stages carry names, probabilities, and ordering. Each stage is mapped explicitly to a Twenty Pipeline Stage during the configuration phase. Stage-specific probabilities migrate from SalesTown to Twenty stage probability settings. Stages that do not exist in Twenty are flagged for the admin to create before Deal migration begins.
SalesTown CRM
Activity (Call, Email, WhatsApp)
Twenty CRM
Task / Event
1:1SalesTown Activities (calls, emails, WhatsApp messages) map to Twenty Task and Event records. WhatsApp activities carry thread-level metadata that flat CSV exports split into individual rows, losing parent-child thread associations. We reconstruct thread relationships during the transform phase using timestamp ordering and sender IDs, rehydrating conversation continuity as grouped Task records in Twenty's activity timeline.
SalesTown CRM
User / Owner
Twenty CRM
WorkspaceMember
1:1SalesTown User records (name, email, team assignment) map to Twenty WorkspaceMember records. We resolve owners by email match. Any SalesTown User without a matching WorkspaceMember in Twenty goes to a reconciliation queue for the customer's admin to provision before record import resumes. Duplicate email addresses at the destination are flagged and held from import until resolved.
SalesTown CRM
Custom Template
Twenty CRM
Email Template (manual rebuild)
1:1SalesTown customizable email templates exist but have no documented schema. We export available template metadata (name, subject, available tags) and deliver it as a written template inventory. The customer rebuilds templates in Twenty's template editor. Template bodies, conditional content, and dynamic field insertions do not migrate automatically because they require schema-aware content transformation.
SalesTown CRM
Custom Fields / Properties
Twenty CRM
Custom Fields
lossySalesTown custom Contact, Lead, and Deal properties migrate to Twenty's custom field infrastructure. We query the /metadata API in Twenty to discover existing custom field definitions, create any missing fields via the API, then map SalesTown custom property values to typed Twenty fields during the data transform phase. Picklist values in SalesTown map to Twenty select options; multi-checkbox properties map to multi-select.
| SalesTown CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Lead | Person (unqualified) or Opportunity (qualified)1:many | Fully supported | |
| Company (Account) | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline | Pipelinelossy | Fully supported | |
| Pipeline Stage | Pipeline Stagelossy | Fully supported | |
| Activity (Call, Email, WhatsApp) | Task / Event1:1 | Fully supported | |
| User / Owner | WorkspaceMember1:1 | Fully supported | |
| Custom Template | Email Template (manual rebuild)1:1 | Fully supported | |
| Custom Fields / Properties | Custom Fieldslossy | 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.
SalesTown CRM gotchas
iPhone-only app excludes iPad and small-screen devices
No documented public API for programmatic export
WhatsApp activity thread integrity across migration
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
Export planning and CSV pagination design
We audit the SalesTown CRM account to understand tier, record volumes, pipeline count, and available export views. Because there is no public API, we design a CSV export strategy that accounts for per-tier row caps, field limits, and the multi-cycle pagination required for large datasets. We identify the export order (Contacts first, then Companies, then Pipelines, then Deals, then Activities) and schedule export windows that avoid conflict with peak usage times. We request access to the in-product export function and validate export permissions with the customer's SalesTown admin.
Data audit and field-level discovery
We run initial exports to inspect actual field contents, identify missing or null fields, detect duplicate records, and discover the Company/Account schema that is not publicly documented. We cross-reference export headers against SalesTown's documented object model to identify gaps. The audit output is a data quality report with duplicate counts, incomplete record percentages, and a field-level mapping matrix for review by the customer's admin. Data cleaning decisions (duplicate merge, null fill, date format standardization) are made at this stage.
Twenty schema design and pipeline configuration
We design the destination schema in Twenty. This includes creating Company, Person, and Opportunity objects with the correct field types, configuring Pipelines with stage names and probabilities matched to the SalesTown source, and setting up custom fields via Twenty's metadata API to receive SalesTown custom properties. We query Twenty's /metadata API to discover existing object definitions and create any missing custom fields before data import begins. Pipeline configuration happens in Twenty's UI or via API before Deals are imported.
Owner and user reconciliation
We extract every distinct SalesTown User referenced on Contact, Company, Deal, and Activity records and match by email against the Twenty destination's WorkspaceMember list. Users without a matching WorkspaceMember go to a reconciliation queue. The customer's admin provisions missing users in Twenty before record import resumes. This step is mandatory because Owner and assignee references on Deals, Activities, and Leads require a valid WorkspaceMember ID at the destination.
Staged migration in dependency order
We run migration in dependency order: WorkspaceMembers (validated), Companies (from SalesTown Companies), Persons (from SalesTown Contacts and Leads), Pipelines and Stages (configured before Deals), Opportunities (with Company and Person lookups resolved), and Activities (with WhatsApp thread reconstruction applied during transform). Each phase emits a row-count reconciliation report before the next phase begins. CSV exports are transformed using field-type mapping, date format standardization, and multi-value separator handling before loading into Twenty via the REST or GraphQL API.
Cutover, validation, and automation inventory handoff
We freeze writes in SalesTown during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty as the system of record. We deliver the automation and workflow inventory document to the customer's admin team for rebuild in Twenty's visual builder. We support a one-week hypercare window where we resolve any data quality issues raised by the customer's team. We do not rebuild SalesTown workflows or WhatsApp automation sequences as Twenty automations inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
SalesTown 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 SalesTown 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
SalesTown CRM: Not publicly documented.
Data volume sensitivity
SalesTown 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 SalesTown CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your SalesTown 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 SalesTown 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.