CRM migration
Field-level mapping, validation, and rollback between Zendesk Sell and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Zendesk Sell
Source
Twenty CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Zendesk Sell and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Zendesk Sell to Twenty CRM is driven by Zendesk's official sunset of Sell on August 31, 2027, making this a time-bound migration with no extension available. Twenty is an open-source CRM that positions Company, People, Opportunity, and Activity as its core objects. We map Zendesk Sell Contacts to Twenty People (or Company for organization-type contacts), Zendesk Organizations to Twenty Company, and Zendesk Deals to Twenty Opportunity. Pipelines and Stages require manual rebuild in Twenty since there is no multi-pipeline concept; Stages map to Opportunity stage values. Activity history (calls, emails, meetings) cannot be exported via Zendesk's standard CSV export and must be pulled through the Sell Core API with rate-limit-aware polling. We do not migrate Sequences, automations, or Workflows as code; we deliver a written inventory of these 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 Zendesk Sell 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.
Zendesk Sell
Contact (is_organization: false)
Twenty CRM
People
1:1Zendesk Sell Contacts where is_organization equals false map to Twenty People. Standard fields (first name, last name, email, phone, address) migrate directly. The contact owner maps to a Twenty workspace Member, requiring that the Member record exists before import. We resolve owner by email match and flag any owner without a matching Twenty Member for the admin to provision.
Zendesk Sell
Contact (is_organization: true)
Twenty CRM
Company
1:1Zendesk Sell Contacts where is_organization equals true map to Twenty Company. Organization name maps to Company name. We also migrate the organization domain as the Company website for deduplication reference. Company records must be created before any related People records so that the People-to-Company relationship is satisfied at insert time.
Zendesk Sell
Organization
Twenty CRM
Company
1:1Zendesk Sell Organizations (a distinct object from Contacts) map to Twenty Company with the same treatment as organization-type Contacts. The Organization name becomes the Company name and the domain becomes the Company website. Any address data on the Organization migrates to the Company address fields.
Zendesk Sell
Deal
Twenty CRM
Opportunity
1:1Zendesk Sell Deals map to Twenty Opportunity. Deal fields (amount, expected close date, loss reason, deal source) migrate directly. The Deal's associated pipeline and stage assignment become the Opportunity stage value in Twenty. Loss reasons from Sell become a custom field on Opportunity rather than a native loss reason, since Twenty's Opportunity model uses a stage picklist for status.
Zendesk Sell
Pipeline + Stage
Twenty CRM
Opportunity stage configuration
lossyZendesk Sell Pipelines are custom workflow containers with ordered Stages inside them. Twenty does not support multiple independent pipelines. We map each Sell Pipeline to a distinct set of stage values prefixed with the pipeline name (e.g., PipelineA__StageName) and consolidate into a single Opportunity stage picklist. Stage order and win/loss flags are preserved as stage value metadata. Customers with very different pipeline models need to decide during scoping which pipeline becomes the primary and which stage sets get merged.
Zendesk Sell
Lead
Twenty CRM
People (or Opportunity for qualified leads)
1:manyZendesk Sell Leads are a first-class object with their own sources and unqualified-reason fields. We assess lead quality at migration time: unqualified or stale Leads map to Twenty People; Sales Qualified Leads with an associated Deal map to both People and a linked Opportunity. We preserve the original lead_source as a custom field on the People record and flag any territory assignments for admin reconfiguration.
Zendesk Sell
Task
Twenty CRM
Task
1:1Zendesk Sell Tasks migrate to Twenty Task. Due date, assignee (resolved by email to Twenty Member), completion status, and priority migrate directly. Task notes migrate as a Task body or as a linked Note. Task assignments to Contacts, Deals, or Organizations carry the parent record reference, which we resolve after parent records exist in Twenty.
Zendesk Sell
Note
Twenty CRM
Note
1:1Zendesk Sell Notes are free-text records that attach to Contacts, Deals, Organizations, or Companies. We migrate Notes with the parent reference intact so conversation context links to the correct People or Company record in Twenty. Notes are inserted after parent records are created to satisfy the relationship.
Zendesk Sell
Custom Field
Twenty CRM
Custom Field
1:1Sell custom fields on Contacts, Deals, Leads, and Organizations map to Twenty custom fields created in Settings before import. We resolve the Sell custom field key (required for API calls) during scoping and create a lookup table. Field types are mapped: Sell text becomes Twenty text, Sell number becomes Twenty number, Sell date becomes Twenty date. Twenty requires all custom fields to exist before CSV import; we create them during the schema setup phase.
Zendesk Sell
Line Item
Twenty CRM
Opportunity (line item fields as custom fields)
lossyZendesk Sell Line Items attach to Deals and represent products or services with quantity and price. Twenty does not have a distinct Line Item object as of the current release. We map Line Item data (product name, quantity, unit price, total) to a custom field set on the Opportunity record, or flag the customer to decide whether to denormalize as a text summary or split into separate Opportunity records per product.
Zendesk Sell
User
Twenty CRM
Member
1:1Zendesk Sell Users (sales reps, admins) export with email, role, and territory. We map Users to Twenty Members by email match. Territory assignments are flagged as a configuration step since Twenty's workspace Members do not have a native territory field. The admin re-creates territory-based routing in Twenty's filters or custom fields after migration.
Zendesk Sell
Tag
Twenty CRM
Tag
1:1Tags in Zendesk Sell are labels applied to Contacts, Deals, and Leads. We migrate Tags as-is onto the equivalent Twenty record. Note that Twenty handles tag-based filtering through its standard filter and view system, which may differ from Sell's tag segmentation UX.
| Zendesk Sell | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact (is_organization: false) | People1:1 | Fully supported | |
| Contact (is_organization: true) | Company1:1 | Fully supported | |
| Organization | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline + Stage | Opportunity stage configurationlossy | Fully supported | |
| Lead | People (or Opportunity for qualified leads)1:many | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Note | Note1:1 | Fully supported | |
| Custom Field | Custom Field1:1 | Fully supported | |
| Line Item | Opportunity (line item fields as custom fields)lossy | Fully supported | |
| User | Member1:1 | Fully supported | |
| Tag | Tag1: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.
Zendesk Sell gotchas
Sell sunset creates a hard deadline for data migration
Sell API rate limits are low for large-volume exports
Custom field IDs differ from field keys in API calls
Sequences and cadence state cannot be migrated
Job queue limit of 30 concurrent background jobs
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 sunset-deadline scoping
We audit the Zendesk Sell account across objects in scope: Contacts (split by is_organization), Organizations, Leads, Deals, Pipelines, Stages, Tasks, Notes, custom fields, and engagement volume. We identify activity history that requires API extraction versus what is available in CSV. We set a migration-start target at least 9 months before the August 31, 2027 sunset date to allow time for data cleanup, test migrations, and admin rebuild work. The discovery output is a written scope document with record counts, a field mapping draft, and a pipeline consolidation recommendation for customers using multi-pipeline Sell setups.
Twenty workspace schema setup
We configure the Twenty workspace before any data import. This includes creating all custom fields required by the mapping (identified in discovery), creating any custom objects that map from Sell, and inviting all team Members so that owner assignments can resolve by email during import. We create Company records before People records to satisfy the relationship, and we set up Opportunity stage values that reflect the consolidated pipeline model. Fields are created in Settings before any CSV import is attempted.
Activity history extraction via Sell API
We extract call logs, email records, meeting records, and task history through the Zendesk Sell Core API with rate-limit-aware polling (10 requests per token per second, up to 36,000 per hour). We batch records into chunks, pause on 429 responses using exponential backoff, and store activity data with original timestamps. Activity records are held in a staging table until their parent record (People, Company, or Opportunity) exists in Twenty, then inserted in dependency order to preserve the timeline.
Test migration and reconciliation
We run a full test migration into a staging Twenty workspace using production-like data volume. The customer's admin spot-checks 25-50 records per object type against the Sell source, verifies custom field values, confirms activity timeline completeness, and reviews the Opportunity stage values. Any mapping corrections are documented and applied before the production migration begins. This step also validates the owner resolution: all Sell Users must have matching Twenty Members invited and active.
Production migration in dependency order
We run production migration in record-dependency order: Members (validated by admin), Companies (from Sell Organizations and organization-type Contacts), People (with Company relationship resolved), Opportunities (with stage value resolved from the pipeline consolidation map), custom fields on each object, then Tasks and Notes (with parent references resolved), and finally activity history (calls, emails, meetings) via staged insert. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, delta sync, and automation rebuild handoff
We freeze writes in Zendesk Sell during the cutover window, run a final delta migration of any records modified during the migration, then hand off to the customer as system of record. We deliver the Sequence metadata inventory, the Workflow and automation list (for the admin to rebuild in Twenty or a third-party tool), and a custom field map documenting every non-standard field created. We support a one-week hypercare window for reconciliation issues. We do not rebuild automations in Twenty as part of the migration scope.
Platform deep dives
Zendesk Sell
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 Zendesk Sell 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
Zendesk Sell: Sell Core API: 36,000 requests/hour (10 req/token/sec); Zendesk Support varies by plan tier from 20 req/min (Team) to 700 req/min (Enterprise).
Data volume sensitivity
Zendesk Sell 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 Zendesk Sell to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Zendesk Sell 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 Zendesk Sell
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.