CRM migration
Field-level mapping, validation, and rollback between Getfly CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Getfly CRM
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between Getfly CRM and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Getfly CRM to Twenty CRM is a structural migration that also represents a shift from a Vietnam-centric all-in-one CRM to a self-hosted, open-source platform with a modern data model. Getfly uses a unified Account object that combines organization and person records; Twenty separates these into Company and People objects, requiring a deliberate split design before migration begins. We discover Getfly's custom field schemas by sampling Product and Account records during export (supplemented by a customer-provided field audit), pre-create all fields in Twenty's Data Model before CSV import, and resolve owner references using email-based lookup. Workflow automations built inside Getfly do not export via API and must be rebuilt as Twenty workflows post-migration. PABX call recording URLs are time-limited signed links; we download recordings at export time and re-upload to Twenty to prevent broken links after cutover. Historical activities, pipeline stage configurations, and product catalogs migrate fully. Reports, dashboards, and automations are documented for manual rebuild in Twenty.
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 Getfly 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.
Getfly CRM
Account (Customer)
Twenty CRM
Company and People (split required)
1:manyGetfly Accounts combine organization-level fields (company name, address, phone) and person-level fields (contact name, email, title) in a single object. We split Getfly Accounts into Twenty's Company and People objects at migration time. The organization-level fields from Getfly populate the Twenty Company record; the person-level fields populate a linked People record. We create the Company first, then create the People record with a link to the Company via the personCompanyId field. A custom field original_getfly_account_id__c on both Company and People preserves the source record ID for reconciliation.
Getfly CRM
Product
Twenty CRM
Product (Custom Object)
1:1Getfly Products with SKU, pricing, and custom fields migrate to Twenty's custom object capability. We create a Product custom object in Twenty's Settings → Data Model before import, defining fields that match the Getfly Product schema (name, price, sku, and any custom fields). Getfly's detail_custom_fields nested object is flattened into scalar columns. The CSV import creates records in the custom object; all field types (text, number, dropdown, date) are pre-defined to avoid import errors.
Getfly CRM
Pipeline Stage
Twenty CRM
Opportunity Stage
lossyGetfly organizes Deals into configurable pipeline stages that are customer-specific. We extract the full stage configuration from Getfly (stage name, order, probability percentage) during export and map each stage to a Twenty Opportunity stage value. Twenty's opportunity model uses a simple stage field; we configure stage values in Twenty's settings to match the Getfly pipeline structure before importing Opportunities.
Getfly CRM
Deal
Twenty CRM
Opportunity
1:1Getfly Deals map directly to Twenty Opportunities. We map the Getfly deal name to Opportunity name, deal amount to Opportunity amount, stage to the configured Opportunity stage, and pipeline assignment to a Twenty workspace pipeline identifier. Closed-Lost and Closed-Won reason fields from Getfly custom properties become Opportunity custom fields in Twenty.
Getfly CRM
Activity (Task/Call/Meeting)
Twenty CRM
Task
1:1Getfly Activities (tasks, calls, meetings) map to Twenty Tasks. Activity type (task, call, meeting) is preserved in a custom Task field activity_type__c. Activity date and duration transfer directly. Owner assignment resolves via email-based lookup against the Twenty workspace user table. Activities linked to Getfly Accounts resolve to the corresponding Twenty Company and People records created during the Account split phase.
Getfly CRM
User (Owner)
Twenty CRM
User
1:1Getfly Users acting as record owners are resolved by email match against Twenty workspace members. We export the full user roster during scoping and match against Twenty users before record import begins. Any Getfly owner without a matching Twenty user is placed in a reconciliation queue for the customer to provision before that phase of migration resumes. Active versus inactive status is preserved in a custom field original_getfly_owner_status__c.
Getfly CRM
Attachment
Twenty CRM
Attachment (Custom Object or Note)
1:1Getfly attachments referenced by URL are downloaded to local storage during export and re-uploaded to Twenty. We use Twenty's attachment support to re-associate files with the correct Company, People, or Opportunity record. Original filename and URL reference are preserved in a custom field original_attachment_url__c for audit purposes.
Getfly CRM
Campaign
Twenty CRM
Task or Custom Object
1:1Getfly marketing campaigns (name, start/end dates, linked accounts) migrate to Twenty as a custom Campaign object or as tagged Task records depending on the customer's intended use. Campaign membership (which Getfly Accounts were contacted) migrates as tagged Company records with a campaign identifier field. The customer chooses the campaign strategy during scoping.
Getfly CRM
Custom Field
Twenty CRM
Custom Field (on relevant object)
lossyGetfly custom fields on Accounts and Products are discovered by sampling Product and Account records during export. Because Getfly has no public field schema registry endpoint, we supplement API sampling with a customer-completed field audit questionnaire run from Getfly's admin panel before migration kickoff. All confirmed custom fields are pre-created in Twenty's Settings → Data Model with type-compatible field definitions before any CSV import begins.
Getfly CRM
Workflow Automation
Twenty CRM
Workflow (manual rebuild required)
1:1Getfly Workflow automations are stored as internal platform configuration with no public export endpoint. They do not migrate via API. We deliver a written inventory of every active Getfly Workflow with its trigger conditions, actions, and recommended Twenty workflow equivalent during the post-migration handoff. The customer's admin rebuilds automations in Twenty post-migration. This is documented scope, not migrated scope.
| Getfly CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Account (Customer) | Company and People (split required)1:many | Fully supported | |
| Product | Product (Custom Object)1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Activity (Task/Call/Meeting) | Task1:1 | Fully supported | |
| User (Owner) | User1:1 | Fully supported | |
| Attachment | Attachment (Custom Object or Note)1:1 | Fully supported | |
| Campaign | Task or Custom Object1:1 | Fully supported | |
| Custom Field | Custom Field (on relevant object)lossy | Fully supported | |
| Workflow Automation | Workflow (manual rebuild required)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.
Getfly CRM gotchas
Workflow automations are not exportable via API
API requires X-API-KEY with subdomain-scoped access
Custom field schemas vary per customer with no registry endpoint
PABX call recordings are URL-referenced only
No public pricing page requires direct sales inquiry
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
Discovery and field audit
We audit the source Getfly account via API using the X-API-KEY: sampling Products, Accounts, Deals, and Activities to build an initial field schema. We request the API key during scoping. We supply a field audit questionnaire that the customer completes from Getfly's admin panel to capture any custom fields not visible in API sampling. We also document pipeline stage names, owner roster, and active workflow list during this phase. The discovery output is a written migration scope including the Account-to-Company/People split design and a custom field registry for Twenty pre-creation.
Twenty workspace setup and schema pre-creation
We create all required custom objects and custom fields in Twenty's Settings → Data Model before any CSV import begins. This includes the Product custom object (with fields matching Getfly Product schema), Opportunity stage values (matching Getfly pipeline stages), and any custom fields on Company and People objects. We invite all expected workspace users so that owner email lookups resolve during import. If the customer plans to self-host Twenty, we confirm the deployment is complete and accessible before proceeding.
CSV export sequencing and data transformation
We export Getfly data in dependency order: Products first (no dependencies), then Accounts (split to Company and People), then Deals (resolving Company and People IDs), then Activities (resolving owner email matches and parent record IDs). Each export produces a type-checked CSV. We transform Getfly date formats, phone number formats, and currency values to match Twenty's expected input. The Account split transform runs as a pre-processing step before CSV generation, generating two CSV files (Company and People) from the single Account export.
Staged CSV import with reconciliation
We run Twenty imports in dependency order matching the export sequence: Products, Companies, People, Opportunities, Tasks. Each phase emits a row-count and error-rate report. We reconcile row counts against the source Getfly export totals. Any rejected rows are diagnosed (missing required field, invalid field type, unknown picklist value) and corrected before the next phase. Owner email lookups that fail to match are held in a queue for the customer to provision those users in Twenty before resuming.
Attachment and recording download and re-upload
We download all Getfly-attached files and call recordings to local storage during the export phase. After the primary record migration is validated, we re-upload attachments to Twenty, associating each file with the correct Company, People, or Opportunity record. Recording URLs are validated before re-upload to confirm they have not expired; any expired URLs are flagged for the customer's attention with a note about the PABX subscription status.
Cutover, delta sync, and workflow handoff
We freeze Getfly writes during the cutover window, run a final delta export of any records modified since the initial export, apply the delta to Twenty, and confirm record counts match. We deliver the workflow automation inventory document to the customer's admin team. We support a one-week hypercare window for reconciliation issues raised by the team. Workflows, automations, and views are documented for manual rebuild in Twenty; this is scope outside the data migration and is not handled as an automated transfer.
Platform deep dives
Getfly CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Getfly CRM and Twenty CRM.
Object compatibility
2 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
Getfly CRM: Not publicly documented — direct inquiry to Getfly engineering required.
Data volume sensitivity
Getfly 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 Getfly CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Getfly 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 Getfly 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.