CRM migration
Field-level mapping, validation, and rollback between CRM and Deals for Zendesk and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
CRM and Deals for Zendesk
Source
Twenty CRM
Destination
Compatibility
8 of 11
objects map 1:1 between CRM and Deals for Zendesk and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
CRM and Deals for Zendesk and Twenty CRM take opposite approaches to deal records. Zendesk treats Deals as a secondary object subordinate to Contacts and Organizations, storing pipeline stage history as Activity records rather than first-class Deal fields. Twenty CRM follows a deal-first model where Opportunities attach directly to Companies with stage and probability as native properties. This fundamental schema inversion means the migration center of gravity is reconstructing Zendesk's pipeline history and deciding how to handle Tickets, which have no direct equivalent in Twenty's sales-centric data model. We extract stage-change events from Zendesk Activities, de-normalize them into Opportunity stage-history arrays, and write clean Opportunity records with ownership resolved via email match. Legacy Custom Objects require a mandatory schema migration to v2 before any records can move. Workflows, automations, Help Center articles, and Tickets do not migrate; we deliver written inventories for the customer's admin to rebuild.
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 CRM and Deals for Zendesk 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.
CRM and Deals for Zendesk
Contact
Twenty CRM
Person
1:1Zendesk Contacts map 1:1 to Twenty Persons. Standard fields (name, email, phone, address, custom fields) migrate directly. We use email as the dedupe key during import. If a Zendesk Contact is linked to an Organization, we resolve the Organization-to-Company reference before inserting the Person record so that the relationship is satisfied at write time. Role and title fields map from Zendesk's contact_attributes to Twenty's Person position and social URLs.
CRM and Deals for Zendesk
Organization
Twenty CRM
Company
1:1Zendesk Organizations map directly to Twenty Companies. The organization domain_name becomes the Company domain field. Industry, annual_revenue, and number_of_employees from Zendesk custom fields map to Twenty's Company custom fields. Companies are inserted before Persons so that the Company-Person relationship is satisfied at the moment of Person import. Note that Zendesk's Organizations are flat; if the source uses nested org structures, we flatten them into Twenty's single-tier Company model.
CRM and Deals for Zendesk
Deal
Twenty CRM
Opportunity
1:1Zendesk Deals map to Twenty Opportunities. The key complexity is that Zendesk stores pipeline_id and stage_id as separate lookup fields, while Twenty collapses pipeline and stage into a single Opportunity record with a stage_name and probability. We extract the deal's pipeline stage name and probability from Zendesk's Pipelines API, resolve the pipeline assignment, and write both as Opportunity properties. Any custom fields on the Zendesk Deal (discount_rate, close_date_reason, loss_reason) map to Twenty custom Opportunity fields.
CRM and Deals for Zendesk
Pipeline Stage
Twenty CRM
Opportunity Stage
lossyZendesk Pipeline Stages have ordering, names, and probabilities that map to Twenty Opportunity Stage values. We extract the full stage list from Zendesk's Pipelines API, create the corresponding stage values in Twenty's opportunity stage configuration, and preserve probability percentages. Stage names that exceed Twenty's character limit are truncated. If the source uses multiple Zendesk pipelines, each maps to a separate Twenty Opportunity with stage names scoped per Opportunity record.
CRM and Deals for Zendesk
Activity (stage history)
Twenty CRM
Opportunity Stage History
1:1Zendesk does not expose stage-change history as a first-class Deal field. Stage transitions are logged as Activities with type = 'deal_stage_changed'. We run a de-normalization query joining Activities to Deals where activity_type = 'deal_stage_changed', extract the from_stage and to_stage values, and construct a synthetic stage-history array ordered by timestamp. This array is written as a custom field (stage_history_json) on the Twenty Opportunity or as a series of Note records on the Opportunity timeline. The customer chooses the preferred representation during scoping.
CRM and Deals for Zendesk
Activity (calls, emails, meetings, notes)
Twenty CRM
Timeline Events
1:1Zendesk Activities (calls, emails, meetings, notes) attached to Contacts and Deals migrate as Timeline Events in Twenty. We resolve the Zendesk contact_id or deal_id to the corresponding Twenty Person or Opportunity record and write the activity as a dated event. Call duration, disposition, and recording URL from Zendesk call engagements migrate as custom fields on the Twenty timeline event. Note that threaded conversation views and rich text email bodies migrate as plain text; the threaded layout does not reconstruct in Twenty's flat timeline.
CRM and Deals for Zendesk
Ticket
Twenty CRM
Note / Comment on Person or Company
1:manyZendesk Tickets have no direct equivalent in Twenty CRM, which is a sales-focused platform without a native ticket object. We map tickets to Note records attached to the corresponding Person or Company, preserving status, priority, assignee, tags, and conversation body. The ticket's requester maps to the Person; the assignee maps to the Twenty workspace user. Status and priority values are preserved as custom fields on the Note so the customer's admin can filter by ticket state. If the customer needs a ticketing system post-migration, we recommend a dedicated help desk integration (Zendesk Support, Intercom, or Freshdesk) rather than rebuilding tickets in Twenty.
CRM and Deals for Zendesk
Custom Object (v2)
Twenty CRM
Custom Object
1:1Zendesk v2 Custom Objects map to Twenty custom objects. We first confirm that Legacy Custom Objects have been migrated to v2 (the Legacy API is read-only as of January 15, 2026). We then create the target schema in Twenty, including all custom fields, relationship fields, and validation rules, before importing any data. Relationship fields that point to Contacts or Organizations resolve via the Person and Company lookups established in earlier migration phases. Plan-tier limits on Zendesk (3 on Team, 5 on Growth, 30 on Professional, 50 on Enterprise Plus) do not apply in Twenty, which has no per-plan object count ceiling.
CRM and Deals for Zendesk
User / Agent
Twenty CRM
Workspace User
1:1Zendesk Users and Agents map to Twenty workspace members by email match. We extract every distinct owner_id referenced on Contact, Organization, Deal, and Activity record, match by email against the Twenty workspace user table, and flag any owner without a matching user for admin provisioning. Active versus inactive status migrates from Zendesk's user role (agent, admin). Role-based permissions (Zendesk groups, role types) do not map directly; the customer's admin assigns Twenty workspace roles post-migration.
CRM and Deals for Zendesk
Tag
Twenty CRM
Custom Text Field
lossyZendesk tags on contacts, organizations, and deals are flat string arrays. Twenty does not have a native tag object, so we map tags to a custom text field on the relevant record (Person, Company, or Opportunity). The customer chooses whether tags concatenate as a comma-separated string or populate a multi-select custom field if Twenty's schema supports it. Tag-based automations in Zendesk do not migrate; we note them in the automation inventory for rebuild.
CRM and Deals for Zendesk
Attachment
Twenty CRM
File (external link or Note attachment)
1:1Inline images and file attachments on Zendesk tickets, contacts, and articles must be fetched separately from Zendesk's attachments API endpoint. We download all attachments, re-upload to Twenty's storage layer, and link them to the parent record. If Twenty's attachment API does not support inline image positioning, attachments are linked as separate file records on the Person or Company with a reference note indicating the original context. Attachment migration runs after all primary record types are written to avoid blocking the main migration path.
| CRM and Deals for Zendesk | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Organization | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Activity (stage history) | Opportunity Stage History1:1 | Fully supported | |
| Activity (calls, emails, meetings, notes) | Timeline Events1:1 | Fully supported | |
| Ticket | Note / Comment on Person or Company1:many | Fully supported | |
| Custom Object (v2) | Custom Object1:1 | Fully supported | |
| User / Agent | Workspace User1:1 | Fully supported | |
| Tag | Custom Text Fieldlossy | Fully supported | |
| Attachment | File (external link or Note attachment)1: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.
CRM and Deals for Zendesk gotchas
Help Center has no native export
Separate API rate limit buckets per plan
Legacy Custom Objects must migrate to v2 first
Deals and pipeline stages lack historical audit trail in API
Custom Objects limits vary by plan tier and are not enforced consistently at import
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 Zendesk Sell retirement timeline assessment
We audit the source Zendesk Sell instance across plan tier, CRM object counts (Contacts, Organizations, Deals, Pipelines, Activities), Legacy Custom Objects, Help Center article volume, active automations, and ticket count. We pair this with a Twenty workspace readiness check confirming self-hosted or cloud deployment, workspace member provisioning, and available custom field slots. The discovery output includes a written migration scope, a Zendesk Sell retirement risk assessment based on the August 2027 cutoff, and a recommendation on whether Legacy Custom Objects require v2 migration before records can be written.
Schema design in Twenty
We design the destination schema in Twenty. This includes creating Company and Person custom fields matched to Zendesk Organization and Contact custom fields, provisioning Opportunity stages mapped from Zendesk pipeline stages, designing custom objects to receive Zendesk v2 Custom Objects, and configuring any custom fields needed to hold Zendesk ticket status, priority, and tag data. Schema is built in Twenty's staging or development workspace first for validation. We also define the stage-history de-normalization query at this stage to confirm that the source Activity data can reconstruct the pipeline timeline before migration begins.
Legacy Custom Objects v2 migration (if applicable)
If the source Zendesk instance uses Legacy Custom Objects, we run the mandatory five-step v2 migration as a distinct pre-import phase: object type definition, schema creation, relationship type creation, record import, and relationship record linkage. This step runs against the Zendesk API in read mode, reading from legacy and writing to v2, before any records move to Twenty. We assess whether the resulting v2 record count exceeds any destination plan limits during this phase.
Sandbox migration and reconciliation
We run a full migration into Twenty's development or staging environment using production-equivalent data volume. The customer's admin reconciles record counts (Companies in, Persons in, Opportunities in, Activities in), spot-checks 25-50 random records against the Zendesk source, validates stage-history reconstruction, and reviews the Help Center export if applicable. Any mapping corrections, custom field mismatches, or data quality issues surface here before production migration begins.
Owner reconciliation and User provisioning
We extract every distinct owner_id referenced on Contact, Organization, Deal, and Activity record from Zendesk and match by email against the Twenty workspace member list. Owners without a matching Twenty user enter a reconciliation queue. The customer's admin provisions any missing workspace members before production migration resumes. Owner references are required on Opportunity and Timeline Event records in Twenty, so this step gates the production migration start.
Production migration in dependency order
We run production migration in record-dependency order: Companies (from Zendesk Organizations), Persons (with CompanyId resolved), Opportunities (with stage-history de-normalized from Activities and OwnerId resolved via email match), Timeline Events (Activities mapped to Persons and Opportunities), Legacy v2 Custom Objects, Ticket data (as Notes on Person or Company), then Attachments (downloaded from Zendesk and re-uploaded to Twenty). Each phase emits a row-count reconciliation report before the next phase begins. Help Center articles run as a parallel export job and are delivered as a content package separate from the CRM migration.
Cutover, delta migration, and automation inventory handoff
We freeze Zendesk Sell writes during the cutover window, run a final delta migration of any records modified during the migration run, then enable Twenty as the system of record. We deliver a written inventory of every Zendesk workflow, trigger, automation, and Help Center routing rule requiring rebuild, with the recommended Twenty equivalent for each where applicable. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Zendesk workflows as Twenty automations inside the migration scope; that work is handled by the customer's admin using Twenty's automation tools post-migration.
Platform deep dives
CRM and Deals for Zendesk
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 CRM and Deals for Zendesk and Twenty CRM.
Object compatibility
3 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
CRM and Deals for Zendesk: 200 req/min (Team) to 2,500 req/min (Enterprise Plus) — account-level, shared across all integrations and agents.
Data volume sensitivity
CRM and Deals for Zendesk 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 CRM and Deals for Zendesk to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your CRM and Deals for Zendesk 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 CRM and Deals for Zendesk
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.