CRM migration

Migrate from Prospects CRM to Twenty CRM

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

Prospects CRM logo

Prospects CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

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

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Prospects CRM is a stock-aware CRM built for B2B wholesalers, distributors, and manufacturers who sell from inventory — its data model centers on Contacts, Companies, Deals, and real-time inventory linkages to platforms like Unleashed, Katana, or Xero. Its contact and deal schemas follow standard CRM conventions (firstname, lastname, email, phone, jobtitle on contacts; dealname, amount, dealstage, closedate on deals) but the stock-inventory layer is Prospects-specific and has no Twenty equivalent. Twenty CRM is an open-source CRM that models People (contacts), Companies, Opportunities, Notes, and Tasks as its core objects, with unlimited custom objects on the Organization tier. It uses REST and GraphQL APIs for data import, enforces a strict import order (Companies first, then People, then Opportunities), and caps CSV exports at 20,000 records per operation. Workflows, views, and permissions are not migratable and must be rebuilt manually after the cutover. FlitStack AI sequences the Prospects CRM to Twenty migration so foreign-key relationships resolve correctly: Companies → Companies, then People with their companyId links, then Opportunities with companyId and personId links. We use Prospects CRM's API export and Twenty's REST/GraphQL bulk import endpoints. Stock-inventory associations from Prospects CRM are preserved as custom fields on Companies in Twenty since Twenty has no native inventory model. We run a test migration against a representative slice before committing the full dataset, and a delta-pickup window (24–48 hours) captures any records modified during cutover.

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

Prospects CRM logo

Prospects CRM

What's pushing teams away

  • The marketing functions are described as underpowered by multiple reviewers, pushing teams that need campaign automation to pair it with a dedicated marketing platform or leave entirely.
  • Some users report connectivity issues and CRM stability concerns that create friction during high-activity selling periods.
  • A number of reviewers flag limited features compared to broader CRM platforms, noting that growing teams eventually outpace what the stock-aware feature set covers.
  • Some reviewers identify the platform as inefficient or limiting for their specific workflows, suggesting the product is tailored to a specific vertical rather than broadly applicable.

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

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

Prospects CRM

Contact

maps to

Twenty CRM

People

1:1
Fully supported

Prospects CRM Contact maps directly to Twenty's People object. Standard fields (firstname, lastname, email, phone, jobtitle) migrate to Twenty's name, email, phone, and jobTitle fields. The companyId relation requires the Company record to exist first — FlitStack sequences companies before people during migration so foreign-key links resolve correctly.

Prospects CRM

Contact (custom fields)

maps to

Twenty CRM

People (custom fields)

1:1
Fully supported

Prospects CRM custom fields on Contact (beyond standard fields) map to custom fields on Twenty's People object. Before migration, FlitStack generates a custom-field creation plan for Twenty's Data Model → Fields UI. Fields like custom pick-lists, date fields, and numeric fields are created as matching types in Twenty. Notes fields become Twenty Note records linked to the People record.

Prospects CRM

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Prospects CRM Company maps to Twenty's Company object with direct field mapping for name, domain/website, industry, numberofemployees, and annualrevenue. Multi-level company hierarchies (parent/child) in Prospects CRM map to the Parent CompanyId field in Twenty's Companies object. Industry pick-list values require value-by-value mapping when Prospects uses a controlled vocabulary.

Prospects CRM

Company (inventory link fields)

maps to

Twenty CRM

Company (custom fields)

1:1
Fully supported

Prospects CRM's stock-aware Company fields that link to inventory platforms (Unleashed, Katana, Cin7, Xero, Sage 50) have no direct Twenty CRM equivalent since Twenty has no native inventory model. FlitStack preserves these as custom text fields on the Company record for reference — teams using inventory platforms must rebuild those integrations via Twenty's REST API or a middleware layer post-migration.

Prospects CRM

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Prospects CRM Deal maps to Twenty's Opportunity object. Direct field mappings include dealname → name, amount → amount, closedate → closeDate, and owner → workspaceMember (resolved by email match). Deal stage (dealstage) maps to Twenty's stage field via value mapping where Prospects stage names are translated to the target stage pick-list values defined in the Twenty workspace.

Prospects CRM

Deal stage / pipeline

maps to

Twenty CRM

Opportunity stage

1:1
Fully supported

Prospects CRM pipeline stages (dealstage pick-list values) map to Twenty's Opportunity stage field value-by-value. FlitStack extracts the full stage vocabulary from Prospects CRM and generates a stage-mapping table that the Twenty workspace admin pre-loads into Settings → Data Model → Opportunities → Stage before the migration runs. Stage-entered timestamps from Prospects are stored as custom datetime fields for reporting continuity.

Prospects CRM

Deal (custom fields)

maps to

Twenty CRM

Opportunity (custom fields)

1:1
Fully supported

Prospects CRM custom fields on Deals (probability overrides, deal source, decision-maker type, custom amounts) migrate to Twenty custom fields on the Opportunity object. FlitStack documents each custom field's type (pick-list, number, text, date) and the matching Twenty field type to create before migration day. Custom pick-list fields require the options to be pre-created in Twenty's Data Model.

Prospects CRM

Activity (call, email, meeting, note)

maps to

Twenty CRM

Task / Event / Note

1:1
Fully supported

Prospects CRM activity records (calls, emails, meetings, notes) map to Twenty's Task, Event, and Note objects. Call activities become Tasks with Type='Call'; email records become Tasks with Type='Email'; meetings become Events with original start/end times and attendees preserved. Notes migrate as Twenty Note records and are linked to the parent record (People, Company, or Opportunity) by ID. Original timestamps and owner assignments are preserved.

Prospects CRM

Owner / User

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Prospects CRM owner IDs are resolved by email match against Twenty Workspace Members. FlitStack generates a pre-migration user map: any Prospects owner with a matching email in Twenty becomes that WorkspaceMember's Opportunities and People records. Owners without a Twenty account are flagged before migration — teams either invite them to the Twenty workspace first or assign records to a fallback WorkspaceMember. This step must complete before Opportunity migration because OwnerId is required on Opportunity records.

Prospects CRM

Custom Object (Prospects Enterprise)

maps to

Twenty CRM

Custom Object (Twenty)

1:1
Fully supported

Prospects CRM custom objects (available on higher tiers) map 1:1 to Twenty's custom objects. Custom object definitions (name, fields, types) are extracted from Prospects CRM's schema export and recreated in Twenty via Settings → Data Model → Objects. Custom-object associations that use a many-to-many model in Prospects require a junction object in Twenty — FlitStack surfaces this in the migration plan before the run commits.

Prospects CRM

Attachment / File

maps to

Twenty CRM

File (via URL or external storage)

1:1
Fully supported

Prospects CRM file attachments on records (documents, images, PDFs) have no native file storage in Twenty CRM. FlitStack downloads attachments from Prospects, re-uploads them to a destination storage location (S3-compatible bucket or Twenty's file attachments feature if available), and stores the file URL as a custom field on the linked record. Teams using Prospects' native file viewer will need to access files via the stored URL after migration.

Prospects CRM

Workflow / Automation (Prospects)

maps to

Twenty CRM

Workflow (Twenty)

1:1
Fully supported

Prospects CRM workflows and automation rules are not migratable to Twenty CRM. These must be rebuilt manually in Twenty's workflow builder. FlitStack exports Prospects workflow definitions as a structured reference document listing each rule's trigger, conditions, and actions — this document is delivered alongside the migration and serves as the rebuild brief for the Twenty admin. Views and permissions are similarly not migratable and must be reconfigured in Twenty's workspace settings.

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.

Prospects CRM logo

Prospects CRM gotchas

High

Inventory integrations must be active before migration scoping

Medium

Magic Matrix and RFM scores require manual reconfiguration in destination

Medium

Pipeline stage names are customer-defined and non-standard

Low

Historical order data structure varies with connected accounting platforms

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 all fields pre-created before CSV import — unlike some CRMs with auto-field creation

    Twenty's CSV import (Settings → Import records) creates records but not fields. If a Prospects CRM custom field has no matching Twenty field, its data is silently skipped during import. This catches migration teams off guard. FlitStack addresses this by generating a complete Twenty field-creation checklist during the audit phase — every Prospects custom field is listed with its type, and the matching Twenty field is pre-created before data lands. Admins should run through this checklist at Settings → Data Model → [Object] before migration day so no field is missed.

  • Twenty's 20,000-record export cap requires batched extraction for large Prospects CRM datasets

    Twenty CRM caps CSV exports at 20,000 records per operation — a hard limit on the Export view function. Prospects CRM datasets with more than 20,000 records (across People, Companies, Opportunities, or Notes) require batched extraction: either multiple filtered export views or API-based pagination. FlitStack handles this automatically by querying Prospects CRM's API directly rather than relying on UI-based exports, ensuring all records are extracted regardless of volume. For the Twenty side, the same batch logic applies to any post-migration data verification exports.

  • Prospects CRM's stock-inventory model has no equivalent in Twenty CRM — inventory links become orphaned references

    Prospects CRM's defining feature is its stock-aware layer linking Deals and Companies to live inventory counts from Unleashed, Katana, Cin7, Xero, Sage 50, and similar platforms. Twenty CRM has no native inventory or stock model — there is no object, field type, or integration primitive that represents stock-on-hand or supplier lead times. Inventory link fields from Prospects CRM are preserved as text custom fields in Twenty (storing the integration name and reference ID), but they are non-functional dead links unless the team rebuilds the inventory integration via Twenty's REST or GraphQL API. This is a fundamental architectural difference that should be addressed in the migration scope before committing.

  • Import order constraint (Companies → People → Opportunities) can orphan contacts without a company

    Twenty's import order documentation is explicit: Companies must be imported first, then People (linked to Companies via companyId), then Opportunities. Prospects CRM allows Contacts without a primary Company — contacts created from inbound form submissions, trade shows, or cold outreach often have no company association. When migrating to Twenty, these unassociated Contacts require either a default 'Unassigned Company' placeholder record to be created first, or a decision to leave them unmapped. FlitStack surfaces this during audit and offers three options: create a default company record, map them to a custom 'Individual' company type, or exclude them from migration with a full count disclosed before cutover.

  • Twenty Pro tier API rate limit (100 calls/minute) can throttle large migrations without batch logic

    Twenty Pro tier enforces 100 API calls per minute; Organization tier allows 200 calls per minute. Prospects CRM to Twenty migrations with 50,000+ records and multiple object types can generate hundreds of individual API calls during the delta-pickup phase, risking rate-limit 429 responses that pause the migration mid-run. FlitStack implements exponential-backoff retry logic and batched mutation calls (grouping multiple record creates into single API requests where Twenty's schema allows) to stay within the rate limit. For datasets above 200,000 records, FlitStack recommends the Organization tier for its higher rate ceiling, or schedules migration runs during off-peak hours.

Migration approach

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

  1. Audit Prospects CRM schema and build Twenty field-creation checklist

    FlitStack runs a full schema extraction from Prospects CRM: all standard and custom objects, fields, pick-list values, and relationship definitions. We cross-reference this against Twenty's Data Model to identify gaps — fields that exist in Prospects but have no Twenty equivalent get added to a pre-migration checklist. This checklist is delivered as a step-by-step guide for creating each field at Settings → Data Model in Twenty before any data is moved. No records are migrated until the checklist is confirmed complete, preventing the silent-skip issue where unmapped fields are silently dropped during import.

  2. Resolve Prospects owners and invite Twenty Workspace Members

    FlitStack extracts all owner IDs from Prospects CRM and matches them against Twenty Workspace Members by email address. Any owner with a matching Twenty account is pre-mapped. Owners without a Twenty account are flagged in a pre-migration report — the team must invite them to the Twenty workspace and wait for acceptance before the migration runs, because Opportunities in Twenty require a workspaceMemberId on every record. A fallback owner (admin account) is assigned to any record where the owner cannot be resolved, and this is documented in the migration report.

  3. Run test migration with field-level diff on 100–500 representative records

    A representative slice of Prospects CRM data — spanning Contacts, Companies, Opportunities, and a sample of activity records — is migrated to Twenty in a test run before the full dataset commits. FlitStack generates a field-level diff report showing each mapped field, the source value in Prospects, and the resulting value in Twenty. This report is reviewed jointly with the customer to verify stage mappings, custom field translations, companyId resolutions, and owner assignments. Any corrections to the mapping logic are applied before the production migration run. The test migration also validates that the import-order constraint (Companies → People → Opportunities) handles any orphaned records correctly.

  4. Execute full migration in sequence (Companies → People → Opportunities → Activities)

    The production migration runs in Four deliberate steps. Step one migrates all Companies (the 'one' side of all relationships) so their Twenty IDs are available for linking. Step two migrates People with companyId references resolved against the migrated Company IDs. Step three migrates Opportunities with companyId and any personId links resolved from the previous steps. Step four migrates Tasks, Events, Notes, and custom object records. Each step waits for the previous step's validation to complete before starting. FlitStack tracks record counts and error rates at each step and pauses the run if error rates exceed the agreed threshold (default 0.5%) so the team can investigate before continuing.

  5. Delta-pickup window and post-migration audit log

    After the full migration commit, a delta-pickup window of 24–48 hours captures any Prospects CRM records modified during the cutover — new contacts created by in-flight web forms, deal stage changes from active sales calls, or new notes added by reps during the transition. FlitStack re-runs a targeted migration for records where the Prospects updatedAt timestamp is newer than the initial migration cutoff. An audit log is delivered listing every record created, updated, or skipped during the migration, with the before/after values for changed fields. One-click rollback is available for 72 hours after cutover if reconciliation against Prospects reveals unexpected gaps.

Platform deep dives

Context on both ends of the pair

Prospects CRM logo

Prospects CRM

Source

Strengths

  • Tight integration with back-office inventory platforms eliminates double-entry and phantom quoting.
  • Magic Matrix scoring gives sales managers a built-in prioritisation lens without additional configuration.
  • Strong rating across G2, Trustpilot, Capterra, and GetApp indicates consistent product-market fit for its niche.
  • Seamless Xero and QuickBooks Online sync means financial data stays current without manual reconciliation.
  • Real-time inventory data in quotes builds customer trust by preventing out-of-stock promises.

Weaknesses

  • Marketing automation is deliberately limited, pushing teams with campaign needs to a separate platform.
  • Connectivity issues and CRM stability concerns appear in reviews, particularly under load.
  • Feature set is narrower than broad CRMs, which can constrain teams that grow beyond pure sales workflows.
  • Limited API documentation makes custom integration work harder to plan and execute.
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 Prospects 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

    Prospects CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Prospects CRM to Twenty CRM migrations complete in 48–72 hours of clock time for datasets under 50,000 total records. Larger setups with 500,000+ records or multiple custom objects extend to 5–10 days. The longest planning step is creating the matching Twenty fields at Settings → Data Model — FlitStack delivers the field-creation checklist during audit so this is completed before migration day, not during it. The import-order validation (ensuring orphaned contacts without companies are handled) also requires customer input before the production run commits.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Prospects 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