CRM migration

Migrate from Simple Sales Tracking to Twenty CRM

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

Simple Sales Tracking logo

Simple Sales Tracking

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

71%

10 of 14

objects map 1:1 between Simple Sales Tracking and Twenty CRM.

Complexity

BStandard

Timeline

1-2 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Simple Sales Tracking to Twenty CRM is a structural migration that resolves a platform model difference at the outset. Simple Sales Tracking uses Leads and Opportunities as separate first-class record types; Twenty CRM consolidates unqualified prospects and people into a People object, so we perform a pre-import split rule based on Simple Sales Tracking Lead status before any data moves. Custom Sales Record fields and custom Pipeline stages require UI-metadata extraction because Simple Sales Tracking does not expose a schema endpoint, which we handle by cross-referencing a sample export against a screen capture of the field configuration page. Files and attachments migrate as downloads from the 1 GB storage pool, then re-attach in Twenty. We do not migrate Automations, BCC Email rules, daily reminders, or the real-time Activity Feed because these are application-state features without persistent API records. The migration scope includes a written inventory of any active Commission Tracking configurations requiring manual rebuild in Twenty.

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

Simple Sales Tracking logo

Simple Sales Tracking

What's pushing teams away

  • Lack of native integrations with email platforms, calendars, and accounting tools forces teams to maintain workarounds that break over time.
  • No built-in marketing automation, email sequences, or lead scoring means the platform does not scale as the team grows beyond reactive tracking.
  • File storage capped at 1 GB across all users creates a hard ceiling for teams that rely heavily on document attachments.
  • Limited reporting depth compared to mid-market CRMs leaves sales managers without the drill-down analytics needed for pipeline reviews.
  • Absence of a public API changelog or versioned endpoints raises concerns about long-term data portability and integration stability.

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

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

Simple Sales Tracking

Lead

maps to

Twenty CRM

Person (People)

1:1
Fully supported

Simple Sales Tracking Lead records map to Twenty CRM Person records. We apply a pre-split rule based on the Lead status property: Leads with a status indicating early-stage qualification map to Person records with a custom stage field capturing the original status. Lead source fields migrate to a custom source field on Person. Custom Lead-level Sales Record fields migrate as custom Person fields after schema inspection from UI metadata.

Simple Sales Tracking

Opportunity

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Opportunities map directly to Twenty Opportunities. The Simple Sales Tracking deal amount, expected close date, and owner assignment transfer to the corresponding Twenty Opportunity fields. Pipeline stage names from Simple Sales Tracking are mapped to Twenty stage values that we configure before migration; the stage sequence order is preserved as the Stage display order in Twenty.

Simple Sales Tracking

Account

maps to

Twenty CRM

Company

1:1
Fully supported

Simple Sales Tracking Accounts map to Twenty CRM Companies. Account names, addresses, industry tags, and associated Contact links transfer to the Company object. The Company record is created before any Person import so that the Person-to-Company relationship is satisfied at the moment of Person insert. Account domain or website fields map to the Company URL field.

Simple Sales Tracking

Contact

maps to

Twenty CRM

Person (People)

1:1
Fully supported

Contacts map to Twenty CRM Person records using the same mapping as Leads. Where a Contact is linked to an Account, the Person-Company relationship is resolved during import by matching the associated Account name to the pre-created Company record. Email, phone, and address fields transfer to Person's standard contact fields; custom Contact-level fields migrate as custom Person fields.

Simple Sales Tracking

Note

maps to

Twenty CRM

Note

1:1
Fully supported

Notes are free-text records attached to Contacts, Opportunities, or Accounts in Simple Sales Tracking. We preserve note content and creation timestamp. Note formatting and embedded file links do not carry over; if a note contains an attachment reference, we export the linked file separately and note the association for re-attachment in Twenty.

Simple Sales Tracking

Task

maps to

Twenty CRM

Task

1:1
Fully supported

Tasks migrate with due date, assignee, and completion status preserved. Open and completed tasks transfer. Simple Sales Tracking task histories do not include a full activity log of status changes, so we migrate the final state rather than an audit trail. Task assignment resolves by matching the Simple Sales Tracking owner email to a Twenty User.

Simple Sales Tracking

Appointment

maps to

Twenty CRM

Task

1:1
Fully supported

Appointments include date, time, duration, title, and linked Contact. We migrate appointment records as Task records in Twenty with the original timestamp preserved and a custom field capturing the duration. The linked Contact resolves to the corresponding Person record via email match. Calendar re-booking in Twenty is a manual step for the end user post-migration.

Simple Sales Tracking

Files and Attachments

maps to

Twenty CRM

Attachments

1:1
Mapping required

Files attached to Contacts, Opportunities, and Notes are exported as individual downloads from Simple Sales Tracking's 1 GB storage pool. We re-attach each file to the corresponding migrated record in Twenty using the Person, Opportunity, or Note API. File metadata (original filename, upload date, file size) is preserved. The 1 GB total storage ceiling means we flag any account approaching capacity during discovery so the customer can archive old files before migration.

Simple Sales Tracking

Custom Sales Record Fields

maps to

Twenty CRM

Custom Person and Opportunity Fields

lossy
Mapping required

Custom fields on Sales Records require UI-metadata extraction because Simple Sales Tracking does not expose a schema endpoint. We ask the customer for a screen capture of their custom field configuration page during discovery and cross-reference it against a sample API response to build the complete field map. Custom fields are created in Twenty as custom Person or custom Opportunity fields before migration, matching the source field type (text, number, date, picklist).

Simple Sales Tracking

Custom Pipeline Stages

maps to

Twenty CRM

Opportunity Stage Values

lossy
Mapping required

Simple Sales Tracking allows custom named stages with drag-and-drop ordering per pipeline. We capture the full stage sequence during discovery, then configure Twenty's Opportunity stage values to match the source stage names and order before any Opportunity records are imported. Any stage with a probability percentage in Simple Sales Tracking is set as the Stage probability in Twenty.

Simple Sales Tracking

User

maps to

Twenty CRM

User

1:1
Fully supported

Simple Sales Tracking user records and role assignments export as a user list. We map role names to the closest applicable Twenty workspace role. Active users receive Twenty User accounts; inactive or archived users are flagged for the customer's admin to handle post-migration. Owner assignment on Opportunities and Tasks resolves via email match against the migrated User list.

Simple Sales Tracking

Commission Tracking

maps to

Twenty CRM

Custom Field on Opportunity

lossy
Mapping required

Commission percentage or amount fields attached to Opportunities in Simple Sales Tracking are treated as custom Opportunity fields. We create a custom commission field in Twenty's Opportunity object before import and transfer the values directly. If the destination field does not exist, we export the data as a CSV alongside the migration for manual entry or custom field creation post-migration.

Simple Sales Tracking

Lead Source

maps to

Twenty CRM

Custom Source Field on Person

lossy
Fully supported

Lead sources are a configurable reference taxonomy in Simple Sales Tracking. We migrate source labels as options in a custom picklist or text field on the Person object in Twenty. If Twenty's standard source field exists in the target workspace, we map labels directly; otherwise we use a custom field and note the available values for the admin to configure.

Simple Sales Tracking

Activity Feed

maps to

Twenty CRM

Not migratable

1:1
Not supported

The Activity Feed is a real-time event stream generated within Simple Sales Tracking and is not exposed as a queryable API object. Historical feed entries cannot be retrieved via the API. We explain this limitation during discovery and recommend the customer export any critical feed entries as manual Notes before the migration date. This is not a data loss gap but a product limitation of the source platform.

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.

Simple Sales Tracking logo

Simple Sales Tracking gotchas

Medium

Trial import ceiling of 50 records masks true data volume

High

No public bulk export API requires iterative extraction

Medium

Custom field definitions are not exposed via a schema endpoint

Low

Activity Feed is a real-time stream with no historical query API

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 People object lacks standard fields common in other CRMs

    A GitHub issue (twentyhq/twenty#13953) documents that the People object in Twenty CRM ships with fewer standard fields than competitors like HubSpot, GoHighLevel, or Salesforce. Fields like jobTitle, department, industry, website, annual revenue, and employee count are not present on the Companies object by default. During migration, teams cannot map data directly because the destination fields do not exist. We create these fields as custom fields in Twenty before migration during the schema preparation phase. The customer should expect 30-60 minutes of field creation work if the source data uses these attributes.

  • No bulk import UI in Twenty CRM requires API scripting

    Twenty CRM does not have a built-in import wizard or CSV loader. Migrations from Simple Sales Tracking require a script that reads the exported CSV and makes batch API calls to Twenty's REST or GraphQL endpoint. We write and run this import script as part of the migration. The customer should be aware that this is not a drag-and-drop import and that the script must be tested in a staging environment before production. Third-party tools like n8n can also be used for batch import if the customer prefers a no-code approach.

  • Custom field schema requires UI inspection, not API discovery

    Simple Sales Tracking does not expose a schema endpoint for custom field definitions. We must extract custom field names and types by inspecting a sample export and by requesting a screen capture of the customer's custom field configuration page during discovery. If the customer cannot provide the screen capture, we inspect the API response for a sample record and infer field types from data values. This adds a discovery step not required for platforms with documented schema APIs.

  • Activity Feed and real-time feed entries are not migratable

    Simple Sales Tracking's Activity Feed is a live event stream generated by user actions within the application. It is not stored as a queryable historical record via the API. We do not migrate feed entries as standalone data. Any audit-relevant feed entries should be exported manually as Notes by the customer before migration day. This is a product-level limitation of the source platform, not a migration failure.

Migration approach

Six steps for a successful Simple Sales Tracking to Twenty CRM data migration

  1. Discovery and schema inspection

    We audit the Simple Sales Tracking account for record counts across Leads, Opportunities, Accounts, Contacts, Tasks, Notes, and Appointments. We request a screen capture of the custom field configuration page and a sample API export to build the complete field map. We identify any custom pipeline stage names, Commission Tracking field usage, and file attachment volume relative to the 1 GB storage ceiling. The discovery output is a written migration scope, a custom field mapping table, and a pipeline stage mapping table.

  2. Schema preparation in Twenty CRM

    We create custom fields in Twenty's Person, Company, and Opportunity objects for every Simple Sales Tracking custom field that does not have a standard equivalent. We configure Opportunity stage values to match the source pipeline stage names and order. If the customer uses Commission Tracking, we create a custom Opportunity field for commission percentage or amount. We verify field types (text, number, date, picklist) against the source data to avoid type mismatches during import. Schema changes are validated in Twenty before any data moves.

  3. User provisioning and owner reconciliation

    We extract every distinct Simple Sales Tracking user referenced on Leads, Opportunities, Contacts, Tasks, and Notes. Owner email addresses are matched against the target Twenty workspace's User list. Any Simple Sales Tracking owner without a corresponding Twenty User is placed in a reconciliation queue for the customer's admin to provision before record import resumes. We cannot migrate owner assignment without resolved User IDs in Twenty.

  4. Record export and staging import

    We export data from Simple Sales Tracking via its REST API using paginated polling given the absence of a bulk export endpoint. Records are extracted in dependency order: Accounts first, then Contacts and Leads with Account lookups resolved, then Opportunities with stage mapping applied, then Tasks, Notes, and Appointments. Files and attachments are downloaded separately. We run a staging import into a Twenty workspace to verify record counts, relationship resolution, and custom field population before production migration.

  5. Production migration in dependency order

    We run the production migration in the same dependency order used in staging. Company records are created first. Person records (Contacts and Leads) are imported with the split rule applied and linked to Companies. Opportunities are imported with stage values resolved and linked to the correct Person and Company. Tasks, Notes, and Appointments are imported last, with linked Person references resolved. Files are re-attached to the corresponding migrated records. Each phase emits a row-count reconciliation report.

  6. Cutover, validation, and Commission Tracking handoff

    We freeze writes in Simple Sales Tracking during cutover and run a final delta migration for any records modified during the migration window. The customer validates a random sample of migrated records against the source. We deliver the Commission Tracking data as a supplementary CSV if custom fields were not pre-created for commission values. We provide a written list of any Simple Sales Tracking automations (BCC Email rules, daily reminders) and the Activity Feed gap for the customer to address manually post-migration. We do not rebuild automations as Twenty workflows inside the migration scope.

Platform deep dives

Context on both ends of the pair

Simple Sales Tracking logo

Simple Sales Tracking

Source

Strengths

  • Single flat price of $15/user/month with unlimited Leads, Opportunities, Contacts, Tasks, and Notes.
  • Custom Sales Record fields and custom Pipeline stage definitions allow small teams to model their exact process.
  • Multi-level user permissions support hierarchical sales team structures without requiring admin overhead.
  • Smart BCC Email integration and daily reminders provide lightweight automated nudges for reps.
  • Real-time activity feed surfaces team-wide updates without requiring a separate communication layer.

Weaknesses

  • No public rate limit documentation for the API makes it difficult to estimate migration throughput before scoping.
  • No documented bulk export endpoint means large record sets require iterative API polling during extraction.
  • File storage capped at 1 GB total per account limits the volume of document attachments that can be migrated.
  • No native email sequencing or marketing automation restricts the platform to reactive sales tracking only.
  • Language-specific API kits are limited to a small set; most integrations require custom HTTP wrapper code.
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 Simple Sales Tracking 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

    Simple Sales Tracking: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Simple Sales Tracking 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 one and two weeks for accounts under 5,000 records with fewer than 10 custom fields. Migrations with extensive custom field sets (20+ custom Sales Record fields), multiple pipeline stage configurations, or file attachment volume exceeding 500 MB extend to three to five weeks because of the schema inspection work, custom field creation in Twenty, and file extraction and re-attachment. Timeline assumes the customer provides the custom field screen capture during discovery.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Simple Sales Tracking.
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