CRM migration

Migrate from Prophet CRM to Twenty CRM

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

Prophet CRM logo

Prophet CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

70%

7 of 10

objects map 1:1 between Prophet CRM and Twenty CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Prophet CRM to Twenty CRM is a platform-class shift: Prophet runs as an embedded Outlook plugin with OData API pagination and per-department field templates, while Twenty is a self-hosted, open-source web CRM that requires its schema objects and fields to be created before any CSV import. The migration starts with a mandatory custom field audit of every Prophet department template, since Prophet stores different field schemas per department and Twenty requires explicit field provisioning. We freeze Prophet's bidirectional Outlook contact sync before extraction, extract via OData pagination in batches of 500 to 1,000, and pre-create every Twenty object and custom field in the destination workspace before loading records. Activities (calls, emails, meetings, tasks) migrate as Tasks or Notes in Twenty's timeline. Workflows, automation rules, and Prophet's department access control settings do not migrate; we deliver a written inventory for the customer's admin to rebuild inside Twenty's workspace permission model. The self-hosted deployment option means Twenty has no per-user subscription ceiling, which is the primary cost driver for the switch.

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

Prophet CRM logo

Prophet CRM

What's pushing teams away

  • Prophet CRM runs embedded inside Microsoft Outlook only, so teams needing a true web-based CRM, native mobile apps, or cross-platform access find themselves constrained by that tight integration dependency.
  • Feature limitations in reporting, forecasting dashboards, and third-party integrations push growing teams toward CRMs with broader ecosystems and more modern API capabilities.
  • The advanced features that power pipeline management and forecasting require more training investment than the basic interface suggests, leading to uneven team adoption and underutilization of the platform's capabilities.
  • The tight Outlook dependency means the CRM experience is directly tied to desktop Outlook performance, and slow refresh or loading issues inside Outlook directly degrade the CRM experience.

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

Each row shows how a Prophet CRM 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.

Prophet CRM

Contact

maps to

Twenty CRM

People

1:1
Fully supported

Prophet Contacts map to Twenty People records. Prophet stores first name, last name, email, phone, address, job title, company association, and custom fields per department template. We extract all fields during the custom field audit phase and create matching custom fields in Twenty's Settings → Data Model before import. The Outlook bidirectional sync is frozen before extraction to prevent duplicate records post-import. Email addresses serve as the dedupe key during Twenty CSV import.

Prophet CRM

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Prophet Company records map directly to Twenty Company records. Standard fields (company name, industry, address, website, employee count, revenue) export cleanly. Industry classification and employee count ranges from Prophet map to Twenty's industry and employeeCount fields, with format normalization applied where Prophet uses free-text. We pre-create any industry picklist values not present in the default Twenty workspace before import.

Prophet CRM

Opportunity

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Prophet Opportunities map to Twenty Opportunities with name, value, close date, probability, owner, and pipeline stage. Stage assignments migrate as part of the record. We capture the full Prophet pipeline stage list during scoping and create matching stage values in Twenty's pipeline configuration before migration. Closed-won and closed-lost reasons from Prophet custom fields become Twenty custom fields on Opportunity.

Prophet CRM

Pipeline Stage

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Prophet pipeline stages are configurable per department and vary across organizations. We enumerate the complete stage list during the scoping audit, including stage names, probabilities, and which departments use which pipelines. Each stage maps to a Twenty Opportunity stage value, with probability percentages rounded to Twenty's allowed integer format.

Prophet CRM

Activity (email, call, meeting, task)

maps to

Twenty CRM

Task or Note

1:1
Fully supported

Prophet Activities include email tracking, tasks, appointments, and call logs linked to Contacts and Opportunities. These map to Twenty Task records (for calls, tasks, and appointments) and Note records (for logged emails and text notes). Activity date and time are preserved in Twenty's ActivityDate field. There is no bulk export endpoint in Prophet, so we extract via OData pagination in batches, preserving the linked Contact and Opportunity references for reconstruction in Twenty.

Prophet CRM

Department

maps to

Twenty CRM

Workspace Member role or custom field

lossy
Fully supported

Prophet departments are first-class objects with custom templates and configurable cross-department access. Twenty's permission model uses Workspace Members with object-level visibility rather than a department hierarchy. We evaluate the customer's department structure during scoping and recommend either a custom department field on each record (if departments represent reporting structures) or Workspace Member-based team segmentation (if departments represent access-controlled silos). The recommendation is documented and implemented as part of the schema pre-build.

Prophet CRM

Custom Field (per object, per department)

maps to

Twenty CRM

Custom Field

lossy
Fully supported

Prophet supports custom fields on Companies, Contacts, and Opportunities with schemas that vary by department template. We conduct a mandatory custom field audit before migration, enumerating all field names, data types, and which departments use which templates. Every distinct custom field is created in Twenty's Settings → Data Model before the corresponding object import begins. Fields must exist in Twenty before the CSV import step; CSV import creates records only, not fields.

Prophet CRM

Attachment

maps to

Twenty CRM

Attachment (File)

1:1
Fully supported

Prophet stores file attachments on Companies, Contacts, and Opportunities. We extract attachment metadata and file URLs from the OData export and upload files to Twenty's file attachment capability, linking each file to the parent record by resolving the target People, Company, or Opportunity ID in Twenty post-import.

Prophet CRM

Owner

maps to

Twenty CRM

Workspace Member

1:1
Fully supported

Prophet Owners map to Twenty Workspace Members. We resolve owners by email match. Twenty's migration documentation explicitly requires that users exist in the workspace before importing records with owner references. Any Prophet Owner without a matching Twenty Workspace Member enters a reconciliation queue for the customer's admin to provision the account before record import resumes.

Prophet CRM

Custom Object

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Prophet's Enterprise tier supports custom objects with department-scoped schemas. Twenty supports custom objects via its /metadata API with GraphQL schema generation. We pre-create the destination custom objects (including all custom fields, field types, and lookup relationships) before any data import. Twenty's schema must be deployed via the Settings → Data Model interface, and all fields must exist before CSV import begins.

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.

Prophet CRM logo

Prophet CRM gotchas

Medium

Prophet CRM renamed to Avid CRM mid-lifecycle

High

No bulk export API in Prophet CRM

Medium

Custom field audit required before export scoping

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

  • Twenty requires fields to exist before CSV import

    Twenty's CSV import creates records only, not fields. The Twenty documentation explicitly warns that fields must exist in Settings → Data Model before importing. A GitHub issue (#13953) filed against Twenty confirms that the People and Companies objects are missing industry-standard fields like jobTitle, department, phone types, and social profiles out of the box, forcing users to spend 30-60 minutes creating basic fields before importing. For Prophet migrations with multiple department templates, this means we must enumerate every Prophet custom field per department during scoping, create matching fields in Twenty, and validate the schema before the first CSV batch loads. Skipping this step results in data loss for unmapped fields on the first import attempt.

  • Prophet OData API has no bulk export endpoint

    Prophet CRM's OData API provides standard CRUD endpoints with no bulk or batch export operation. We paginate through the API using OData skip and top parameters to extract records in batches of 500 to 1,000, which increases extraction time for large databases. We also sequence the export by object dependency order (Companies first, then Contacts, then Opportunities, then Activities) to preserve relational links when we rebuild records in Twenty. For migrations exceeding 50,000 total records, extraction alone can take multiple days at full pagination throughput.

  • Prophet department templates create variable field schemas

    Prophet CRM custom fields are created per object and per department template, meaning the effective field schema can vary by department even on the same object. A Contact record in the Sales department may have different custom fields than the same Contact type in the Operations department. We include a mandatory custom field audit step in every Prophet CRM migration engagement, enumerating all field names, types, and which departments use which templates. We consolidate all department-specific fields into a unified Twenty schema and flag any that require a custom field to be created in Twenty before import. Skipping this step risks dropping department-specific fields that do not appear in the default Contact or Company view.

  • Twenty workflows and automations must be rebuilt manually

    Twenty's workflow builder is in early development and does not yet support the full automation depth that Prophet Professional and Enterprise tiers provide. Prophet's workflow automation for follow-up tasks, stage-based triggers, and department-level assignment rules have no direct Twenty equivalent that migrates automatically. Twenty's migration documentation explicitly states that views, workflows, and permissions must be recreated manually after migration. We deliver a written inventory of every active Prophet workflow and automation with its trigger, conditions, and recommended Twenty rebuild steps, but the rebuild itself is outside the migration scope.

  • Twenty Workspace Members must exist before owner-referenced records import

    Twenty's migration documentation includes an explicit warning: if data includes user references (Opportunity owner, Contact assignee, etc.), those Workspace Members must exist in Twenty before import. Otherwise, those owner relations cannot be mapped and records import without an assigned owner. We resolve Prophet Owners by email match against Twenty Workspace Members during the reconciliation phase. Any Owner without a matching Twenty account goes to a reconciliation queue. Migration pauses at the Opportunity import phase until all owner references are satisfied, which requires coordination with the customer's admin to provision missing Workspace Members.

Migration approach

Six steps for a successful Prophet CRM to Twenty CRM data migration

  1. Discovery and custom field audit

    We audit Prophet CRM across all departments, enumerating every custom field, field type, and which departments use which templates. We capture the full pipeline stage list, owner list, and engagement volume estimates (email, call, meeting, task counts). We also assess the target Twenty deployment environment (self-hosted server, Docker host, managed hosting provider) and verify that Twenty's workspace is accessible for API-based schema provisioning. The discovery output is a written migration scope document with the full field mapping matrix and a Twenty schema pre-build checklist.

  2. Schema pre-build in Twenty

    We create every required object and field in Twenty before importing any records. This includes creating custom fields on People, Company, and Opportunity to match the Prophet custom field audit. We configure pipeline stages, stage probabilities, and any picklist values. We invite all Workspace Members referenced as owners and wait for account acceptance before proceeding. This phase is critical: Twenty's CSV import will silently skip any field that does not already exist in the workspace, so schema completeness is verified before data movement begins.

  3. Outlook sync freeze and OData extraction

    We freeze Prophet's bidirectional Outlook contact sync before extraction to prevent duplicate records post-import. We then extract data from Prophet via OData API pagination, starting with Companies (parent object), then Contacts (resolved against Company IDs), then Opportunities (resolved against Company and Contact IDs), then Activities. Each object extracts in batches of 500 to 1,000 records with skip/top pagination. We preserve relational links by recording the source Prophet IDs and mapping them to destination Twenty IDs during the load phase.

  4. Data transformation and field mapping

    We apply field-level transformations during a staging phase before Twenty import. This includes date format normalization (Prophet datetime to ISO 8601), phone number standardization, industry classification mapping to Twenty's industry picklist, and pipeline stage name mapping to Twenty's stage values. Department template fields from Prophet are consolidated: if the same field appears in multiple department templates under different names, we map to a single Twenty custom field and document the department-level variation in a reconciliation note. Owner email references are resolved against the pre-provisioned Twenty Workspace Members.

  5. CSV import into Twenty and reconciliation

    We import records into Twenty in dependency order: Companies first (no foreign key dependencies), then People (with Company lookup resolved), then Opportunities (with Company and People lookups resolved), then Tasks and Notes for engagement history. Each batch is followed by a row-count reconciliation report comparing imported count against extracted count. We spot-check 25 to 50 records per object against the Prophet source for field-level accuracy before marking the object as complete. Attachments are uploaded separately via Twenty's file API and linked to the correct parent record.

  6. Cutover, validation, and workflow inventory handoff

    We freeze Prophet writes during the cutover window, run a final delta migration of any records modified during the migration window, then mark Twenty as the system of record. We deliver a written inventory of every Prophet workflow and automation rule with its trigger, conditions, and recommended Twenty rebuild steps, plus a department template reconciliation report documenting any fields that could not be mapped one-to-one. We support a one-week hypercare window for reconciliation issues raised by the customer's team. We do not rebuild Prophet workflows inside Twenty; that is a separate engagement.

Platform deep dives

Context on both ends of the pair

Prophet CRM logo

Prophet CRM

Source

Strengths

  • Embeds directly inside Microsoft Outlook with no separate application or browser tab required for daily CRM use.
  • Minimal training requirement for Outlook-native teams, with a straightforward UI for entering and viewing customer records.
  • Built-in sales pipeline management, opportunity tracking, forecasting, and analytics dashboards in higher tiers.
  • Group email sending with automated email and appointment tracking keeps all customer-facing activity within Outlook.

Weaknesses

  • The tight Outlook dependency limits access to desktop Outlook users, with no true web-based CRM interface or full-featured mobile app.
  • Reporting, forecasting, and analytics are basic compared to standalone CRM platforms, especially at the Standard tier.
  • The platform occupies a relatively small CRM market share, which limits available third-party integrations and community resources.
  • Advanced features like department templates, custom fields, and cross-department access require an initial learning investment and admin configuration.
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 Prophet CRM 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

    Prophet CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Prophet CRM to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Migrations under 10,000 Contacts and 2,000 Opportunities with a single department template land between two and four weeks. Migrations with multiple Prophet department templates, large engagement histories (over 200,000 activity records), or custom object schemas move to six to ten weeks because of the mandatory custom field audit, schema pre-build phase, and CSV batching per object. The Twenty deployment environment setup (Docker installation, domain configuration, SSL) adds one to three days if the customer has not already provisioned the hosting environment.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Prophet CRM.
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