CRM migration

Migrate from Ringy (formerly iSales) to Twenty CRM

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) logo

Ringy (formerly iSales)

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

50%

5 of 10

objects map 1:1 between Ringy (formerly iSales) and Twenty CRM.

Complexity

CModerate

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Ringy (formerly iSales) logo

Ringy (formerly iSales)

What's pushing teams away

  • Pricing opacity and unpredictable usage costs — multiple reviewers report confusion about how charges for minutes and texts accumulate beyond included allowances.
  • Performance slowness and sluggishness — the iSales CRM system can be slow at times according to reviewers, which impacts daily productivity for high-volume users.
  • Auto-blocking behavior silently filters leads from the pipeline based on keywords without clear notification to the user, causing lost prospects.
  • Text message threading is difficult to follow in the interface, creating confusion for teams managing high volumes of inbound and outbound SMS conversations.
  • No documented public API means teams with complex integration needs or large data volumes hit walls that drive them toward platforms with better developer access.

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 Ringy (formerly iSales) objects map to Twenty CRM

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

maps to

Twenty CRM

People

1:1
Fully supported

Ringy'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)

maps to

Twenty CRM

Company

1:many
Fully supported

Company 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)

maps to

Twenty CRM

Opportunity

1:many
Fully supported

Ringy 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

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Ringy 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)

maps to

Twenty CRM

Note or Task

1:1
Fully supported

Call 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)

maps to

Twenty CRM

Note

1:1
Fully supported

Email 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)

maps to

Twenty CRM

Note

1:1
Fully supported

SMS 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)

maps to

Twenty CRM

Custom Fields (People, Company, Opportunity)

lossy
Fully supported

Ringy 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

maps to

Twenty CRM

Multi-Select Picklist

lossy
Fully supported

Tags 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

maps to

Twenty CRM

User (Member)

1:1
Fully supported

Ringy 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.

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.

Ringy (formerly iSales) logo

Ringy (formerly iSales) gotchas

High

Usage-based billing for calling and texting is not obvious

High

No public API — all data extraction is CSV-only via the UI

Medium

Auto-block keyword feature silently filters records from exports

Medium

Drip campaign and automation logic cannot be exported

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

  • CSV export is the only extraction path with no API

    Ringy has no documented public API, REST endpoint, or developer documentation for programmatic data access. Every migration relies on the 'Generate CSV' function inside the Lead export UI. This workflow requires a logged-in user session, cannot be automated headlessly, and may require splitting large exports by date range or filter criteria. We use this UI-based CSV export as the primary extraction method, which is viable for most datasets but requires manual coordination for very large exports. If your dataset exceeds what can be exported in a single CSV session, we coordinate multiple export passes with date-range filters.

  • Auto-blocked leads may be missing from exports

    Ringy's drip campaign system includes an auto-block feature that filters leads containing certain keywords from sequences and, in some cases, from the visible pipeline. Records that have been auto-blocked may not appear in CSV exports without explicit investigation. We audit the customer's auto-block keyword list during scoping and identify any blocked records that may have been excluded from the exported dataset before migration begins. We cannot recover records that were not exported; this is a data loss risk inherent to Ringy's auto-block behavior.

  • Twenty custom fields must exist before CSV import

    Twenty's CSV import wizard creates records but does not create fields. We pre-create all custom fields in Twenty Settings → Data Model — including custom fields for any Ringy custom properties, auto-block audit fields, and tag-based picklists — before any data import begins. This requires the customer to have a configured Twenty workspace with Members invited and accepted, because field-level permissions and user assignments are set during field creation.

  • Drip campaigns and automation sequences do not migrate

    Ringy drip campaigns, automated follow-up sequences, and SMS/email automation rules are stored as platform-native automation objects with no documented export API. Campaign structure, sequence logic, timing rules, and branching conditions cannot be extracted. We document the visible campaign structure — names, stages, associated templates — as reference metadata for the customer to use when rebuilding sequences in Twenty. Twenty has no native drip campaign or sequence automation feature; the customer rebuilds this capability using a third-party sales engagement tool or custom integration.

  • Call recordings, SMS threads, and attachments are not exported

    Ringy stores call recordings within its built-in VOIP softphone, SMS conversation threads within its messaging interface, and file attachments within Lead or Company records. None of these have a documented export path. Call disposition metadata (date, duration, outcome) migrates as structured Note records, but recording audio files, SMS message bodies, and attachment files do not migrate. We flag the absence of these data types during scoping and advise the customer to download any critical recordings or files manually before the migration window opens.

Migration approach

Six steps for a successful Ringy (formerly iSales) to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Ringy (formerly iSales) logo

Ringy (formerly iSales)

Source

Strengths

  • Integrated calling, SMS, and email in a single flat-rate CRM reduces tool sprawl for sales teams
  • Cloud VOIP softphone with local ID display and call scripting directly in the CRM workflow
  • Mobile app with full CRM access for field and remote sales representatives
  • Drip campaign and automated follow-up sequencing to nurture leads without manual intervention
  • Color-coded UI and straightforward navigation that reviewers consistently describe as easy to learn

Weaknesses

  • No publicly documented API — all data extraction relies on the UI-based CSV export for Leads
  • Pricing model with add-ons (power dialer, AI tools) and usage-based calling/texting creates bill shock for heavy users
  • Auto-block keyword feature silently filters leads from the pipeline without user notification
  • Performance reported as sluggish at times, particularly under high-volume usage scenarios
  • SMS thread interface is difficult to follow for teams managing high volumes of text conversations
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?

Moderate CRM migration. 5 of 8 objects need a mapping; the rest are 1:1.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Ringy (formerly iSales) and Twenty CRM.

  • Object compatibility

    C

    5 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

    Ringy (formerly iSales): Not publicly documented.

  • Data volume sensitivity

    B

    Ringy (formerly iSales) doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Ringy (formerly iSales) 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 Ringy (formerly iSales) to Twenty CRM data migrations

Answers to the questions buyers ask most during Ringy (formerly iSales) to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 10,000 Leads, 2,000 Companies, and 500 Deals with no custom objects and a clean export. Migrations with large activity histories (over 200,000 activity records), multiple custom field groups, or datasets requiring auto-block keyword auditing move to seven to eleven weeks because of CSV splitting for large exports, data quality remediation, and Twenty custom field pre-creation.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Ringy (formerly iSales).
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