CRM migration

Migrate from CRM and Deals for Zendesk to Twenty CRM

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 logo

CRM and Deals for Zendesk

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

73%

8 of 11

objects map 1:1 between CRM and Deals for Zendesk and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

CRM and Deals for Zendesk logo

CRM and Deals for Zendesk

What's pushing teams away

  • Seat-based pricing compounds silently as headcount grows, with one Reddit user reporting a climb from a few users to dozens generating a $5,000/month bill.
  • The CRM functionality feels secondary to the help desk core; deal management lacks the depth of Pipedrive or HubSpot Deals.
  • AI features and advanced analytics are gated behind $25-50/agent/month add-ons that stack on top of base plan costs.
  • Setup complexity frustrates teams that expected a simple CRM and instead encounter plan-tiered feature gates and configuration overhead.
  • Legacy Custom Objects use a deprecated API that requires a migration step before the new v2 Custom Objects API can accept records.

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 CRM and Deals for Zendesk objects map to Twenty CRM

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

maps to

Twenty CRM

Person

1:1
Fully supported

Zendesk 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

maps to

Twenty CRM

Company

1:1
Fully supported

Zendesk 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

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Zendesk 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

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Zendesk 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)

maps to

Twenty CRM

Opportunity Stage History

1:1
Fully supported

Zendesk 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)

maps to

Twenty CRM

Timeline Events

1:1
Fully supported

Zendesk 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

maps to

Twenty CRM

Note / Comment on Person or Company

1:many
Fully supported

Zendesk 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)

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Zendesk 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

maps to

Twenty CRM

Workspace User

1:1
Fully supported

Zendesk 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

maps to

Twenty CRM

Custom Text Field

lossy
Fully supported

Zendesk 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

maps to

Twenty CRM

File (external link or Note attachment)

1:1
Fully supported

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

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.

CRM and Deals for Zendesk logo

CRM and Deals for Zendesk gotchas

High

Help Center has no native export

Medium

Separate API rate limit buckets per plan

High

Legacy Custom Objects must migrate to v2 first

Medium

Deals and pipeline stages lack historical audit trail in API

Low

Custom Objects limits vary by plan tier and are not enforced consistently at import

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

  • Zendesk Sell retires August 31, 2027 — do not delay scoping

    Zendesk announced the retirement of Zendesk Sell on September 9, 2025, with a hard cutoff of August 31, 2027. Industry analysis from Fast Slow Motion (September 2025) estimates that a smooth CRM transition runs three to six months, which means teams starting in late 2026 have almost no buffer for testing, iteration, or fixing mapping errors. We strongly recommend starting migration discovery no later than Q1 2027 to allow a full migration cycle with validation before the retirement date.

  • Stage history requires de-normalization from Activities before migration

    Zendesk's Deals API exposes current stage and owner but does not surface stage-change history as a first-class field. Stage transitions are logged as Activity records with activity_type = 'deal_stage_changed', containing from_stage and to_stage values. Twenty CRM expects Opportunity stage as a current-state property with no native stage-history object. We run a pre-migration de-normalization query joining Activities to Deals to reconstruct the full stage timeline, then write it as a custom JSON field or series of Note records on the Opportunity. Migrations that skip this step arrive in Twenty with current stage only, losing the pipeline audit trail that sales managers rely on.

  • Legacy Custom Objects must migrate to v2 before any records move

    Zendesk's Legacy Custom Objects API is fully deprecated. As of January 15, 2026, no new legacy custom objects or relationships can be created, and the legacy API is read-only. Any records built on the legacy schema must first run through Zendesk's five-step v2 migration process: object type definition, schema creation, relationship type creation, record import, then relationship record linkage. This step alone can add three to five days to a migration timeline and may reveal custom object counts that exceed the destination plan tier. We include v2 schema migration as a distinct phase before any record import begins.

  • Help Center articles have no native export — API scripting required

    Zendesk's Help Center explicitly states there is no prebuilt export tool for articles. Every knowledge base migration requires API scripting against the Help Center API (200-2,500 req/min depending on plan tier). Inline images, content blocks, and translations all require separate API calls. We handle this by running a dedicated Help Center export job, downloading all HTML bodies and media assets before writing to the destination, and remapping category and section IDs to the target system's knowledge base structure. If Twenty does not include a knowledge base module, articles are delivered as an exported content package for the customer's admin to import into a chosen knowledge base platform.

  • Tickets have no native equivalent in Twenty CRM

    Zendesk Tickets are a core object with status, priority, assignee, tags, and rich conversation threads. Twenty CRM is a sales-focused platform and does not include a native ticket object. Tickets migrate as Note records attached to the corresponding Person or Company, with status and priority preserved as custom fields. The conversation thread migrates as plain text without the threaded layout. Teams that rely heavily on ticket data should plan to integrate a dedicated help desk platform post-migration (Zendesk Support, Intercom, or Freshdesk) rather than expecting ticket parity in Twenty.

Migration approach

Six steps for a successful CRM and Deals for Zendesk to Twenty CRM data migration

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

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

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

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

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

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

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

Context on both ends of the pair

CRM and Deals for Zendesk logo

CRM and Deals for Zendesk

Source

Strengths

  • Native bidirectional sync with Zendesk Support keeps sales and service data in one account.
  • Clean, intuitive agent UI for managing tickets and pipeline simultaneously.
  • Generous marketplace with 1,000+ integrations reduces need for custom development.
  • Plan-tiered feature gates are clearly documented in the API reference.
  • Help Center API and Support API have separate rate limit buckets, giving migration tooling room to operate.

Weaknesses

  • Seat-based pricing compounds quickly; the advertised $19/agent/month masks the real cost of higher tiers and add-ons.
  • CRM features (deals, pipelines, lead scoring) are secondary to the help desk core and lack the depth of standalone CRMs.
  • Help Center has no native export; knowledge base migration requires API scripting or marketplace tooling.
  • Legacy Custom Objects require a mandatory migration to v2 before any new records can be written.
  • Custom Objects plan-tier limits (3 on Team, 5 on Growth, up to 50 on Enterprise Plus) can force data architectural decisions mid-migration.
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. 3 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 CRM and Deals for Zendesk and Twenty CRM.

  • Object compatibility

    B

    3 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

    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

    A

    CRM and Deals for Zendesk exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your CRM and Deals for Zendesk 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 CRM and Deals for Zendesk to Twenty CRM data migrations

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

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 15,000 Contacts, 5,000 Deals, and no Legacy Custom Objects. Migrations with Legacy Custom Objects requiring v2 schema migration, large Activity histories (over 200,000 records), complex Organization-Deal relationship trees, or Help Center article exports move to six to ten weeks. With the Zendesk Sell retirement deadline of August 31, 2027, we strongly recommend initiating discovery no later than early 2027 to allow full migration with testing before the cutoff.

Adjacent paths

Related migrations to explore

Ready when you are

Move from CRM and Deals for Zendesk.
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