CRM migration
Field-level mapping, validation, and rollback between Clio and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Clio
Source
Twenty CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Clio and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Clio and Twenty CRM occupy different positions in the legal-tech stack: Clio combines practice management with CRM in a matter-centric model, while Twenty ships as a pure CRM optimized for flexible pipeline management. When firms migrate, the core challenge is reshaping Clio's legal-specific objects — Matters, Bills, Time Entries, and custom fields — into Twenty's standard People, Companies, and Opportunities schema. We extract Clio data via the REST API with pagination and rate-limit throttling, transform billing rates and matter stages into Twenty custom fields, and load via CSV with relationship resolution using email for people and domain for companies. Workflows, automation rules, document management links, and accounting balances do not migrate — those require manual rebuild in Twenty's Settings → Workflows panel. The migration runs in two passes: a sample migration against a representative slice (50–200 records) for field-level validation, then a full cutover with 24–48 hour delta pickup to capture any in-flight changes. Owner resolution happens via email match against Twenty workspace members before records are written.
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 Clio 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.
Clio
Contact
Twenty CRM
People
1:1Clio contacts map directly to Twenty People. The contact's primary Firm association resolves to a Twenty Company via domain match or explicit companyId assignment during import. Email, phone, address, and job title fields migrate as standard Twenty People fields. Original create and update timestamps are preserved as custom datetime fields for audit continuity.
Clio
Firm
Twenty CRM
Company
1:1Clio firms map to Twenty Companies. Firm name becomes the Company displayName. Website, industry, and address fields translate directly. Parent-child firm hierarchies in Clio map to the Company.parentId relationship in Twenty. Multi-office firms generate multiple Company records linked by the parent relationship.
Clio
Matter
Twenty CRM
Opportunity
1:1Clio matters are the primary record type and require the most transformation. The matter becomes a Twenty Opportunity with the matter name as Opportunity.name, the matter's status mapped to a custom picklist field (Matter_Status__c), and the responsible attorney resolved to a Twenty workspace member via email match. Matter type (Practice Area) migrates as a custom select field.
Clio
Matter Stage / Status
Twenty CRM
Custom field on Opportunity
1:1Clio matter statuses (Open, Pending, Closed, Archived) have no direct Twenty equivalent — Twenty Opportunities use a kanban stage model instead. We map each Clio matter status to a corresponding Twenty Opportunity custom field (Matter_Status__c) and, where applicable, to Twenty's built-in stage picklist (New, Qualification, Proposal, Negotiation, Closed Won, Closed Lost). Status value mapping is documented in the migration plan before execution.
Clio
Bill / Invoice
Twenty CRM
Custom field on Opportunity
1:1Clio's billing module — bills, invoices, trust balances, and accounts receivable — has no equivalent in Twenty's CRM model. We extract the outstanding balance and last bill date as custom Number and Date fields on the Opportunity record (Outstanding_Balance__c, Last_Bill_Date__c). Full invoice history and trust accounting records must be maintained in a dedicated accounting tool post-migration.
Clio
Time Entry
Twenty CRM
Task
1:1Clio time entries map to Twenty Tasks with the time entry's description as Task.title, the duration in hours stored as a custom number field (Hours__c), and the billing rate stored as Billable_Rate__c. The Task is linked to the corresponding Opportunity (the Matter). Entries are created as completed tasks in Twenty with the original entry date preserved as the Task due date.
Clio
Activity (call, email, note)
Twenty CRM
Note / Task
1:1Clio activities — calls, emails, and notes — map to Twenty Notes attached to the corresponding People or Opportunity record. Activity type is preserved in a custom select field (Activity_Type__c) on the Note. Original activity timestamps are retained; the activity author resolves to a Twenty workspace member by email match.
Clio
Document / File
Twenty CRM
Note attachment / external reference
1:1Clio documents and file attachments cannot be imported into Twenty natively — Twenty does not include a document management module. We preserve the document name, original URL path in Clio, and a link reference as a custom field on the related Opportunity (Document_Reference__c). Firms must re-upload documents to their preferred storage and update links post-migration.
Clio
Custom Field (Matter)
Twenty CRM
Custom field on Opportunity
1:1Clio custom fields on Matters require pre-creation in Twenty's Settings → Data Model before import runs. We extract the full custom field schema from Clio's API (field name, type, picklist values) and generate the corresponding Twenty field definition. Multi-select picklists in Clio become multi-select fields in Twenty; date fields remain date fields; text fields map directly.
Clio
User / Attorney
Twenty CRM
Workspace Member
1:1Clio users and attorneys resolve to Twenty workspace members by email address. Before migration, all active Clio users must have Twenty workspace invitations sent and accepted so their email appears in the Members list. Unmatched users are flagged and assigned to a fallback Twenty user; all original user assignments are preserved in a Source_Owner__c custom field for audit purposes.
Clio
Billing Rate
Twenty CRM
Custom Number field on Opportunity
1:1Clio's rate hierarchy — custom rate, matter rate, client rate, user default rate — is a legal billing construct with no Twenty equivalent. We calculate the effective rate at time of each time entry and store it as Billable_Rate__c (a custom currency field) on the related Opportunity. Rate tier information is preserved as additional custom fields (Rate_Type__c, Rate_Source__c) for billing reconstruction.
Clio
Intake / Lead Source
Twenty CRM
Custom field on People
1:1Clio intake sources and lead origin information attached to contacts or matters migrates as a custom select field (Lead_Source__c) on the Twenty People record. Where Clio tracks referral source as a matter attribute, the field is duplicated on both the related People and Opportunity records for full attribution visibility.
| Clio | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Firm | Company1:1 | Fully supported | |
| Matter | Opportunity1:1 | Fully supported | |
| Matter Stage / Status | Custom field on Opportunity1:1 | Fully supported | |
| Bill / Invoice | Custom field on Opportunity1:1 | Fully supported | |
| Time Entry | Task1:1 | Fully supported | |
| Activity (call, email, note) | Note / Task1:1 | Fully supported | |
| Document / File | Note attachment / external reference1:1 | Fully supported | |
| Custom Field (Matter) | Custom field on Opportunity1:1 | Fully supported | |
| User / Attorney | Workspace Member1:1 | Fully supported | |
| Billing Rate | Custom Number field on Opportunity1:1 | Fully supported | |
| Intake / Lead Source | Custom 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.
Clio gotchas
API rate limit of 50 req/min per OAuth application
Trust accounting data requires separate ledger treatment
Rate hierarchy complexity causes billing mismatches
Client portal does not transfer between platforms
Flat-rate and contingency matter billing requires explicit mapping
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 Clio data volume and custom field schema
We connect to Clio's REST API using OAuth credentials with read-only scope and enumerate all active objects: Contacts, Firms, Matters, Time Entries, Activities, and custom fields. We record field types, picklist values, and relationship IDs. We also run a record-count query per object and calculate extraction time based on Clio's 50 req/min rate limit. This audit produces a Data Volume Report and a Custom Field Manifest — the latter is used to pre-create fields in Twenty before import. We flag any Clio records without email addresses, as those cannot auto-resolve to Twenty workspace members.
Prepare Twenty workspace and invite team members
Before any data arrives in Twenty, we create the custom fields identified in the Clio audit (Settings → Data Model), configure the opportunity pipeline stages to reflect the firm's practice areas, and send workspace invitations to all active Clio users. Twenty requires users to exist before owner assignment during import — if a user is not in the Members list, their records cannot be linked to a valid assigneeId. We validate the Members list against Clio's user roster by email and flag any users not yet invited. A Twenty admin completes field creation and user invitations during this window.
Run sample migration with field-level diff
We extract a representative slice of 100–500 records from Clio — covering at least 5 matters across different practice areas, 10 contacts, 50 time entries, and 20 activities — and import into Twenty. We generate a field-level diff comparing source values against destination values for every mapped field. This diff is reviewed by the firm's admin to verify that billing rate transformations, matter status mappings, and contact-to-company associations are correct. The sample migration also validates that custom field values in Clio's picklists are fully represented in Twenty's custom field options; missing values are added to the Data Model before the full run.
Execute full cutover with delta-pickup window
With the sample migration validated, we run the full extraction from Clio with exponential-backoff throttling against the API rate limit. Data loads into Twenty via CSV import in dependency order: Companies first (the one side of relationships), then People (with companyId linking), then Opportunities (with assigneeId and companyId), then Tasks and Notes. After the initial load completes, we open a 24–48 hour delta-pickup window during which any records created or modified in Clio are re-extracted and upserted into Twenty. All operations are logged to an audit trail, and a one-click rollback script is available if the reconciliation report shows unexpected record counts or orphaned relationships.
Deliver reconciliation report and rebuild specifications
After the delta-pickup window closes, we generate a reconciliation report comparing Clio record counts against Twenty record counts per object, and flag any records that failed to import with error codes. We deliver a Workflow Rebuild Specification documenting every Clio automation that requires manual recreation in Twenty's workflow builder, plus a Document Migration Guide explaining how to re-upload Clio documents to a preferred storage system and update the Document_Reference__c links on each Opportunity. The final handoff includes a rollback snapshot of the pre-migration Twenty state.
Platform deep dives
Clio
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 Clio 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
Clio: 50 requests per minute per OAuth application, shared across all users of the application.
Data volume sensitivity
Clio 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 Clio to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Clio 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 Clio
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.