CRM migration

Migrate from Link app to Twenty CRM

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 logo

Link app

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between Link app and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Link app logo

Link app

What's pushing teams away

  • Firms outgrow the flat data model as they add practice areas, billing, or matter-specific custom fields that The Link App does not support.
  • Integration gaps with accounting software, document management systems, or court e-filing tools create duplicate entry and workflow friction.
  • Pricing is per-lawyer or per-seat and becomes expensive as the firm grows, especially if administrative staff also need access.
  • The platform is UK-focused with limited support for non-UK jurisdictions, making it unsuitable for international or multi-office firms.
  • When a firm adopts a full practice management system like Clio or LEAP, The Link App becomes redundant and the firm consolidates onto one platform.

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

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

maps to

Twenty CRM

People

1:1
Fully supported

Link 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

maps to

Twenty CRM

Companies

1:1
Fully supported

When 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

maps to

Twenty CRM

Note

1:1
Fully supported

Link 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

maps to

Twenty CRM

Custom Text Field on Note

1:1
Fully supported

Link 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

maps to

Twenty CRM

Task

1:1
Fully supported

Link 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

maps to

Twenty CRM

Custom Field on People

1:1
Fully supported

Link 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

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Link 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

maps to

Twenty CRM

No Equivalent

1:1
Fully supported

Link 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

maps to

Twenty CRM

Custom Fields on People

1:1
Fully supported

Any 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

maps to

Twenty CRM

Custom Activity Field on People

1:1
Fully supported

Link 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.

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.

Link app logo

Link app gotchas

High

No public API for automated bulk export

Medium

Document binaries may require separate file-level extraction

Medium

Case feed chronology does not map directly to standard CRM activity models

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

  • Message threads flatten into individual Notes with no threaded conversation view

    Link App organizes client communication as threaded conversations — each thread shows the back-and-forth in chronological order. Twenty CRM's Notes object is a flat list of entries attached to a record. When we migrate, each individual message becomes a separate Note with the sender role prepended to the body. The chronological thread view that Link App provides does not exist in Twenty CRM, so the visual grouping of a conversation is lost. We preserve message timestamps in a custom field, and the original thread structure is recoverable by sorting Notes by Message_Timestamp__c, but Twenty's native UI will not display them as threaded. Plan for rebuilding communication context in Twenty's activity sidebar or using Twenty's Workflow builder to surface related Notes.

  • Document attachments do not migrate to Twenty CRM — only file references survive

    Link App provides a secure document vault with per-client file uploads. Twenty CRM has no native document management system — it stores file attachments at the record level via its storage service, but there is no equivalent vault concept. We store each document's original filename and URL as a custom text field Document_Reference__c on the corresponding Note. If your documents are hosted on Link App's servers, those links may become invalid after you close the Link App account. Before migration, download your document archive from Link App and re-upload to a storage service (S3, Google Drive, Dropbox) whose URLs you then record in Twenty. We can automate the URL remapping as part of the migration if you have a destination storage plan in place.

  • Link App has no Opportunity or deal object — pipeline tracking must be designed from scratch

    Link App does not have a pipeline or deal management concept — it tracks client communication and document status. Twenty CRM's Opportunities object is where pipeline management lives. If you want to track client matters as Opportunities in Twenty, you must decide which fields from Link App map to Opportunity fields (name, amount, stage, close date) and which Link App concepts (matter status, billing tier) become custom fields. We surface this decision in the pre-migration schema plan. Matters that never had a deal value in Link App will need placeholder amounts or be set to zero — Twenty requires a numeric amount field. Stage mapping from Link App's matter status labels to Twenty Opportunity Stage values must be defined per case type.

  • Link App API access is export-only — the migration uses CSV extraction from the Link App admin panel

    Link App's API is not publicly documented for third-party read access in the way Salesforce or HubSpot provide. The migration path uses the data export function available in Link App's admin panel, which generates CSV exports of client profiles, message threads, and appointments. The export must be requested by an account admin, and large thread histories may be split across multiple export files. We work with your Link App admin to extract all exportable data before mapping begins. If your Link App plan limits export frequency or record counts, coordinate with your account manager to unlock a full export before migration kickoff.

  • Twenty CRM has no native activity log at the free self-hosted tier

    Link App tracks every client interaction — logins, document views, message opens — as a detailed activity log. Twenty CRM's activity tracking at the free self-hosted tier does not include a granular activity log comparable to Link App's. We aggregate interaction counts into a custom integer field Interaction_Count__c on the People record, but individual event records are not migrated. If detailed interaction history is business-critical, consider using Twenty's Workflow builder to log events via its webhook and API when you rebuild client-facing processes in Twenty. Alternatively, retain a read-only archive of the Link App export for historical audit purposes.

Migration approach

Six steps for a successful Link app to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

Link app logo

Link app

Source

Strengths

  • Purpose-built for lawyer-client communication with a clean, chronological case feed.
  • Web and mobile app gives clients a dedicated portal without needing to check email.
  • Secure document sharing replaces ad-hoc file transfer methods with an auditable record.
  • UK-hosted infrastructure appeals to firms with UK data sovereignty requirements.
  • Simple onboarding for firms that only need client communication, not full practice management.

Weaknesses

  • No publicly documented API or bulk data export mechanism, complicating self-service migration.
  • Flat data model does not support custom fields, matter types, or structured billing records.
  • Limited integration ecosystem compared to established legal practice management platforms.
  • UK-centric positioning limits appeal and functionality for non-UK legal practices.
  • Firms needing billing, time tracking, or court e-filing must use the platform alongside separate tools.
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. 1 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 Link app and Twenty CRM.

  • Object compatibility

    B

    1 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

    Link app: Not publicly documented..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Most Link App to Twenty CRM migrations complete within 48–72 hours of clock time for datasets under 25,000 records. The primary time driver is the admin export from Link App and the Notes creation volume (each message thread message becomes a separate Note record). Setups with more than 100,000 message records or custom object schema design extend to 5–10 days. We deliver the schema checklist during the planning phase so Twenty's workspace is ready before data starts loading.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Link app.
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