CRM migration

Migrate from SalesTown CRM to Twenty CRM

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 logo

SalesTown CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

60%

6 of 10

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

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

SalesTown CRM logo

SalesTown CRM

What's pushing teams away

  • Integration ecosystem is limited — enterprise teams report needing third-party software that SalesTown CRM does not support, forcing workarounds or dual-system manual syncing.
  • iPhone-only mobile app with 6-inch minimum screen requirement excludes iPad users and smaller devices, creating friction for field reps on varied hardware.
  • Lack of documented public API means teams needing programmatic data access or third-party integrations hit a wall, driving migration to platforms with open REST APIs.

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

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

maps to

Twenty CRM

Person

1:1
Fully supported

SalesTown 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

maps to

Twenty CRM

Person (unqualified) or Opportunity (qualified)

1:many
Fully supported

SalesTown 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)

maps to

Twenty CRM

Company

1:1
Fully supported

SalesTown 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

maps to

Twenty CRM

Opportunity

1:1
Fully supported

SalesTown 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

maps to

Twenty CRM

Pipeline

lossy
Fully supported

SalesTown 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

maps to

Twenty CRM

Pipeline Stage

lossy
Fully supported

SalesTown 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)

maps to

Twenty CRM

Task / Event

1:1
Fully supported

SalesTown 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

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

SalesTown 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

maps to

Twenty CRM

Email Template (manual rebuild)

1:1
Fully supported

SalesTown 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

maps to

Twenty CRM

Custom Fields

lossy
Fully supported

SalesTown 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.

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.

SalesTown CRM logo

SalesTown CRM gotchas

Medium

iPhone-only app excludes iPad and small-screen devices

High

No documented public API for programmatic export

Medium

WhatsApp activity thread integrity across migration

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

  • SalesTown CRM has no documented public API

    SalesTown CRM does not publish a developer API reference, endpoint documentation, or rate limit guidance. All data extraction uses the in-product CSV/Excel export, which is subject to the platform's row and field caps per tier. We plan extraction around these limits, run multiple export cycles to paginate through large datasets, and treat the export as a scheduled batch rather than a live API pull. The absence of an API also means we cannot validate data integrity programmatically before export; we rely on post-export reconciliation against the source UI record counts.

  • WhatsApp activity thread reconstruction from flat CSV rows

    SalesTown CRM's WhatsApp integration stores conversation threads with thread-level metadata including message status and timestamp sequences. The flat CSV export splits these into individual rows, losing parent-child thread associations that are critical for maintaining conversation continuity in Twenty's activity timeline. We reconstruct thread relationships during the transform phase using timestamp ordering and sender IDs, grouping individual activity rows back into thread-ordered Tasks. This adds transformation complexity and requires a deterministic sort key to be present in the export.

  • Company/Account schema is undocumented in SalesTown CRM

    SalesTown CRM's Company/Account records exist but their field schema is not publicly documented. We inspect the actual CSV export to identify available company fields, map each to Twenty's Company object, and flag unmapped fields in a post-migration reconciliation report. The customer reviews this report and decides whether to create additional Twenty fields or accept the field gap. This is distinct from Contact and Deal mapping where field schemas are well understood.

  • Reports and dashboard configurations have no export mechanism

    SalesTown CRM stores report and dashboard definitions server-side with no documented export mechanism. We migrate the underlying data (Contacts, Deals, Activities) so that reports can be rebuilt in Twenty, but the report configurations, saved filters, and dashboard layouts do not transfer. We deliver a written inventory of every SalesTown report (name, object, filters, columns) for the customer's admin to recreate in Twenty's reporting interface. This is standard scope for all FlitStack AI migrations and is not unique to this pair.

  • Workflows and automations do not migrate to Twenty's builder

    SalesTown CRM's workflow rules and automation sequences (WhatsApp auto-replies, lead distribution rules, stage-change triggers) do not have a documented export format and cannot be migrated as code to Twenty's automation builder. We deliver a written inventory of every active automation with its trigger, conditions, actions, and a recommended Twenty equivalent. The customer's admin rebuilds them in Twenty's visual builder post-migration. This scope limitation is standard across all FlitStack AI migrations and applies to SalesTown's WhatsApp automation sequences and LMS distribution rules.

Migration approach

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

SalesTown CRM logo

SalesTown CRM

Source

Strengths

  • WhatsApp and email automation built into the core product rather than bolted on.
  • Lead scoring and segmentation tools for prioritizing high-value prospects.
  • Customizable dashboards and reporting for sales performance analysis.
  • Auto lead collection from multiple sources with smart distribution rules.
  • Simple self-implementation without requiring third-party consultants.

Weaknesses

  • No publicly documented API limits or endpoint reference, making programmatic migration planning difficult.
  • Integration ecosystem is limited — enterprise teams report gaps with common third-party platforms.
  • iPhone-only mobile app excludes iPads and devices under 6 inches, restricting field team hardware options.
  • Pricing structure is not publicly transparent, requiring direct enquiry to determine module costs.
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 SalesTown 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

    SalesTown CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 10,000 Contacts and 2,000 Deals with a clean data model. Migrations with large activity histories (over 200,000 WhatsApp and email records), multiple pipelines, company-level hierarchy, or undocumented Company schema complexity move to eight to twelve weeks because of CSV pagination cycles, thread reconstruction logic, and the data audit phase required when the source has no public API. Twenty's self-hosted option does not change migration timeline; cloud versus self-hosted affects deployment, not data migration scope.

Adjacent paths

Related migrations to explore

Ready when you are

Move from SalesTown 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