CRM migration
Field-level mapping, validation, and rollback between Link app and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Link app
Source
Twenty CRM
Destination
Compatibility
10 of 10
objects map 1:1 between Link app and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Link App is a secure client communication platform built for law firms — it handles messaging, document sharing, case updates, and appointment scheduling between attorneys and clients. It does not have a traditional CRM object model. Twenty CRM is a full-featured open-source CRM with People, Companies, Opportunities, Tasks, and Notes objects plus custom objects. The migration from Link App to Twenty CRM is therefore not a field-to-field translation but a schema transformation: we extract Link App's client records, map them to Twenty People objects, convert message threads to Notes attached to those People records, preserve document references as custom text fields or URLs, and surface interaction timestamps as a custom datetime field for reporting continuity. Link App's case-based organization maps to a combination of People-Company relationships and a custom Case object in Twenty if you need to preserve case-level grouping. Owner resolution happens by email match against Twenty Workspace Members. FlitStack runs the migration via Twenty's REST API with batch upsert operations, preserving original create timestamps as custom fields since Twenty's native CreatedDate reflects the migration import date.
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 Link app 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.
Link app
Client Profile
Twenty CRM
People
1:1Link App client records (name, email, phone, firm name) map directly to Twenty CRM People. The primary email address becomes the People email field, serving as the unique identifier for duplicate detection during import. If a client has no email on file, we use a placeholder value and flag the record for manual review to ensure data quality.
Link app
Client Organization
Twenty CRM
Companies
1:1When Link App stores a client affiliation or company name alongside the individual, we create a Twenty CRM Company record and link the People record via the companyId relation. The import sequence is Companies first, then People, per Twenty's import order requirement.
Link app
Message Thread
Twenty CRM
Note
1:1Link App message threads are converted to individual Note records on the corresponding People record in Twenty CRM. Each message becomes one Note with the sender role noted in the Note body. Original message timestamps are preserved in a custom datetime field Message_Timestamp__c.
Link app
Document Reference
Twenty CRM
Custom Text Field on Note
1:1Link App documents are not re-uploaded to Twenty CRM — Twenty has no native document vault comparable to Link App's secure file storage. Instead, we store the original document URL or filename as a custom text field Document_Reference__c on the Note record for traceability. Your team should download the document archive before canceling Link App and re-upload to your preferred storage service.
Link app
Appointment / Calendar Event
Twenty CRM
Task
1:1Link App appointments become Twenty CRM Tasks with the task body describing the appointment type, date, time, and participants in a structured format. Tasks are linked to the corresponding People record via the standard Twenty CRM relationship. Completed or cancelled status maps from the appointment outcome field in Link App, while scheduled appointments appear as open tasks ready for your team to manage.
Link app
Firm / Firm Settings
Twenty CRM
Custom Field on People
1:1Link App firm branding and practice-area tags migrate as a custom pick-list field Firm_Name__c on the People object in Twenty CRM. We use the firm name as the pick-list value to preserve the source of each client relationship. Your admin can configure this field type, add additional practice-area values, or convert it to a text field in Twenty's data model settings if needed for your reporting workflow.
Link app
User / Attorney Account
Twenty CRM
WorkspaceMember
1:1Link App attorney and staff accounts are resolved against Twenty CRM Workspace Members by matching the email address field. This email-based lookup ensures that the owner relationship is established correctly during import. Unmatched attorneys are flagged with a custom Source_Attorney__c field on the related People records for manual assignment by your Twenty CRM admin after migration completes.
Link app
Client Portal Access Settings
Twenty CRM
No Equivalent
1:1Link App portal access permissions, client invite status, and communication preferences have no direct equivalent mapping in Twenty CRM's object model. These Link App-specific settings are preserved as custom text fields Client_Portal_Status__c and Client_Invite_Status__c on the People record for reference and audit purposes. Your team can review these fields after migration to reassign portal access manually in Twenty if needed.
Link app
Custom Properties
Twenty CRM
Custom Fields on People
1:1Any Link App custom fields on client profiles (billing tier, referral source, matter type) migrate as Twenty CRM custom fields. Field type mapping: text strings to TEXT, dates to DATE, numeric values to NUMBER, and multi-select values to SELECT with value mapping.
Link app
Interaction / Activity Log
Twenty CRM
Custom Activity Field on People
1:1Link App interaction logs (login events, document views, message opens) are aggregated into a custom integer field Interaction_Count__c on the People record, preserving the total count for reporting. Individual events are not individually migrated as Twenty has no activity log object at the free tier.
| Link app | Twenty CRM | Compatibility | |
|---|---|---|---|
| Client Profile | People1:1 | Fully supported | |
| Client Organization | Companies1:1 | Fully supported | |
| Message Thread | Note1:1 | Fully supported | |
| Document Reference | Custom Text Field on Note1:1 | Fully supported | |
| Appointment / Calendar Event | Task1:1 | Fully supported | |
| Firm / Firm Settings | Custom Field on People1:1 | Fully supported | |
| User / Attorney Account | WorkspaceMember1:1 | Fully supported | |
| Client Portal Access Settings | No Equivalent1:1 | Fully supported | |
| Custom Properties | Custom Fields on People1:1 | Fully supported | |
| Interaction / Activity Log | Custom Activity Field on People1: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.
Link app gotchas
No public API for automated bulk export
Document binaries may require separate file-level extraction
Case feed chronology does not map directly to standard CRM activity models
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
Extract Link App data via admin export
FlitStack coordinates with your Link App account admin to run a full data export from the admin panel. We extract client profiles, message threads, document references, appointments, and user accounts as CSV files. If the export is split across multiple files due to volume limits, we request a second export pass to capture all records. We verify record counts against your stated totals before mapping begins. This step also confirms whether any custom fields exist on your Link App client profiles.
Design Twenty CRM schema for your migrated data
Before importing, your admin (or our team) creates the custom fields we need in Twenty CRM: Original_Create_Date__c, Source_Link_App_ID__c, Message_Timestamp__c, Document_Reference__c, Client_Portal_Status__c, Billing_Tier__c, Referral_Source__c, Interaction_Count__c, and any custom fields identified in the export audit. If you want client matters tracked as Opportunities, we design the Opportunity object schema with stage pick-list values mapped from Link App matter status labels. We deliver a schema setup checklist so the Twenty workspace is ready before any data loads.
Migrate Companies, then People, then Notes and Tasks
We follow Twenty's required import order: Companies first (as the one side of relationships), then People (with companyId links resolved), then Notes and Tasks (attached to People records). Each batch is loaded via Twenty's REST API in 100-record chunks to stay within rate limits. Message threads are split into individual Note records during this step, with sender role and original timestamp fields populated. Owner resolution by email match against Twenty Workspace Members happens in parallel — unmatched attorneys get a Source_Attorney__c flag for your admin to assign manually after migration.
Run a sample migration with field-level verification
A representative sample (typically 100-500 records across 10-20 clients, including clients with multiple message threads and appointments) migrates first. We generate a field-level diff showing source CSV values versus the resulting Twenty records so you can verify name concatenation, email matching, company linking, note body formatting, and timestamp preservation. You sign off on the sample before the full run commits. This step also surfaces any value-mapping gaps in pick-list fields like Billing_Tier__c.
Full migration with delta pickup and rollback plan
The full dataset loads into Twenty CRM. A delta-pickup window (24-48 hours) captures any new records created in Link App during the cutover — your team keeps working in Link App until go-live. All operations are logged in an audit file. If reconciliation fails, one-click rollback reverts the Twenty workspace to its pre-migration state. After rollback verification, we confirm the final record counts with you and close the migration.
Platform deep dives
Link app
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Link app and Twenty CRM.
Object compatibility
1 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
Link app: Not publicly documented..
Data volume sensitivity
Link app 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 Link app to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Link app 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 Link app
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.