CRM migration checklist

Migration Checklist: Moving to Twenty CRM

A phased punch list for migrating People, Companies, Opportunities, custom objects, notes, tasks, and attachments into Twenty CRM via CSV import.

123 tasks 4–12 weeks typical Updated May 27, 2026
Twenty CRM
Contacts
Companies
Deals
Leads
Activities
Notes
0 of 123 tasks complete

Phase 0

Decide & Plan

Lock scope, hosting model, and the cutover window before any data moves.

  • Risk if skipped: Switching deployment models mid-project rebuilds the workspace from scratch and discards all configuration.

  • Risk if skipped: Unlisted custom objects surface at import and force the schema build to restart inside the cutover window.

  • Risk if skipped: Assuming Gmail/Outlook sync backfills years of email history leaves a silent gap that only surfaces post-cutover.

  • Risk if skipped: Building against an older version then upgrading mid-project can break custom-object metadata and require schema rework.

  • Risk if skipped: Discovering a missing native feature after cutover forces an emergency rebuild outside the platform.

  • Risk if skipped: Provisioning in the wrong region forces a second migration after cutover.

  • Risk if skipped: Without a pre-agreed rollback gate, teams push through partial loads and create reconciliation work that takes weeks.

  • Risk if skipped: Unwritten out-of-scope items resurface as urgent during cutover.

Phase 1

Pre-Migration Prep

Clean the source, stand up the Twenty workspace, and brief the team before any export.

1a. Source-system audit and cleansing

  • Risk if skipped: Without a baseline, post-migration delta investigation has nothing to compare against.

  • Risk if skipped: Duplicate source records collapse on import and activities attach to the wrong record.

  • Risk if skipped: Mixed `acme.com`, `www.acme.com`, and `https://acme.com` formats create three Company records on import.

  • Risk if skipped: Phone numbers without country codes default to the workspace country and silently mislabel international contacts.

1b. Destination workspace setup

  • Risk if skipped: Testing imports directly in production pollutes the workspace and forces a full Postgres reset to recover.

  • Risk if skipped: Importing USD deals into a workspace set to EUR mislabels every Opportunity amount.

  • Risk if skipped: Owner and assignee columns silently drop on import when the user email does not exist in the workspace.

  • Risk if skipped: Importing into an object that does not yet exist returns an error and stalls the run.

  • Risk if skipped: Columns without a matching destination field are silently skipped on import.

  • Risk if skipped: Mapping by label instead of internal name produces silent column drops for fields whose label differs from the internal name.

  • Risk if skipped: CSV values that match the display label but not the internal name fail validation row-by-row.

  • Risk if skipped: Without junction relations enabled, many-to-many associations cannot be modeled and flatten to one-to-many.

  • Risk if skipped: Local storage fills the container volume on large attachment imports and crashes the worker.

  • Risk if skipped: Live workflows fire on every imported record, spamming Slack/email and creating spurious follow-on records.

1c. People prep

  • Risk if skipped: Users writing to the source after the freeze create a sync delta that never gets reconciled.

Phase 2

Source Export

Pull complete, timestamped exports of every in-scope object from the source.

  • Risk if skipped: Missing custom fields at export time means a second export and second transform pass.

  • Risk if skipped: Importing amounts without currency context produces zero or mislabeled values in Twenty's Currency field.

  • Risk if skipped: Opportunity attachments dropped at import without warning if the destination object does not support them.

  • Risk if skipped: Source automation logic lost forever once the source is decommissioned.

Phase 3

Transform & Map

Convert raw source exports into Twenty-shaped files, ready for import.

3a. Mapping spreadsheet

  • Risk if skipped: Without one canonical mapping, every transform script diverges and validation becomes impossible.

  • Risk if skipped: Mismatched stage labels (source 'Closed-Won' vs Twenty 'won') fail validation row-by-row.

  • Risk if skipped: Without an upsert key, re-runs duplicate every record.

3b. Data transformation

  • Risk if skipped: Non-UTF-8 encoding silently mangles names and addresses.

  • Risk if skipped: Ambiguous date formats interpret 03/04 as March 4 or April 3 depending on parser locale.

  • Risk if skipped: Domain format mismatch creates duplicate Companies the first time Gmail sync sees an email from that domain.

  • Risk if skipped: Labels-only CSVs fail row-by-row with 'invalid option' errors.

  • Risk if skipped: Files over 10,000 rows are rejected by the importer and force a re-split mid-cutover.

3c. Relationship and audit-trail decisions

  • Risk if skipped: Re-stamping silently destroys the audit timeline that finance, sales ops, or compliance may need later.

  • Risk if skipped: Relations referencing non-unique fields fail to resolve and the join silently drops.

3d. CRM-specific transforms

  • Risk if skipped: Multiple-pipeline source data flattened into one stage list loses the pipeline distinction permanently.

  • Risk if skipped: Live cadences silently lose their next-step trigger and stop firing.

  • Risk if skipped: HTML stored as-is renders as escaped tags in the Twenty UI.

  • Risk if skipped: Without a junction object, many-to-many collapses to one-to-many and association data is lost.

  • Risk if skipped: Skipping the rebuild catalog leaves users without the saved filters and automations they depended on.

Phase 4

Sandbox Test Migration

Catch every problem in the sandbox before it costs you in production.

  • Risk if skipped: Skipping a sample run hides issues that only surface on full-volume load.

  • Risk if skipped: Relation resolution failures look like 'silent drops' — the row imports but the link is blank.

  • Risk if skipped: Non-idempotent re-runs duplicate every record and force a Postgres-level cleanup.

  • Risk if skipped: Cutover windows planned without a measured throughput baseline routinely overrun by 2-5x.

  • Risk if skipped: Production cutover without sandbox sign-off has no rollback gate.

Phase 5

Production Cutover

Execute the load in dependency order. Stop and fix on any failure.

  • Risk if skipped: Late writes create a delta that never gets reconciled.

  • Risk if skipped: A workflow left on fires on every imported record.

  • Risk if skipped: Loading People before Companies leaves company links unresolved.

  • Risk if skipped: Without per-step counts, mid-load failures cannot be diagnosed.

Phase 6

Validate

Prove the load was correct before users get in.

6a. Reconciliation

  • Risk if skipped: Unexplained deltas hide silent drops that surface as user complaints weeks later.

  • Risk if skipped: Pipeline-value mismatch indicates currency, amount, or stage-mapping errors at scale.

6b. Relationship validation

6c. Audit and compliance

  • Risk if skipped: Discovering original timestamps were dropped after users start working in Twenty makes recovery impossible.

6d. User-acceptance check

  • Risk if skipped: Auto-creation set to 'For messages sent & received' floods the workspace with low-value contacts.

6e. Sign-off

  • Risk if skipped: Opening access without sign-off makes rollback far harder.

Phase 7

Post-Migration Cleanup

Rebuild the configuration that does not migrate, decommission the source, close the project.

  • Risk if skipped: Without saved views, users default to flat tables and adoption drops.

  • Risk if skipped: Default permissions may expose sensitive fields to all members.

  • Risk if skipped: Source data lost from local disk before the retention window expires is unrecoverable.

  • Risk if skipped: Skipping upgrades for a year compounds breaking changes and makes the next upgrade a multi-week project.

Watch list

Risks to track throughout

These risks live across multiple phases — keep an eye on them from kickoff through cutover.

  • Active development and breaking changes between versions

    Twenty is in active development with frequent releases (2.0 shipped major architectural changes). Features like Merge Records, Junction Relations, and the Lab toggle land in specific versions, and breaking changes between versions can affect custom-object metadata and field types. Pin the exact target version in Phase 0, validate every transform against that version in Phase 4, and budget for a re-test if anyone bumps the version mid-project.

  • Native feature gaps versus mature CRMs

    Twenty does not yet ship native lead scoring, email sequences/cadences, formula/computed fields, a Rich Text field type, or attachments on Opportunities. These gaps surface as 'wait, where did this go?' questions after cutover. Catalog every source feature that has no Twenty equivalent in Phase 0, decide rebuild vs. drop in writing, and communicate the gaps to users before go-live rather than after.

  • Manual rebuild of Views, Workflows, and Permissions

    Twenty's own migration documentation states Views, Workflows, and Permissions must be recreated manually — there is no migration path. Underestimating this rebuild work is the most common scope miss. Catalog every source view, automation rule, and permission rule in Phase 2, plan the rebuild as a named workstream in Phase 7, and gate go-live on at least the role-critical views being live.

  • CSV row caps and chunking under retries

    Twenty's CSV importer caps at 10,000 rows per file. A 500k-record load involves at least 50 CSV uploads. Retries, mapping fixes, and re-loads compound this work. Track cumulative work counts from Phase 4 onward, plan the load order to amortize retries, and on self-hosted deployments tune Postgres and worker concurrency to match the chosen path.

Pair this with the long-form guide

The complete Twenty CRM migration guide

Same research, written as prose: data model, import mechanisms, mapping strategy, pitfalls, and partner landscape.