CRM migration
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
Source
Twenty CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Prospects CRM and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
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.
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 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
Twenty CRM
People
1:1Prospects 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)
Twenty CRM
People (custom fields)
1:1Prospects 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
Twenty CRM
Company
1:1Prospects 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)
Twenty CRM
Company (custom fields)
1:1Prospects 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
Twenty CRM
Opportunity
1:1Prospects 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
Twenty CRM
Opportunity stage
1:1Prospects 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)
Twenty CRM
Opportunity (custom fields)
1:1Prospects 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)
Twenty CRM
Task / Event / Note
1:1Prospects 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
Twenty CRM
WorkspaceMember
1:1Prospects 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)
Twenty CRM
Custom Object (Twenty)
1:1Prospects 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
Twenty CRM
File (via URL or external storage)
1:1Prospects 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)
Twenty CRM
Workflow (Twenty)
1:1Prospects 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.
| Prospects CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Contact (custom fields) | People (custom fields)1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Company (inventory link fields) | Company (custom fields)1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Deal stage / pipeline | Opportunity stage1:1 | Fully supported | |
| Deal (custom fields) | Opportunity (custom fields)1:1 | Fully supported | |
| Activity (call, email, meeting, note) | Task / Event / Note1:1 | Fully supported | |
| Owner / User | WorkspaceMember1:1 | Fully supported | |
| Custom Object (Prospects Enterprise) | Custom Object (Twenty)1:1 | Fully supported | |
| Attachment / File | File (via URL or external storage)1:1 | Fully supported | |
| Workflow / Automation (Prospects) | Workflow (Twenty)1: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.
Prospects CRM gotchas
Inventory integrations must be active before migration scoping
Magic Matrix and RFM scores require manual reconfiguration in destination
Pipeline stage names are customer-defined and non-standard
Historical order data structure varies with connected accounting platforms
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
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.
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.
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.
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.
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
Prospects CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Prospects CRM and Twenty CRM.
Object compatibility
3 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
Prospects CRM: Not publicly documented.
Data volume sensitivity
Prospects CRM 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 Prospects CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Prospects CRM
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.