CRM migration
Field-level mapping, validation, and rollback between Ringy (formerly iSales) and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Ringy (formerly iSales)
Source
Twenty CRM
Destination
Compatibility
5 of 10
objects map 1:1 between Ringy (formerly iSales) and Twenty CRM.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Ringy (formerly iSales) to Twenty CRM is a migration from a closed, communications-first SaaS tool to an open-source CRM with a flexible data model. Ringy has no documented public API, so all data extraction relies on the UI-based CSV export for Leads — the only object with a formal export path. Companies, Deals, and Activities are extracted as embedded data within that Lead export. Twenty CRM accepts bulk imports via CSV with a documented REST API for programmatic access. We pre-create custom fields in Twenty before import, audit the auto-block keyword list to identify records that may have been filtered from exports, and resolve Ringy Owner email addresses against Twenty workspace Members. Drip campaigns, automation sequences, call logs, SMS threads, and file attachments do not migrate; we deliver a written campaign inventory and a workflow handoff document for the customer's admin to 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 Ringy (formerly iSales) 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.
Ringy (formerly iSales)
Lead
Twenty CRM
People
1:1Ringy's Lead is the primary record object and the only object with a documented CSV export path. We extract all Lead fields including name, phone, email, address, and custom properties via the 'Include all custom fields' checkbox. The Lead CSV rows map directly to Twenty People records. We use email as the dedupe key. Any Lead without an email address is held in a reconciliation queue and imported as a People record with a manual-email flag set.
Ringy (formerly iSales)
Company (embedded in Lead export)
Twenty CRM
Company
1:manyCompany data in Ringy appears as inline fields within Lead export rows rather than as a separate object. If a Ringy Lead has a populated company name, we extract it and create a Twenty Company record, then link the People record to that Company via the WorkWith field. Multiple Leads with the same company name resolve to a single Twenty Company record.
Ringy (formerly iSales)
Deal (linked to Lead)
Twenty CRM
Opportunity
1:manyRingy Deals are associated with Leads and appear in the Lead CSV export when Deal filtering is applied. Each Deal maps to a Twenty Opportunity. We pre-create the Opportunity in Twenty with the linked People as the Contact and the Company as the AccountWorkedOn. Pipeline stage names from Ringy migrate as Opportunity stage values in Twenty.
Ringy (formerly iSales)
Lead Status / Stage
Twenty CRM
Opportunity Stage
lossyRingy deal stages (e.g., New, Contacted, Proposal, Won, Lost) map to Twenty Opportunity stage values. We capture the stage names from Ringy's pipeline configuration during discovery and create the corresponding stage values in Twenty before any Opportunity import begins.
Ringy (formerly iSales)
Activity: Call (in Lead history)
Twenty CRM
Note or Task
1:1Call disposition data attached to a Lead in Ringy migrates to a Twenty Note linked to the People record. Ringy stores call metadata (date, duration, disposition) as activity history within the Lead record. We extract these as structured Note records with a call-type tag for timeline visibility. Detailed call logs and recording URLs are not available via Ringy's export and do not migrate.
Ringy (formerly iSales)
Activity: Email (in Lead history)
Twenty CRM
Note
1:1Email activity history attached to a Lead in Ringy migrates to a Twenty Note record linked to the People record. We preserve the email timestamp, subject, and body content. Email engagement metadata (opens, clicks) that lives in Ringy's drip analytics is not available via export and does not migrate.
Ringy (formerly iSales)
Activity: SMS (in Lead history)
Twenty CRM
Note
1:1SMS activity that appears in the Lead activity timeline migrates as a Note record with an sms tag. The full SMS conversation thread content is not available via Ringy's export and does not migrate as threaded conversation history.
Ringy (formerly iSales)
Custom Fields (Lead)
Twenty CRM
Custom Fields (People, Company, Opportunity)
lossyRingy custom fields on Leads must be explicitly included via the 'Include all custom fields' checkbox during export. We map each custom field to a corresponding Twenty custom field, pre-creating the field in Twenty Settings → Data Model before import. Custom field data types (text, number, date, picklist) require mapping to Twenty's supported field types. Any custom field not included in the export checkbox is not recoverable after extraction.
Ringy (formerly iSales)
Tag
Twenty CRM
Multi-Select Picklist
lossyTags applied to Ringy Lead records are extracted from the CSV export rows where present. Tags migrate to Twenty as multi-select picklist fields on the People object. The customer chooses which tag taxonomy maps to which field during scoping.
Ringy (formerly iSales)
Owner
Twenty CRM
User (Member)
1:1Ringy Owner email addresses are extracted from Lead, Company, and Deal records. We match by email against Twenty workspace Members. Owners without a matching Twenty User are held in a reconciliation queue. The customer provisions any missing Twenty users before record import resumes because OwnerId references are required on Opportunity and People records.
| Ringy (formerly iSales) | Twenty CRM | Compatibility | |
|---|---|---|---|
| Lead | People1:1 | Fully supported | |
| Company (embedded in Lead export) | Company1:many | Fully supported | |
| Deal (linked to Lead) | Opportunity1:many | Fully supported | |
| Lead Status / Stage | Opportunity Stagelossy | Fully supported | |
| Activity: Call (in Lead history) | Note or Task1:1 | Fully supported | |
| Activity: Email (in Lead history) | Note1:1 | Fully supported | |
| Activity: SMS (in Lead history) | Note1:1 | Fully supported | |
| Custom Fields (Lead) | Custom Fields (People, Company, Opportunity)lossy | Fully supported | |
| Tag | Multi-Select Picklistlossy | Fully supported | |
| Owner | User (Member)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.
Ringy (formerly iSales) gotchas
Usage-based billing for calling and texting is not obvious
No public API — all data extraction is CSV-only via the UI
Auto-block keyword feature silently filters records from exports
Drip campaign and automation logic cannot be exported
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 CSV extraction scoping
We audit the Ringy account across Leads, Companies, Deals, and activity history volume. We verify the 'Include all custom fields' checkbox is available in the export UI, establish the current auto-block keyword list, and determine the export splitting strategy if the dataset exceeds a single CSV session. We also extract Owner email addresses for Member reconciliation against Twenty. The discovery output is a written migration scope, export pass plan, and a preliminary data model map showing which Ringy fields map to which Twenty fields.
Twenty workspace preparation
We configure the Twenty workspace before any data import. This includes creating all custom fields (mapped from Ringy custom properties), setting up Opportunity stage values (mapped from Ringy pipeline stages), creating any custom objects if the customer's data model requires them, and verifying that all Members are invited and have accepted their invitations. We use Twenty's Settings → Data Model UI to pre-create fields so that the CSV import wizard recognizes column headers during load.
CSV export and data quality pass
We coordinate with the customer to run the Lead CSV export from Ringy's UI, ensuring the 'Include all custom fields' checkbox is selected and that filtering captures Companies and Deals where applicable. We then run a data quality pass: deduping by email, standardizing phone number formats, resolving blank required fields, and flagging any records affected by the auto-block audit. Records with missing required fields are held in a remediation queue rather than loaded and then rejected.
Twenty bulk import in dependency order
We load data into Twenty in record-dependency order: Companies first (from Ringy Company fields embedded in Lead rows), then People (from Ringy Leads), then Opportunities (from Ringy Deals, with People and Company lookups resolved). Activity history (call, email, SMS notes) loads as Note records linked to the People records. Each phase emits a row-count reconciliation report showing records loaded versus records in the source CSV. Any records rejected during import are logged with the rejection reason and returned to the remediation queue.
Owner reconciliation and User mapping
We resolve Ringy Owner email addresses against Twenty workspace Members. Any Owner without a matching Twenty Member goes to a reconciliation queue for the customer to provision. Once all Owner references are satisfied, we run a final pass to assign OwnerId on all imported Opportunities and People records.
Cutover, validation, and campaign handoff
We freeze Ringy writes during cutover, run a delta migration of any records modified during the migration window, then enable Twenty as the system of record. We deliver the drip campaign inventory document to the customer's admin team for rebuild planning. We do not rebuild Ringy drip campaigns, automations, or workflows in Twenty; that is a separate engagement or an internal admin task. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team.
Platform deep dives
Ringy (formerly iSales)
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 5 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Ringy (formerly iSales) and Twenty CRM.
Object compatibility
5 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
Ringy (formerly iSales): Not publicly documented.
Data volume sensitivity
Ringy (formerly iSales) 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 Ringy (formerly iSales) to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Ringy (formerly iSales) 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 Ringy (formerly iSales)
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.