CRM migration

Migrate from Ontraport to Twenty CRM

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

Ontraport logo

Ontraport

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

83%

10 of 12

objects map 1:1 between Ontraport and Twenty CRM.

Complexity

CModerate

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Ontraport to Twenty CRM is a structural shift from an all-in-one marketing automation suite to a self-hostable, open-source CRM. Ontraport's contact-based pricing and bundled automation tools contrast with Twenty's per-user model and developer-first API. We extract Ontraport Contact, Company, Deal, Tag, Note, Custom Object, and engagement records via Ontraport's REST API with looped individual calls (Ontraport has no bulk export API), deduplicate the Notes CSV output (each Note generates a full Contact row), and import into Twenty's pre-created schema. Ontraport Automation Rules, Sequences, and Campaigns cannot be exported as structured data; we deliver a written trigger-and-condition inventory for the customer's admin to rebuild in Twenty Workflows. Membership site content, landing pages, and invoice records migrate as structured data only — page content requires separate export and rebuild.

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

Ontraport logo

Ontraport

What's pushing teams away

  • Ontraport's contact-based billing model creates unpredictable costs — overages on Basic and Plus tiers add up quickly for lists above the stated limits, with reports of $600/month for ~43k contacts.
  • The learning curve for automation triggers, contact grouping, and campaign logic is steep; users consistently describe these features as confusing despite Ontraport's support resources.
  • Deliverability has declined over time according to long-term users, with deliverability problems even affecting technical users who manage their own sending infrastructure.
  • Landing page builder is limited for visually complex designs — graphic-heavy pages and custom domains require workarounds that frustrate designers and developers.
  • Grandfathered pricing has been removed for longtime users, with sudden price increases of $80+/month cited as a trigger to evaluate alternatives.

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

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

Ontraport

Contact

maps to

Twenty CRM

People

1:1
Fully supported

Ontraport Contact records map directly to Twenty People. All standard fields (First Name, Last Name, Email, Phone, Address) migrate 1:1. Custom contact properties map to Twenty custom fields which must be pre-created in Settings → Data Model before CSV import. Lifecycle stages from Ontraport migrate as a custom text or select field since Twenty does not have a native lifecycle stage object. Owner resolution is by email match against Twenty Members.

Ontraport

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Ontraport Company records map to Twenty Company. The Company name is the dedupe key. Ontraport does not enforce unique Company names, so we recommend deduping by domain or name normalization before import to avoid duplicate Company records in Twenty. Company records must import before People so that the People-to-Company relationship (Work Intelligence in Twenty) is satisfied at insert time.

Ontraport

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Ontraport Deal records map to Twenty Opportunity. Pipeline ID and stage from Ontraport map to Twenty's Opportunity pipeline and stage. We create Twenty pipeline stages matching Ontraport stage names and probabilities before importing Deals. Deal amount, close date, owner, and Contact or Company association migrate directly. Closed-won and Closed-lost status maps to the equivalent Twenty stage.

Ontraport

Tag

maps to

Twenty CRM

Tag

lossy
Fully supported

Ontraport Tags are flat plain-text values applied to Contacts. We export tag assignments per Contact and apply them as a custom Tags field in Twenty People (stored as comma-separated text or as a tag-relation table depending on the customer's preference). Tags do not carry automation trigger logic to Twenty since Ontraport Automation Rules are not exportable; tags migrate as data labels only.

Ontraport

Note

maps to

Twenty CRM

Note

1:1
Fully supported

Ontraport Notes linked to Contacts must be deduplicated before import because Ontraport's CSV export repeats the full Contact row for each Note attached to it. We deduplicate these rows post-export, extracting each Note body and associating it with the single correct Contact record. Notes then migrate to Twenty Note records linked via the standard note-relation to the correct People record.

Ontraport

Automation Rule

maps to

Twenty CRM

Workflow

1:1
Fully supported

Ontraport Automation Rules cannot be exported as structured automation code. We extract the trigger definitions, enrolled Contact counts, and rule names as a written inventory document for the customer's admin to reference when rebuilding in Twenty Workflows. This is an inventory handoff, not a data migration — the automation logic itself must be redesigned from scratch in Twenty.

Ontraport

Sequence

maps to

Twenty CRM

Workflow

1:1
Fully supported

Ontraport Sequences (legacy timed step sequences) export as step definitions and enrollment data but the cadence logic cannot be imported. We document the sequence steps, enrollment dates, and Contact assignments in a written inventory for rebuild in Twenty Workflows. Email templates used within sequences migrate as text content only; HTML template structure requires rebuild.

Ontraport

Campaign

maps to

Twenty CRM

Custom Object or Tag

lossy
Fully supported

Ontraport Campaign assignments and engagement metrics (opens, clicks, unsubscribes per Contact) migrate as structured data attached to the Contact record. Campaign configuration and email content do not migrate. If the customer has multiple active campaigns, we recommend creating a Campaign custom object in Twenty and linking People to it via a relationship table, preserving the campaign assignment history.

Ontraport

Invoice and Transaction

maps to

Twenty CRM

Custom Object (Invoice)

1:1
Fully supported

Ontraport Invoice records with line items, payment status, and product associations migrate as a custom Invoice object in Twenty. Payment status, total amount, and Contact linkage transfer. We create the Invoice custom object with fields for amount, status, date, and related Contact lookup before import. Invoice PDF attachments migrate as file links if stored externally; Ontraport-hosted PDFs require separate export.

Ontraport

Custom Object

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Ontraport custom objects (Pets, Courses, Memberships, etc.) with custom fields and Contact or Company relationships migrate to identically named Twenty custom objects. We pre-create the destination custom object schema in Twenty Settings → Data Model, including all custom fields and lookup relationships, before any records load. Relationship IDs in Ontraport must be resolved to Twenty People or Company IDs during the transform phase.

Ontraport

Membership and Course

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Ontraport Membership and Course content objects with subscriber enrollment lists migrate as custom objects in Twenty. We export content titles, descriptions, and subscriber lists with enrollment dates. Actual course content (video, HTML pages, files) requires separate export from Ontraport since page structures are not exportable in structured form. Enrollment dates and subscription status transfer as structured data.

Ontraport

Task

maps to

Twenty CRM

Task

1:1
Fully supported

Ontraport Tasks assigned to Contacts or Deals with due dates and completion status migrate to Twenty Task records. Task title, body, due date, completion status, and owner migrate directly. Owner resolution is by email match against Twenty Members. Tasks must import after People and Opportunities so that the related record lookups are satisfied at insert time.

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.

Ontraport logo

Ontraport gotchas

Medium

Export history auto-deletes after 60 days

High

Contact overages trigger billing changes on Basic and Plus plans

Medium

SMS costs accrue before the daily limit pause applies

High

Automation logic cannot be exported or imported

Low

Notes export duplicates Contact records

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

  • Ontraport Automation Rules cannot be exported

    Ontraport's Automation Rules, Sequences, and Campaign logic are stored in a proprietary format that does not export as structured data. We extract trigger definitions, enrolled Contact counts, and rule names as a written inventory document, but the automation workflows themselves must be rebuilt from scratch in Twenty Workflows. This is the most significant gap in any Ontraport migration. Plan two to four weeks for your admin to review the automation inventory and rebuild critical sequences in Twenty Workflows before going live.

  • Ontraport Notes CSV export duplicates Contact rows

    When exporting Contacts with the 'include notes' option in Ontraport, each Note generates a separate CSV row that repeats the full Contact record. A Contact with three Notes produces three identical Contact rows with one Note in each. We deduplicate these rows post-export and re-link each Note to its single Contact record before importing into Twenty. Failure to deduplicate produces duplicate People records in Twenty with incomplete data.

  • Ontraport has no bulk export API

    Ontraport does not expose a bulk export endpoint. Migrations require looping individual REST API calls per record with undisclosed rate limits, which limits throughput compared to platforms with batch export endpoints. For accounts with over 50,000 Contacts, extraction alone can take multiple days. We scope extraction time separately and plan for extended API loop runs on large accounts.

  • Twenty requires fields created before CSV import

    Twenty's CSV import creates records, not fields. All custom fields referenced in the import file must exist in Twenty Settings → Data Model before the import runs. We create the complete field schema in Twenty before any data moves. If a custom field is missing, the import silently skips the field value rather than erroring, which can go unnoticed until QA.

  • Twenty requires Members before Owner references

    If your Ontraport data includes user references (Deal owner, Task assignee, etc.), those Twenty Members must exist before import begins. Otherwise, OwnerId and assignee lookups cannot be mapped. We extract all distinct Ontraport Owners and match by email against Twenty Members. Missing Users go to a reconciliation queue for your admin to provision before record import resumes.

Migration approach

Six steps for a successful Ontraport to Twenty CRM data migration

  1. Discovery and data audit

    We audit the Ontraport account across objects in scope: Contacts, Companies, Deals, Tags, Notes, Automation Rules, Sequences, Campaigns, Invoices, Custom Objects, Memberships, and Tasks. We extract record counts per object, identify custom field definitions, flag duplicate Company names for deduping, and estimate API extraction time based on record volume. We also confirm whether the 60-day Export History window still contains any historical exports that can supplement the live API pull. The discovery output is a written migration scope with object inventory and a Twenty workspace preparation checklist.

  2. Twenty workspace preparation

    We create the Twenty field schema before any data import. This includes creating custom fields for Ontraport custom properties, setting up the Opportunity pipeline and stage values matching Ontraport's deal stages, creating any custom objects (Invoice, Membership, Course) with their field definitions and lookups to People or Company, and inviting all team Members whose email addresses appear as Ontraport Owners. Twenty requires all fields to exist before CSV import — we validate this before moving to extraction.

  3. Ontraport data extraction via REST API

    We extract Ontraport data using individual REST API calls per record since no bulk export endpoint exists. We run extractions in dependency order: Companies first (for deduping), then Contacts, then Deals, then Tags and Notes, then Tasks, then Custom Objects. Notes are extracted separately to enable post-export deduplication. Automation Rule definitions are extracted as trigger-and-condition text for the written inventory. We handle undisclosed Ontraport rate limits with exponential backoff and batch delays to avoid 429 responses.

  4. Data transformation and deduplication

    We deduplicate Company records by domain or name normalization before import. We deduplicate Contact records produced by Notes export (repeating Contact rows with one Note each) by grouping on Contact ID and re-attaching Notes to the single correct Contact. We resolve Ontraport Owner emails to Twenty Member IDs for Deal, Task, and Note owner assignments. We transform Ontraport lifecycle stages to a custom field, map Deal pipeline and stage to Twenty Opportunity pipeline and stage, and build the relationship tables for Custom Object lookups to People or Company.

  5. Staging import and reconciliation

    We run a full migration into a Twenty staging environment (or a test workspace) using production-like data volume. The customer reconciles record counts (People in, Companies in, Opportunities in, Tasks in), spot-checks 25-50 records against the Ontraport source, and verifies that Notes, Tags, and custom field values appear correctly. Any field mapping corrections, missing custom fields, or Owner resolution gaps are fixed before production migration begins.

  6. Production migration and cutover

    We run production migration in record-dependency order: Companies, then People (with Company lookups resolved), then Opportunities (with Owner and Company lookups resolved), then Custom Objects, then Tasks, then Notes. We freeze new writes in Ontraport during the cutover window, run a final delta migration of any records modified during migration, then mark Twenty as the system of record. We deliver the Automation Rule and Sequence inventory document to the customer's admin. We do not rebuild Ontraport automations in Twenty Workflows; that is a separate rebuild engagement.

Platform deep dives

Context on both ends of the pair

Ontraport logo

Ontraport

Source

Strengths

  • Visual automation builder with triggers, conditions, and multi-step actions for non-technical users
  • Integrated payment processing including invoices, subscriptions, and transaction records in one account
  • Dedicated IP addresses for email sending with high sender reputation and strong deliverability
  • All-in-one platform combining CRM, email marketing, landing pages, and membership sites without third-party integrations
  • Responsive support team with chat, email, and screen-share options available seven days per week

Weaknesses

  • Contact-based billing creates unpredictable overage charges that scale faster than many teams expect
  • Steep learning curve for automation logic — triggers, grouping, and conditional steps confuse even experienced users
  • No publicly documented bulk export API — migrations require looping individual API calls which limits throughput
  • Landing page builder struggles with graphic-heavy layouts, pushing users toward external tools for complex designs
  • Grandfathered pricing no longer honored; longtime users report sudden and significant price increases
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. 4 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 Ontraport and Twenty CRM.

  • Object compatibility

    C

    4 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

    Ontraport: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Straightforward migrations under 15,000 Contacts, 3,000 Deals, and no custom objects land between three and five weeks. Migrations with custom objects, large engagement histories (over 200,000 activity records), or membership and course content as custom objects extend to seven to twelve weeks. Ontraport's lack of a bulk export API means large accounts spend more time in the extraction phase compared to platforms with batch endpoints, which is the primary variable affecting timeline.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Ontraport.
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