CRM migration
Field-level mapping, validation, and rollback between Close and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Close
Source
Twenty CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Close and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Close to Twenty CRM is a structural migration that addresses Close's narrowing feature boundary against an open-source platform with a flexible data model. Close uses a unified Lead-Contact-Opportunity model with a strong calling stack; Twenty maps those records to its People-Company-Opportunity schema and adds native Custom Object support without a tier gate. We preserve the full activity timeline by requesting Close's JSON export rather than CSV (CSV silently drops all call, email, SMS, and task history), resolve owner lookups by email, and sequence Custom Activities as a three-phase pipeline: type creation, type-scoped Custom Field creation, then activity record import. Workflows, Smart Views, and calling features do not migrate; we deliver a written inventory of every active Close Workflow for the customer's admin to rebuild in Twenty.
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 Close 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.
Close
Lead
Twenty CRM
Person
1:1Close Leads map to Twenty Person records. The Lead status label, owner, and all standard fields (name, email, phone, address) migrate directly. We resolve the owner by email match against Twenty's Members. If the customer has deduplication rules in Twenty they want to enforce, we flag the dedupe key strategy during scoping; Close Lead IDs are preserved in a custom field close_lead_id__c for audit.
Close
Contact
Twenty CRM
Person
1:1Close Contacts map to Twenty Persons. Contacts in Close carry an organisation field linking to a Lead or Company; we resolve that reference during import. Like Leads, the owner maps by email to a Twenty Member. We preserve any contact-specific Custom Fields attached at the Contact level. close_contact_id__c is stored for cross-reference.
Close
Company
Twenty CRM
Company
1:1Close does not have a standalone Company object; organisation data lives as the Organisation field on a Lead or Contact. If the customer uses Close's Organisation field as a normalised company record, we extract unique Organisation values, deduplicate by name and domain, and create Twenty Company records first so that the Person-to-Company lookup is satisfied at import time.
Close
Opportunity
Twenty CRM
Opportunity
1:1Close Opportunities map directly to Twenty Opportunities. Pipeline stage, deal value, expected close date, and owner migrate with the same field types. We create the Twenty Opportunity before importing records so that the pipeline-stage reference is valid. Custom fields on Opportunities carry over as Twenty Custom Fields on the Opportunity object.
Close
Pipeline
Twenty CRM
Opportunity (pipeline column)
lossyClose Pipelines are containers for Opportunity stages. We configure the Twenty Opportunity pipeline column and stage values in Settings before migration, matching Close stage names and ordering. Stage probabilities from Close migrate as Twenty stage-level weights if the customer uses them for forecasting.
Close
Activity: Call
Twenty CRM
Task / Timeline Event
1:1Close call logs stored as activity records in the JSON export map to Twenty Task records with the body carrying call duration, disposition, and outcome. We set ActivityDate to the original Close timestamp and link the Task to the corresponding Person or Opportunity by resolving the activity's associated Lead or Contact reference. Call recording audio files are downloaded from Close and re-uploaded as attachments on the matching Twenty Task.
Close
Activity: Email
Twenty CRM
Task / Timeline Event
1:1Close email activity records migrate as Twenty Task records with the email body preserved in the Task body field and the subject carried as Task title. Direction (sent/received) is encoded as a custom field. We link each email Task to the correct Person by resolving the Close activity's associated Contact or Lead reference.
Close
Activity: SMS
Twenty CRM
Task / Timeline Event
1:1Close SMS activity records migrate as Twenty Task records with the SMS body in the Task body and direction stored as a custom field. We resolve the associated Contact or Lead to the correct Person in Twenty and link the Task. Threading context is preserved by setting the parent reference to the same Person.
Close
Activity: Task
Twenty CRM
Task
1:1Close task activities (assigned tasks, to-dos) map to Twenty Tasks with Status, Priority, due date, and assignee preserved. Assignee resolves by email match to a Twenty Member. Completed status and completion timestamp carry over from Close's completed field.
Close
Custom Activity
Twenty CRM
Custom Object / Activity
lossyClose Custom Activities require a three-phase migration sequence. First, we create the matching Custom Object in Twenty via Settings → Data Model with the same name and field structure. Second, we create all type-scoped Custom Fields on the Twenty Custom Object before any records are imported. Third, we import the Custom Activity instances with their field values. Skipping phase two results in validation errors because Twenty's CSV import creates records only; fields must pre-exist per Twenty's documentation (docs.twenty.com/user-guide/data-model/how-tos/create-custom-fields).
Close
Custom Field
Twenty CRM
Custom Field
lossyCustom Fields on Close Leads, Contacts, and Opportunities map to Twenty Custom Fields on the corresponding object. We read the Close field definition (type, choices, required flag, default value) via the API and create matching Twenty fields with the same type and option labels. Multi-select options in Close map to Twenty multi-select fields. Fields must be created in Twenty before CSV import begins; we flag this as a required pre-import step in the scoping document.
Close
Attachment
Twenty CRM
Attachment / File
1:1Close attachments on Leads and Contacts are retrieved via the Close API as binary files and re-uploaded to the corresponding Twenty Person record as attached Files. We preserve the original filename, MIME type, and upload timestamp. If a referenced attachment is missing (deleted in Close before export), we flag it in the reconciliation report.
| Close | Twenty CRM | Compatibility | |
|---|---|---|---|
| Lead | Person1:1 | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Pipeline | Opportunity (pipeline column)lossy | Fully supported | |
| Activity: Call | Task / Timeline Event1:1 | Fully supported | |
| Activity: Email | Task / Timeline Event1:1 | Fully supported | |
| Activity: SMS | Task / Timeline Event1:1 | Fully supported | |
| Activity: Task | Task1:1 | Fully supported | |
| Custom Activity | Custom Object / Activitylossy | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Attachment | Attachment / File1: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.
Close gotchas
CSV exports drop all activity history silently
Smart Views can only export from the Leads tab
Workflows gatekept behind Growth and Scale plans
Custom Activities require strict dependency ordering
Rate limits enforced per endpoint group
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
Pre-migration data audit and JSON export verification
We audit the Close account via API: record counts for Leads, Contacts, Opportunities, Custom Activities, and attachment volume. We verify that JSON exports are available for all activity-bearing record types (calls, emails, SMS, tasks) and confirm the Custom Activity Type list. We flag any customer who has been using CSV exports as their primary export method and request re-export via JSON before scoping proceeds. We also capture the pipeline structure, stage definitions, and Custom Field schema across all objects during this phase.
Twenty workspace preparation and schema creation
We configure the Twenty workspace before any data import. This includes creating all required Custom Objects (matching Close Custom Activity Types), creating all Custom Fields on People, Company, and Opportunity objects, and setting up the Opportunity pipeline with stages and ordering that mirror Close's pipeline structure. Per Twenty's documentation, fields must be created in Settings before CSV import. We also invite all team members as Twenty Members before import so that owner lookups can be resolved by email match.
Owner and user reconciliation
We extract every distinct Close user referenced on Leads, Contacts, Opportunities, and activity records and match by email against Twenty's Members list. Any Close Owner without a matching Twenty Member goes to a reconciliation queue. The customer's Twenty admin provisions missing Members and waits for invitations to be accepted before we resume import. OwnerId references must be resolvable before standard object import begins.
Sandbox migration and reconciliation
We run a full migration into a Twenty staging workspace using production-like data volume. The customer's RevOps lead reconciles record counts and spot-checks 20-40 random records against the Close source, verifying field values, Custom Field content, and activity timeline completeness. Any mapping corrections and field name mismatches are resolved here before production migration begins. This step is essential when Custom Activities are present because dependency ordering corrections are easier to make in a non-production context.
Production migration in dependency order
We run production migration in record-dependency order: Companies first (if any are created from Organisation extraction), then Persons (Leads and Contacts from Close, with the Close record ID preserved in a custom field), then Opportunities (with pipeline stage resolved), then Custom Object schema and activity records last because they may reference Persons or Opportunities. Activity records are imported in chronological batches with the parent record resolved before each batch closes. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, delta sync, and Workflow inventory delivery
We freeze writes in Close during the cutover window, run a final delta migration of any records modified during the migration window, then mark Twenty as the system of record. We deliver the Close Workflow inventory document to the customer's admin team as a written handoff. We support a limited hypercare window where we resolve reconciliation issues raised during the first week of live use. We do not rebuild Close Workflows in Twenty inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Close
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 Close 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
Close: Per endpoint group with a lower limit on write operations; 429 response includes rate_reset value; limits enforced at the organisation level across all API keys.
Data volume sensitivity
Close 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 Close to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Close 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 Close
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.