CRM migration

Migrate from InTouch to Twenty CRM

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

InTouch logo

InTouch

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between InTouch and Twenty CRM.

Complexity

BStandard

Timeline

24–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

InTouch CRM provides straightforward contact management and basic pipeline tracking that serves small teams well, but its customization limits and integration constraints frustrate growing organizations. Twenty CRM enters as an open-source alternative built on TypeScript, NestJS, and PostgreSQL, offering a modern interface, unlimited custom fields, and self-hosting capability under AGPL licensing. The migration carries all InTouch data — contacts, companies, deals, notes, tasks, and custom fields — into Twenty's relational schema. We map InTouch's contact and company records directly to Twenty People and Companies; InTouch deals become Twenty Opportunities with stage and amount data preserved. One structural difference: Twenty requires custom fields to be pre-created in Settings → Data Model before import, and the import sequence follows Companies → People → Opportunities to resolve foreign-key relationships. We handle the sequencing, field creation planning, and delta-pickup window so your team keeps working in InTouch during cutover. Our migration process preserves all original timestamps, owner assignments, and relationship links so your pipeline history survives the cutover intact.

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

InTouch logo

InTouch

What's pushing teams away

  • Advanced customisation for dashboards, reporting, and workflow branching is limited, causing firms with complex or non-standard transaction types to outgrow the platform's flexibility.
  • The mobile app receives consistent criticism for poor usability and feature gaps compared to the desktop interface, which frustrates fee-earners who work on-site at properties.
  • The transition from the legacy flash-based version to the modern platform disrupted established users' workflows, and some firms report the learning curve on the new UI was steeper than expected.
  • Firms requiring deep third-party integrations with accounting software, Land Registry portals, or practice management suites find InTouch's native integration ecosystem too narrow for their needs.

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

Each row shows how a InTouch 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.

InTouch

Contact

maps to

Twenty CRM

People

1:1
Fully supported

InTouch contacts migrate directly to Twenty People records. The People object includes name fields, email, phone, jobTitle, and a companyId lookup that requires a matching Company record to exist first in Twenty. We resolve contacts with no company to standalone People records.

InTouch

Company

maps to

Twenty CRM

Companies

1:1
Fully supported

InTouch company records map 1:1 to Twenty Companies using direct field-to-field translation. The Companies object holds name, domain/website, industry, employee count, and annual revenue fields from the corresponding InTouch company record. Parent-child company hierarchies in InTouch map to Twenty's nested company structure using the parentCompanyId lookup field. We preserve all company-level custom fields during the migration.

InTouch

Deal

maps to

Twenty CRM

Opportunities

1:1
Fully supported

InTouch deals become Twenty Opportunities. Each deal's name, amount, stage, expected close date, and ownerId map to the equivalent Twenty fields. Opportunity records require a companyId or personId foreign key — we resolve these before migration to prevent orphaned records.

InTouch

Note

maps to

Twenty CRM

Notes

1:1
Fully supported

InTouch notes migrate to Twenty Notes attached to People, Companies, or Opportunities via the id of the parent record. Notes preserve body text, author/owner, and creation timestamp. Rich-text formatting in InTouch notes gets simplified to plain text for Twenty compatibility.

InTouch

Task

maps to

Twenty CRM

Tasks

1:1
Fully supported

InTouch tasks become Twenty Tasks linked to People, Companies, or Opportunities. Every task field including title, body text, dueDate, assignee, and completion status transfers directly into Twenty's corresponding task fields. InTouch completed status maps to Twenty's completedAt timestamp, preserving the completion date from the source system.

InTouch

Deal Stage

maps to

Twenty CRM

Opportunity Stage

1:1
Fully supported

InTouch deal stage names map to Twenty Opportunity StageName pick-list values. We create the stage options in Twenty before import and match each InTouch stage value to its Twenty equivalent. Stage probability percentages transfer as custom fields if InTouch stores them.

InTouch

Contact Owner

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

InTouch owner/user assignments resolve by email match against Twenty Workspace Members. Unmatched owners get flagged before migration — your team either invites them to Twenty or assigns records to a fallback user. No record lands in Twenty without a valid assignee.

InTouch

Activity Log

maps to

Twenty CRM

Tasks / Notes

many:1
Fully supported

InTouch activity logs (calls, emails, meetings) merge into Twenty Tasks or Notes depending on activity type. Call logs with duration and outcome become Tasks with type classification; email logs become Notes with subject preserved. Original activity timestamps transfer as custom datetime fields in Twenty.

InTouch

Custom Field (Matter Template)

maps to

Twenty CRM

Custom Field

1:1
Fully supported

InTouch custom fields defined in matter templates map to Twenty custom fields on People, Companies, or Opportunities. Twenty requires these fields pre-created in Settings → Data Model before import — we deliver a field creation checklist as part of the migration plan.

InTouch

Attachment / File

maps to

Twenty CRM

Files

1:1
Fully supported

InTouch file attachments on contacts, companies, or deals re-upload to Twenty Files. Files attach to the parent record by id after both file and record exist. File size limits follow Twenty's storage configuration — no attachment larger than 25MB transfers without chunking.

InTouch

Tag / Label

maps to

Twenty CRM

Custom Field (Multi-Select)

1:1
Fully supported

InTouch tags and labels on contacts or companies migrate to Twenty as multi-select custom fields. We create a Select field in Twenty with the unique tag values as options, then populate each record's field with applicable tags. Unused tags get flagged for cleanup.

InTouch

InTouch User

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

InTouch users map to Twenty Workspace Members. Email serves as the unique identifier for matching between systems. Before migration begins, all active InTouch users must accept their Twenty invitations so user references resolve correctly during the migration run. User accounts left uninvited will cause owner assignment failures and orphaned records in Twenty.

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.

InTouch logo

InTouch gotchas

High

Custom fields are template-bound and require pre-migration schema review

Medium

Contact export runs asynchronously and can exceed one hour for large rolls

Medium

Legacy flash-era data may have inconsistent field encoding in exports

Low

Matter export is not a self-service feature on all tiers

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 requires custom fields pre-created before CSV import

    Unlike some CRMs that auto-create fields during import, Twenty enforces a strict sequence: fields must exist in Settings → Data Model before any CSV data lands. InTouch custom fields on matter templates need to be enumerated and created in Twenty first — otherwise import skips those columns silently. We deliver a field creation checklist that lists every InTouch custom field, its data type, and the Twenty field type to use so your admin can pre-build the schema before data moves.

  • Import order enforces foreign-key resolution — wrong sequence breaks relationships

    Twenty's CSV import processes records sequentially and enforces referential integrity. Companies must import first because People records carry a companyId lookup, and Opportunities carry both companyId and personId lookups. If People import runs before Companies, every record with a companyId fails silently or lands without a company link. We sequence the migration: Companies → People → Opportunities → Tasks/Notes. If your InTouch export bundles everything into one flat file, we split it into object-specific CSVs respecting the dependency order.

  • Twenty's API rate limits constrain delta-pickup throughput

    Twenty Cloud Pro limits API calls to 100/minute and Organization tier to 200/minute. During delta-pickup windows where we sync in-flight changes from InTouch, this rate cap can extend the reconciliation window for large record sets. We handle this by batching delta records and respecting rate limit headers — X-RateLimit-Remaining and X-RateLimit-Reset — in our import loop. If your migration involves 50,000+ records with a tight delta window, we recommend the Organization tier for its higher throughput.

  • InTouch date formats need normalization before Twenty import

    InTouch exports dates in multiple formats depending on how the field was configured — some in ISO 8601, others in locale-specific formats like MM/DD/YYYY or DD/MM/YYYY. Twenty's CSV import expects ISO 8601 for all datetime fields. If your InTouch data has mixed date formats, the import either fails or silently truncates to incorrect values. We detect date format patterns in your export and normalize them to ISO 8601 before loading, flagging any ambiguous dates (e.g., 01/02/2024) for manual review.

  • Soft-deleted records in Twenty count toward uniqueness checks

    Twenty's documentation states that soft-deleted records — visible under Command Menu → See deleted records — still count toward field uniqueness checks during import. If you previously migrated to Twenty, deleted some records, and are now re-migrating from InTouch, records with duplicate email or domain values to previously deleted records will trigger restoration instead of fresh creation. We check for deleted records in your Twenty workspace before migration and either purge them or map them explicitly to avoid silent restoration.

Migration approach

Six steps for a successful InTouch to Twenty CRM data migration

  1. Audit InTouch data export and enumerate custom fields

    We export all InTouch objects — Contacts, Companies, Deals, Notes, Tasks, Attachments — as CSV files and inventory every active custom field defined in your matter templates. We validate record counts, check for duplicate emails and domains, and identify date format inconsistencies across exports. This audit produces a migration readiness report and a field creation checklist for Twenty's Data Model settings.

  2. Pre-create Twenty schema and invite Workspace Members

    Before any import, your Twenty admin creates the custom fields listed in our checklist under Settings → Data Model. We map InTouch pick-list values to Twenty Select field options so stage names and tags transfer as structured data rather than free text. Simultaneously, all InTouch users receive Twenty invitations and accept them — assignee and owner resolution depends on matching Workspace Members existing in Twenty before import runs.

  3. Sequence and execute object imports with foreign-key ordering

    We load Companies first (the 'one' side of all relationships). Then People with companyId lookups resolved against the Companies table. Then Opportunities with both companyId and personId lookups resolved. Then Tasks and Notes attached to their parent records by id. Each batch runs against Twenty's GraphQL or REST API with rate-limit awareness. We generate a field-level diff after each batch comparing source values to destination values and surface discrepancies before committing.

  4. Run sample migration and field-level diff validation

    A representative slice — typically 200–500 records spanning all object types — migrates first. We generate a side-by-side field-level diff showing every mapped value from InTouch and its corresponding Twenty field. You verify that stage names, owner assignments, company links, and amounts match expectations. Any mapping errors get corrected before the full run commits. This step catches data-type mismatches, missing select options, and orphaned foreign keys before they affect your full dataset.

  5. Execute full migration with delta-pickup window

    The full dataset loads into Twenty with the full run. A delta-pickup window — typically 24–48 hours — captures any InTouch records created or modified during the cutover window. Your team keeps working in InTouch throughout. Audit logs record every operation. If reconciliation fails, one-click rollback reverts Twenty to its pre-migration state and we re-run the full migration with corrected logic.

Platform deep dives

Context on both ends of the pair

InTouch logo

InTouch

Source

Strengths

  • Purpose-built conveyancing workflow templates with Land Registry task automation built in.
  • Fully managed cloud infrastructure with six file replicas across two regions and real-time database replication.
  • Data export capability included at all pricing tiers, not gated behind Enterprise only.
  • Dedicated customer champion and structured onboarding for firms with limited in-house IT capacity.
  • 2FA security enforced for both users and clients accessing the system.

Weaknesses

  • Advanced customisation for dashboards, reports, and workflow branching is limited compared to general-purpose legal platforms.
  • Mobile app is widely reported as under-featured and difficult to use on-site.
  • Native integration ecosystem with third-party accounting, Land Registry, and practice management tools is narrow.
  • Transition from the legacy flash-based interface created workflow disruption for established users that some firms still reference negatively.
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 InTouch 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

    InTouch: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your InTouch to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most InTouch-to-Twenty migrations complete in 48–72 hours for under 50,000 records. The longest planning step is pre-creating custom fields in Twenty's Data Model settings. Larger setups with 500k+ records or custom objects require 5–10 days. We sequence the migration — Companies first, then People, then Opportunities — and run a sample diff before committing the full dataset, so you see field-level results before cutover completes.

Adjacent paths

Related migrations to explore

Ready when you are

Move from InTouch.
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