CRM migration
Field-level mapping, validation, and rollback between webCRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
webCRM
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between webCRM and Twenty CRM.
Complexity
CModerate
Timeline
2-4 weeks
Overview
Moving from webCRM to Twenty CRM is a manual-export migration: webCRM exposes no public API, so we guide customers through the Utilities > Overviews export process for each object type and transform the webCRM Delivery XML format from Zynk into flat CSV for Twenty's REST API import. Twenty CRM requires all custom fields and custom objects to be created in Settings > Data Model before CSV import runs; we build the destination schema first so that every field referenced in the source export has a target before any record loads. webCRM Automation Rules are not accessible via export and must be rebuilt in Twenty's workflow engine post-migration. We deliver a written automation inventory during scoping so the customer can budget that rebuild work independently. Activities (Tasks, Notes) migrate via CSV to Twenty's standard Task and Note objects with ActivityDate preserved for timeline ordering. Views, permissions, and workflow configurations are not migratable and are excluded from scope.
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 webCRM 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.
webCRM
Organisation
Twenty CRM
Company
1:1webCRM Organisations map directly to Twenty Company records. Organisation ID is preserved as a legacy webcrm_id__c field for reference and dedupe. Custom fields on Organisation (e.g. industry classification, billing address fields) are extracted from the Overviews export and pre-created in Twenty's Settings > Data Model before Company import. The Organisation name becomes Company name and the primary address fields map to Twenty's standard address compound field.
webCRM
Contact
Twenty CRM
People
1:1webCRM Contacts map to Twenty People records. The Organisation ID from the source export is used to resolve the Company Lookup on each People record during import. Email address is the primary dedupe key; we flag duplicate email addresses in the scoping report for the customer to resolve before import. Contact custom fields migrate to People custom fields pre-created in Twenty's data model.
webCRM
Deal
Twenty CRM
Opportunity
1:1webCRM Deals map to Twenty Opportunity. The dealstage maps to Twenty Opportunity stage; the pipeline assignment maps to a Twenty pipeline pre-configured in Settings > Data Model. Deal amount, close date, and probability migrate to Opportunity amount, closeDate, and probability fields. The Organisation and Contact lookups are resolved by matching Organisation ID and Contact ID from the source export against the imported Company and People records.
webCRM
Deal Stage
Twenty CRM
Opportunity Stage
lossyEach webCRM pipeline and its associated stages are translated into Twenty Opportunity pipelines with matching stage names. Stage ordering and win/loss statuses are preserved as configured in Twenty's pipeline settings. We map dealstage values from webCRM to Twenty stage values during the CSV transform step before loading.
webCRM
Delivery
Twenty CRM
Order (custom object)
1:manywebCRM Deliveries are exported in webCRM Delivery XML format via Zynk. The nested XML structure (parent Delivery with child line items) is flattened into two CSV outputs: Orders header rows and OrderItems detail rows linked by a generated Order ID. We pre-create an Order custom object in Twenty with an OrderItems child relationship before loading. Delivery date, Delivery status, and linked Organisation and Contact references are preserved during the transformation.
webCRM
Product
Twenty CRM
Product
1:1webCRM Products from the Product Database map to Twenty Product records. Product name, description, SKU (hs_sku equivalent), and price fields migrate. Products are imported before Deals so that line items on Deals can reference valid Product IDs during migration. Inventory quantity fields map to a custom number field on Twenty Product.
webCRM
Task
Twenty CRM
Task
1:1webCRM Tasks linked to Organisations or Contacts map to Twenty Task records. Task subject, body, status, priority, and ActivityDate migrate. The task status labels from webCRM (e.g. Not Started, In Progress, Completed) are mapped to Twenty Task status values during the CSV transform. Tasks are imported after Companies and People so that the WhoId (People) and WhatId (Company or Opportunity) lookups are satisfied at insert time.
webCRM
Custom Field (all objects)
Twenty CRM
Custom Field
lossywebCRM custom fields on Organisations, Contacts, Deals, Products, and Tasks are extracted during scoping. We create matching custom fields in Twenty's Settings > Data Model with equivalent field types (text, number, date, select, multiselect) before any record import. Fields must exist in Twenty before CSV import runs; importing into a field that does not exist results in silent column drop. The full custom field schema is documented in the scoping report.
webCRM
Automation Rule
Twenty CRM
Workflow
1:1webCRM Automation Rules in the Automation Module are not accessible via export and cannot be migrated. During scoping, we identify every active automation rule, its trigger conditions, and its actions, and document these in a written inventory for the customer's admin to rebuild in Twenty's workflow engine post-migration. The inventory includes estimated rebuild time per rule so that budget can be allocated appropriately.
webCRM
User / Owner
Twenty CRM
Member
1:1webCRM Users (Owners) referenced on Organisation, Contact, Deal, and Task records are mapped to Twenty Members. The customer must invite all active Users to Twenty via Settings > Members before data import begins. We match Owners by email address against Twenty Member records. Any Owner without a matching Member is placed in a reconciliation queue for the customer's admin to provision before the migration resumes.
| webCRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Organisation | Company1:1 | Fully supported | |
| Contact | People1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Deal Stage | Opportunity Stagelossy | Fully supported | |
| Delivery | Order (custom object)1:many | Fully supported | |
| Product | Product1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Custom Field (all objects) | Custom Fieldlossy | Fully supported | |
| Automation Rule | Workflow1:1 | Fully supported | |
| User / Owner | Member1: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.
webCRM gotchas
Automation rules are not exported or migratable
Export requires manual Overviews navigation
Delivery XML format requires transformation
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
Scoping and export preparation
We audit the webCRM account for Organisations, Contacts, Deals, Products, Tasks, Deliveries, custom fields, active automation rules, and Owner count. We document the custom field schema and produce the automation inventory. We guide the customer through the Utilities > Overviews export for each object type and confirm Zynk connectivity if Deliveries are in scope. The output is a written migration scope, object mapping document, and a custom field creation checklist for Twenty's Settings > Data Model.
Twenty workspace preparation
We create all custom fields in Twenty's Settings > Data Model for every Organisation, Contact, Deal, Product, and Task custom field identified in the source export. We pre-create the Order custom object with an OrderItems child relationship to support Delivery data. We configure Opportunity pipelines and stage values to match the webCRM pipeline and stage names. The customer invites all active Users via Settings > Members before data import begins; we validate that all referenced Owners have accepted their invitations before proceeding.
XML transformation for Deliveries
If Deliveries are in scope, we extract the webCRM Delivery XML from Zynk and run a parse-and-flatten transform. The output is two CSV files: Orders (one row per Delivery with header fields) and OrderItems (one row per line item with an Order ID foreign key). We validate the transform by spot-checking line item totals against the original XML and flag any mismatches for the customer's review before loading.
CSV preparation and dedupe
We process all Overviews exports into clean CSV files: standardising date formats to ISO 8601, normalising phone numbers to E.164 where possible, deduplicating Contacts on email address (flagging rather than silently dropping), and resolving Organisation IDs on Contacts and Deals against the imported Company records. Each object export is validated for record count against the source Overviews output before loading.
Production migration in dependency order
We load data into Twenty in strict dependency order: Companies (from Organisations) first with a legacy ID field preserved, then People (from Contacts) with Company lookup resolved, then Products, then Opportunities (with Company and People lookups resolved), then Tasks, then Order custom object records, then OrderItems. Each phase emits a row-count reconciliation report. We use Twenty's REST API with batch chunking and exponential backoff to stay within any applicable rate limits.
Cutover, validation, and automation handoff
We run a final reconciliation pass comparing record counts and spot-checking field values against the source webCRM exports. The customer validates the loaded data in Twenty. We deliver the automation inventory document and the permission/view configuration notes. We do not rebuild automation rules or configure Twenty workflows inside the standard migration scope; those are documented for the customer's admin to rebuild post-go-live. We resolve any import errors surfaced during the validation pass at no additional charge within the standard scope.
Platform deep dives
webCRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 4 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across webCRM and Twenty CRM.
Object compatibility
4 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
webCRM: Not publicly documented.
Data volume sensitivity
webCRM 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 webCRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your webCRM 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 webCRM
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.