CRM migration

Migrate from Close to Twenty CRM

Field-level mapping, validation, and rollback between Close and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.

Close logo

Close

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between Close and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Close logo

Close

What's pushing teams away

  • The feature set is deliberately narrower than enterprise CRMs — advanced reporting, deep customisation, and workflow complexity lag behind Salesforce and HubSpot.
  • Mobile app navigation receives consistent complaints; users report missed call notifications and the need to reopen the app frequently to stay current.
  • Teams needing native Slack integration without a Zapier workaround find the gap frustrating, especially at the lower pricing tiers.
  • Some users report that Close lacks Serbian number support and has limited inbox management compared to dedicated helpdesk tools.

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

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

maps to

Twenty CRM

Person

1:1
Fully supported

Close 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

maps to

Twenty CRM

Person

1:1
Fully supported

Close 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

maps to

Twenty CRM

Company

1:1
Fully supported

Close 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

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Close 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

maps to

Twenty CRM

Opportunity (pipeline column)

lossy
Fully supported

Close 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

maps to

Twenty CRM

Task / Timeline Event

1:1
Fully supported

Close 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

maps to

Twenty CRM

Task / Timeline Event

1:1
Fully supported

Close 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

maps to

Twenty CRM

Task / Timeline Event

1:1
Fully supported

Close 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

maps to

Twenty CRM

Task

1:1
Fully supported

Close 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

maps to

Twenty CRM

Custom Object / Activity

lossy
Fully supported

Close 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

maps to

Twenty CRM

Custom Field

lossy
Fully supported

Custom 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

maps to

Twenty CRM

Attachment / File

1:1
Fully supported

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

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.

Close logo

Close gotchas

High

CSV exports drop all activity history silently

Medium

Smart Views can only export from the Leads tab

Medium

Workflows gatekept behind Growth and Scale plans

Medium

Custom Activities require strict dependency ordering

Low

Rate limits enforced per endpoint group

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

  • CSV exports silently drop all activity history

    Close's CSV export format intentionally omits all activity data — calls, emails, SMS, and tasks do not appear in any downloaded CSV file. JSON export must be used to capture the full activity stream. If a customer has only been using CSV exports for scoping, their activity history will be absent from the export. We always request JSON for activity-bearing records and flag this requirement during the pre-migration data audit. If only CSV exports are available, we advise the customer to re-export via JSON before migration scoping begins.

  • Smart Views can only be exported from the Leads tab

    Close's UI only shows an export button for Smart Views created from the Leads tab. Smart Views built from the Contacts tab produce no export button in the UI. We handle this by querying Leads and Contacts directly via the Close API rather than relying on saved Smart View exports, ensuring all records are retrieved regardless of how the customer's saved views are structured.

  • Custom Activity Types require strict dependency ordering

    A Close Custom Activity Type must exist in Twenty before any Custom Field scoped to that type, and both must exist before any activity instance can be imported. Attempting to import activity records before the type and fields are created returns validation errors. We sequence Custom Activity migration as a three-phase pipeline: create type, create type-scoped Custom Fields, then import activity records. This applies to any customer on Close Growth or Scale with active Custom Activities.

  • Twenty requires Custom Fields to exist before CSV import

    Per Twenty's documentation, the CSV import creates records but not fields. All Custom Fields referenced in the import file must be created in Settings → Data Model before the import runs. We create all Custom Fields during the pre-import schema setup phase and verify their API names match the CSV column headers exactly, including enabling Advanced mode to expose API names where display names differ.

  • Workflows and Smart Views do not migrate to Twenty

    Close Workflows (automated task and outreach sequences) are only available on Growth and Scale plans and are tightly coupled to Close's event model. Twenty does not have a direct equivalent as a configurable workflow engine in its current release. We do not migrate Workflows as code. We deliver a written inventory of every active Close Workflow with its trigger, conditions, and actions for the customer's admin to evaluate for manual recreation in Twenty. Smart Views similarly migrate as a named list of filter criteria, not as functional saved views; the admin rebuilds the view configuration in Twenty's table view builder.

Migration approach

Six steps for a successful Close to Twenty CRM data migration

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

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

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

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

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

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

Context on both ends of the pair

Close logo

Close

Source

Strengths

  • Unified inbox combining email, SMS, and call history in a single thread per Lead or Contact.
  • Built-in dialer stack — Power Dialer and Predictive Dialer — without requiring a third-party VoIP integration.
  • Per-seat pricing with no separate marketing-contact billing model, making cost predictable as teams grow.
  • Clean API with structured endpoints for Leads, Contacts, Opportunities, and Custom Activities using API-key authentication.
  • Strong G2 rating (4.7/5 from 2,030 reviews) with consistent praise for ease of use and onboarding speed.

Weaknesses

  • Mobile app is widely criticised for navigation friction, missed notifications, and the need to reopen to refresh call status.
  • Feature set is intentionally lean — advanced custom reporting, deep customisation, and complex workflow logic are more limited than Salesforce or HubSpot.
  • Native Slack integration is absent without a Zapier or API workaround, frustrating teams that rely on Slack for sales team communication.
  • Custom Objects and Custom Activities are powerful but add migration complexity due to their dependency ordering requirements.
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. 2 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 Close and Twenty CRM.

  • Object compatibility

    B

    2 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

    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

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 15,000 Contacts and 3,000 Opportunities with no Custom Activities. Migrations with Custom Activities, large engagement histories (over 200,000 activity records), multiple Custom Objects, or complex pipeline configurations move to seven to eleven weeks because of dependency sequencing, activity stream processing, and reconciliation time. The pre-migration data audit and JSON export verification typically adds three to five business days before the migration schedule begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Close.
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