CRM migration
Field-level mapping, validation, and rollback between InTouch and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
InTouch
Source
Twenty CRM
Destination
Compatibility
11 of 12
objects map 1:1 between InTouch and Twenty CRM.
Complexity
BStandard
Timeline
24–72 hours
Overview
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.
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 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
Twenty CRM
People
1:1InTouch 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
Twenty CRM
Companies
1:1InTouch 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
Twenty CRM
Opportunities
1:1InTouch 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
Twenty CRM
Notes
1:1InTouch 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
Twenty CRM
Tasks
1:1InTouch 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
Twenty CRM
Opportunity Stage
1:1InTouch 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
Twenty CRM
WorkspaceMember
1:1InTouch 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
Twenty CRM
Tasks / Notes
many:1InTouch 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)
Twenty CRM
Custom Field
1:1InTouch 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
Twenty CRM
Files
1:1InTouch 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
Twenty CRM
Custom Field (Multi-Select)
1:1InTouch 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
Twenty CRM
WorkspaceMember
1:1InTouch 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.
| InTouch | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Company | Companies1:1 | Fully supported | |
| Deal | Opportunities1:1 | Fully supported | |
| Note | Notes1:1 | Fully supported | |
| Task | Tasks1:1 | Fully supported | |
| Deal Stage | Opportunity Stage1:1 | Fully supported | |
| Contact Owner | WorkspaceMember1:1 | Fully supported | |
| Activity Log | Tasks / Notesmany:1 | Fully supported | |
| Custom Field (Matter Template) | Custom Field1:1 | Fully supported | |
| Attachment / File | Files1:1 | Fully supported | |
| Tag / Label | Custom Field (Multi-Select)1:1 | Fully supported | |
| InTouch User | WorkspaceMember1:1 | 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.
InTouch gotchas
Custom fields are template-bound and require pre-migration schema review
Contact export runs asynchronously and can exceed one hour for large rolls
Legacy flash-era data may have inconsistent field encoding in exports
Matter export is not a self-service feature on all tiers
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
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.
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.
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.
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.
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
InTouch
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 InTouch and Twenty CRM.
Object compatibility
2 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
InTouch: Not publicly documented.
Data volume sensitivity
InTouch 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 InTouch to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave InTouch
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.