CRM migration

Migrate from webCRM to Twenty CRM

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

webCRM logo

webCRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

70%

7 of 10

objects map 1:1 between webCRM and Twenty CRM.

Complexity

CModerate

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

webCRM logo

webCRM

What's pushing teams away

  • Users report support response times as a pain point, with some customers citing delays when resolving configuration issues.
  • As a smaller CRM in a market dominated by HubSpot and Salesforce, businesses scaling beyond 50 users often migrate to platforms with more ecosystem integrations.
  • Limited public API documentation makes the platform difficult to integrate with custom tooling, pushing technical teams toward alternatives with better developer support.

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

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

maps to

Twenty CRM

Company

1:1
Fully supported

webCRM 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

maps to

Twenty CRM

People

1:1
Fully supported

webCRM 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

maps to

Twenty CRM

Opportunity

1:1
Fully supported

webCRM 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

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Each 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

maps to

Twenty CRM

Order (custom object)

1:many
Fully supported

webCRM 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

maps to

Twenty CRM

Product

1:1
Fully supported

webCRM 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

maps to

Twenty CRM

Task

1:1
Fully supported

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

maps to

Twenty CRM

Custom Field

lossy
Fully supported

webCRM 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

maps to

Twenty CRM

Workflow

1:1
Fully supported

webCRM 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

maps to

Twenty CRM

Member

1:1
Fully supported

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

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.

webCRM logo

webCRM gotchas

High

Automation rules are not exported or migratable

Medium

Export requires manual Overviews navigation

Medium

Delivery XML format requires transformation

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

  • webCRM Deliveries require XML-to-CSV transformation

    webCRM Deliveries export from Zynk in nested webCRM Delivery XML format, not flat CSV. The XML structure contains a parent Delivery record with embedded line items that cannot be loaded directly into Twenty's REST API import which expects tabular rows. We parse the XML, split it into Orders (header) and OrderItems (line detail) CSVs, generate a linking key, and pre-create an Order custom object with a child relationship in Twenty before loading. Skipping this step results in malformed or incomplete Delivery records in the destination.

  • Manual Overviews export is the only data extraction path

    webCRM has no public API. All data extraction requires manual navigation to Utilities > Overviews within webCRM, creating separate exports for each object type (Organisations, Contacts, Deals, Products, Tasks). We guide customers through this process and batch the exports into consistent CSV format. Large datasets require multiple export passes which adds one to two days of preparation time before ingestion. Any customer dependency on Zynk for Delivery export means the Zynk connector must remain active during the migration window.

  • Twenty requires pre-created fields before CSV import

    Twenty's CSV import creates records, not fields. If a custom field from webCRM does not exist in Twenty's data model at import time, that column is silently ignored and data is lost for that field. We create all custom fields (including any Organisation-specific, Contact-specific, Deal-specific, and Product-specific fields) in Twenty Settings > Data Model before any record import begins. This is a hard dependency: schema must be complete before data loads start.

  • Automation rules and workflow logic are not migratable

    webCRM Automation Rules (time-based reminders, inactivity triggers, deadline alerts) store logic internally with no accessible export endpoint. Twenty's workflow engine is fundamentally different from webCRM's automation module and requires manual rebuild. We inventory every active automation during scoping and deliver a written document describing each rule's trigger, conditions, actions, and recommended Twenty equivalent. The customer must allocate admin or developer time post-migration to rebuild these; we do not include automation rebuild in the standard migration scope.

  • Views, permissions, and pipeline configurations do not transfer

    webCRM Views (saved filters and list views) and role-based permission structures have no export mechanism and cannot be migrated to Twenty. Twenty's permission model uses Members and workspace-level access controls that are distinct from webCRM's role hierarchy. We do not migrate these configurations. We document the webCRM view definitions and permission groups as-is so the customer's admin can rebuild equivalent views and access settings in Twenty after go-live.

Migration approach

Six steps for a successful webCRM to Twenty CRM data migration

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

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

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

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

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

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

Context on both ends of the pair

webCRM logo

webCRM

Source

Strengths

  • Pipeline management with customisable stages and revenue forecasting
  • Product database with real-time inventory overview
  • Task and time-based automation for follow-ups and reminders
  • Order management linking quotes to deliveries and inventory
  • High customer support ratings (4.7/5) on review platforms

Weaknesses

  • No publicly documented API for direct programmatic access
  • Automation rules are not exportable and must be rebuilt manually
  • Smaller market footprint limits third-party integrations compared to major CRMs
  • Export relies on manual Overviews utility or third-party tools like Zynk
  • Limited pricing transparency makes cost comparison difficult
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?

Moderate CRM migration. 4 of 8 objects need a mapping; the rest are 1:1.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across webCRM and Twenty CRM.

  • Object compatibility

    C

    4 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

    webCRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Most migrations land between two and four weeks for accounts under 10,000 Contacts and 2,000 Deals with straightforward custom fields and no Delivery data requiring XML transformation. Migrations with large Delivery histories (thousands of order line items), extensive custom field schemas, or multiple custom objects move to five to eight weeks because of XML parsing, multi-pass dependency sequencing, and Twenty's pre-field-creation requirement. The manual Overviews export process in webCRM adds one to two days of preparation time before any data loads begin.

Adjacent paths

Related migrations to explore

Ready when you are

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