CRM migration
Field-level mapping, validation, and rollback between Copper and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Copper
Source
Twenty CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Copper and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Copper and Twenty CRM share a minimalist, relationship-centric data model that makes the core object mapping straightforward: People map to Persons, Companies to Companies, and Opportunities to Opportunities. The three migration gaps that require deliberate design are Copper's attachment storage in Google Drive (which must be re-linked in Twenty's file system), the absence of an automated incremental numbering system for Opportunities in Twenty (documented in the Twenty v2.0 changelog), and the manual nature of Lead-to-Opportunity conversion in Twenty, which differs from Copper's more fluid Lead-to-Contact model. We handle the API extraction from Copper at the 180 requests-per-minute ceiling with paginated reads, sequence the import into Twenty's REST API in dependency order, and flag any record counts that exceed Twenty Cloud Pro's storage ceiling. Workflows, bulk email sequences, and Zapier integrations do not migrate; we deliver a written inventory for your admin to rebuild in Twenty's automation layer or through its supported integrations.
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 Copper 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.
Copper
People
Twenty CRM
Person
1:1Copper People records map to Twenty Persons. Name, email, phone, address, and social links transfer as standard fields. Copper's contact photo URL migrates to Twenty's avatar field if the URL is publicly accessible. Any Person with a status of Lead in Copper gets a custom tag migrated rather than a separate record type, since Twenty Persons serve as both lead and contact records.
Copper
Company
Twenty CRM
Company
1:1Copper Companies map directly to Twenty Companies with domain, annual revenue, employee count, and industry preserved. The Copper People-to-Company linkage migrates as a Person-Company relationship in Twenty. We resolve the Company record before importing related People to satisfy the lookup dependency.
Copper
Opportunity
Twenty CRM
Opportunity
1:1Copper Opportunities map to Twenty Opportunities with name, amount, stage, expected close date, and probability. Pipeline Stage maps to Twenty's pipeline stage. Note: Twenty v2.0 has no automated incremental numbering system for Opportunity IDs, per the Twenty v2.0 changelog discussion on Reddit. We flag this gap during scoping and advise whether to assign sequential IDs before import or accept Twenty's UUID-based identifiers. Closed-Won and Closed-Lost outcomes from Copper migrate as stage values.
Copper
Lead
Twenty CRM
Person (tagged as lead)
1:manyCopper's separate Lead object does not have a direct Twenty equivalent. Twenty Persons serve as both leads and contacts. We migrate Copper Leads as Twenty Persons with a custom tag (e.g., source=copper_lead) and preserve the original Lead_Status as a custom field (copper_lead_status__c). The GitHub issue #10422 documents that Twenty's Lead-to-Opportunity conversion is manual rather than built-in, so we advise customers to plan the qualification workflow in Twenty post-migration.
Copper
Pipeline
Twenty CRM
Pipeline
lossyCopper Pipelines (available on Basic and above) map to Twenty Pipelines. Stage names, stage order, and probability percentages transfer. If Copper has multiple pipelines, each maps to a separate Twenty Pipeline. We configure pipeline visibility and stage labels in Twenty before importing Opportunities.
Copper
Project
Twenty CRM
Workspace
1:manyCopper Projects are a lightweight project management object not natively replicated in Twenty's standard workspace. We migrate Projects as Twenty Workspaces and their associated Tasks as Twenty Tasks linked to the workspace. Customers who rely heavily on Copper Projects as a project management layer rather than a CRM feature should plan a parallel migration to a dedicated project tool or document the project-to-task mapping during scoping.
Copper
Task
Twenty CRM
Task
1:1Copper Tasks map to Twenty Tasks with title, due date, assignee (resolved via User email match), status, and related record link preserved. Copper's task priority maps to Twenty's priority field. Tasks with no assignee are migrated with an unassigned flag for the customer to resolve.
Copper
Activity (calls, emails, meetings, notes)
Twenty CRM
Activity
1:1Copper Activities (emails, calls, meetings, notes) linked to People, Companies, or Opportunities migrate to Twenty Activity records. Activity type, date, duration, body, and related record link transfer. We resolve the parent Person, Company, or Opportunity ID at migration time to maintain the activity timeline linkage. Note that if activities reference Google Drive-attached files, those attachments must be re-linked after the file migration step.
Copper
Custom Fields
Twenty CRM
Custom Fields
lossyCopper Custom Fields on People, Companies, Opportunities, Leads, Projects, and Tasks are enumerated via the Copper Custom Field Definitions API before migration. We create equivalent custom fields in Twenty (field type matching where possible: text to text, number to number, date to date, checkbox to boolean). Multi-select fields map to Twenty multi-select picklists. Custom field ordering and section placement in Copper are noted for manual recreation in Twenty's field layout editor.
Copper
Tags
Twenty CRM
Tags
lossyCopper Tags are flat labels applied to People, Companies, and Opportunities. We migrate all tags as-is and create them in Twenty's tag system. Tags used for segmentation or pipeline classification are noted separately for the customer to assess whether Twenty's pipeline stage or custom field better serves the original use case.
Copper
Attachment metadata
Twenty CRM
Attachment
1:1Copper attachments live in Google Drive, not inside Copper's own storage. We extract attachment metadata (filename, URL, associated record) during scoping, then coordinate with the customer to migrate the underlying Google Drive files. Files can be re-uploaded to Twenty directly or re-linked via shared URLs if the customer maintains a Google Drive workspace. Without this step, attachment references in Twenty become broken links.
Copper
Owner
Twenty CRM
User
1:1Copper Owners map to Twenty Users resolved by email address. We extract every distinct Owner referenced on People, Company, Opportunity, Task, and Activity records. Any Copper Owner without a matching Twenty User is held in a reconciliation queue for the customer's admin to provision the account before record import resumes, since OwnerId references are required on most record inserts.
| Copper | Twenty CRM | Compatibility | |
|---|---|---|---|
| People | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Lead | Person (tagged as lead)1:many | Fully supported | |
| Pipeline | Pipelinelossy | Fully supported | |
| Project | Workspace1:many | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Activity (calls, emails, meetings, notes) | Activity1:1 | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| Tags | Tagslossy | Mapping required | |
| Attachment metadata | Attachment1:1 | Fully supported | |
| Owner | User1: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.
Copper gotchas
Contact limit enforcement varies by tier and can block imports
API rate limit of 180 requests per minute requires throttled extraction
Workflows, bulk email, and custom reports are tier-gated features
Attachment files live in Google Drive, not Copper's own storage
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
Discovery and scoping
We audit Copper across all active objects: People, Companies, Opportunities, Leads, Projects, Tasks, Activities, Custom Field Definitions, Tags, and attachment metadata. We count records by object, identify any contact counts approaching the destination plan's ceiling, and document the pipeline and stage structure. We also enumerate active Copper workflows, Zapier integrations, and bulk email sequences during discovery so that their rebuild scope is clear before migration begins. The discovery output is a written migration scope, a data volume summary, and a Twenty edition recommendation (Cloud Pro or Organization) based on SSO and row-level security needs.
Twenty workspace preparation
We create the Twenty workspace schema before any data import. This includes provisioning custom fields (mapped from Copper's Custom Field Definitions API), configuring pipelines and stages (with probability percentages from Copper), creating tags (from Copper's tag list), and setting up user accounts (matched by email to Copper Owners). If the customer runs a self-hosted Twenty instance, we coordinate with their infrastructure team to confirm the database connection and storage capacity before the migration begins.
Attachment preparation and Google Drive file migration
We extract attachment metadata from Copper (filename, Google Drive URL, associated record ID) and prepare the Google Drive file migration. The customer's team or infrastructure admin grants read access to the relevant Drive folders via a service account. We re-upload files to Twenty or configure re-link references, then verify attachment accessibility before closing the attachment phase. This step runs in parallel with record migration planning to avoid post-import surprises.
Sandbox migration and reconciliation
We run a full migration into Twenty's sandbox environment (or a staging copy for self-hosted deployments) using production-like record volume. The customer's lead admin reviews 25-50 records per object against the Copper source, checks that People-to-Company links are intact, that activity timelines are correctly sequenced, and that custom field values are readable. We correct any mapping errors before production migration begins. This step typically takes one to three days depending on record volume.
Production migration in dependency order
We run production migration in record dependency order: Companies (first, as they have no dependencies), People (with CompanyId resolved), Leads (as Persons with copper_lead_status tag), Opportunities (with pipeline and stage resolved, and OwnerId matched to User), Tasks (with OwnerId and related record resolved), Activities (emails, calls, meetings, notes via paginated API calls), then Custom Fields and Tags. Each phase emits a row-count reconciliation report before the next phase begins. Attachment re-linking runs after record migration is complete. Owner reconciliation (matching Copper Owners to Twenty Users by email) happens at the start of the People phase.
Cutover, validation, and automation handoff
We freeze Copper writes during cutover, run a final delta migration of any records modified during the migration window, then set Twenty as the system of record. We validate record counts, spot-check linked records (People-Company, Opportunity-Company, Activities-Person), and confirm attachment links are accessible. We deliver a written inventory of Copper workflows, Zapier integrations, and bulk email sequences for the customer's admin to rebuild in Twenty or through its supported integration layer. We support a five-business-day hypercare window for reconciliation issues. We do not rebuild Copper workflows or Zapier automations as part of the migration scope.
Platform deep dives
Copper
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 4 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 Copper and Twenty CRM.
Object compatibility
4 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
Copper: 180 requests per minute on a rolling window, returning HTTP 429 when exceeded. Bulk endpoints have a separate ceiling of 3 requests per second..
Data volume sensitivity
Copper exposes a bulk API — large-volume migrations stream efficiently.
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 Copper to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Copper 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 Copper
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.