CRM migration

Migrate from Apollo ERP to Twenty CRM

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

Apollo ERP logo

Apollo ERP

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

13 of 13

objects map 1:1 between Apollo ERP and Twenty CRM.

Complexity

BStandard

Timeline

72–96 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Apollo ERP operates as a sales intelligence and prospecting platform with a unified contact-account model: contacts live as person records linked to company records, with deals tracked as opportunities. Custom fields are supported across all three objects via Apollo's API (modality: contact, account, opportunity). Apollo's data export is available through CSV downloads and REST API with rate limits varying by plan (default 1000 enrichments per hour). Twenty CRM uses a distinct relational model: People (contacts), Companies (accounts), Opportunities (deals), Tasks (activities), and Notes (free-text records). Twenty imports data via CSV upload through its Command Menu (import_records), respecting an internal limit of 20,000 records per export. Relationships between objects must exist before referencing them — companies first, then people linked via companyId, then opportunities linked to both. We map Apollo contacts to Twenty People, Apollo companies to Twenty Companies, Apollo deals to Twenty Opportunities, and Apollo custom fields to Twenty custom fields created pre-import. Activity history (calls, emails) migrates as Twenty Tasks with original timestamps and owners. Because Twenty does not have native sequence or automation equivalents, Apollo sequences and workflow rules must be exported as documentation for manual rebuild in Twenty's workflow builder. The migration runs via API where volume permits, with CSV as the fallback for the Twenty import interface.

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

Apollo ERP logo

Apollo ERP

What's pushing teams away

  • Leave management module is reported to produce conflicts and inconsistencies, particularly around carry-forward rules and leave balance calculations.
  • Documentation and knowledge base articles are not kept current when system updates are released, forcing users to rely on support rather than self-service troubleshooting.
  • Outdated user interface and slow performance in certain workflows frustrate users accustomed to modern SaaS experiences.
  • Limited third-party integration ecosystem makes it difficult to connect Apollo ERP with best-of-breed tools for specific vertical needs.
  • Support response times and quality are inconsistent, particularly for complex configuration issues that require deep product knowledge.

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

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

Apollo ERP

Contact (person)

maps to

Twenty CRM

People

1:1
Fully supported

Apollo person records map 1:1 to Twenty People. Email, phone, job title, and name fields translate directly. Apollo's association labels (which contact belongs to which company) require resolution — if a contact has multiple companies, we map the most-recently-modified company as the primary companyId in Twenty, then surface the other associations as a custom relation or note.

Apollo ERP

Company (account)

maps to

Twenty CRM

Companies

1:1
Fully supported

Apollo company records map to Twenty Companies with direct field translation for name, domain, industry, employee count, and annual revenue. Parent-child company hierarchies in Apollo (if configured) map to Twenty's company relation field — the parent company must be migrated first to avoid circular reference errors.

Apollo ERP

Deal (opportunity)

maps to

Twenty CRM

Opportunities

1:1
Fully supported

Apollo deals map to Twenty Opportunities. The deal name becomes the Opportunity name, amount maps directly, close date maps to the expected close date field, and owner resolves by email match against Twenty workspace members. Pipeline stage values map via value-mapping to Twenty's Opportunity stage pick-list.

Apollo ERP

Deal Stage

maps to

Twenty CRM

Opportunities.stage

1:1
Fully supported

Apollo deal stage pick-list values map one-by-one to Twenty's Opportunity stage values. We read Apollo's stage labels and map each to a matching or closest Twenty stage name. If Twenty lacks a matching stage, we create it pre-import and configure probability per stage in Twenty settings before the migration runs.

Apollo ERP

Custom Field (contact modality)

maps to

Twenty CRM

People (custom field)

1:1
Fully supported

Apollo custom fields on contacts (created via POST /api/v1/fields with modality: contact) become Twenty custom fields on the People object. Field type mapping: string → text, textarea → text (long), number → number, date → date, datetime → date, boolean → select (true/false options). All custom fields must be created in Twenty Settings → Data Model before the CSV import begins.

Apollo ERP

Custom Field (company modality)

maps to

Twenty CRM

Companies (custom field)

1:1
Fully supported

Apollo company-level custom fields map to custom fields on the Twenty Companies object, following the same type-translation rules as contact custom fields. String, number, date, and boolean field types translate directly to their Twenty equivalents. Industry-standard fields such as annual revenue and employee count have native Twenty equivalents and do not require custom field creation. Fields unique to your Apollo setup must be created in Twenty Settings before migration runs.

Apollo ERP

Custom Field (deal modality)

maps to

Twenty CRM

Opportunities (custom field)

1:1
Fully supported

Apollo deal-level custom fields migrate to custom fields on Twenty Opportunities. Stage-entered timestamps from Apollo (stored as datetime custom fields) map to Twenty custom date fields. Probability fields map to custom number fields if not represented via Twenty's stage-level probability configuration.

Apollo ERP

Custom Object

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Apollo custom objects (if configured) map 1:1 to Twenty custom objects. We read the custom object schema via Apollo's API and create matching custom objects in Twenty's data model. Custom object relations that use N:N linking in Apollo require junction objects in Twenty — we surface these in the mapping plan before migration runs.

Apollo ERP

Email / Call / Meeting activity

maps to

Twenty CRM

Tasks

1:1
Fully supported

Apollo engagement logs (calls, emails, meetings) map to Twenty Tasks. Original timestamps, owners, and subject/body content are preserved. Task type (call, email, meeting) is stored as a custom select field on the Twenty Task if Twenty's standard Task type field is insufficient. Tasks are linked to the parent People record via Twenty's relation field.

Apollo ERP

Attachment / File

maps to

Twenty CRM

Notes / File

1:1
Fully supported

Apollo file attachments are not included in standard CSV exports. Files must be re-uploaded manually to Twenty or migrated via API. We provide a file inventory from Apollo's API and a step-by-step re-upload guide. This is disclosed honestly — attachments are not silently skipped without a remediation path.

Apollo ERP

Owner / User

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Apollo owner IDs resolve to Twenty workspace members by email address match. All users must be invited to the Twenty workspace (Settings → Members) before the migration runs — Twenty's documentation explicitly states that owner relations cannot map unless the user already exists. Unmatched owners are flagged and assigned to a fallback Twenty user.

Apollo ERP

Sequence definition

maps to

Twenty CRM

Workflow

1:1
Fully supported

Apollo sequences (multi-step email/call cadences) are a core platform feature with no export or equivalent in Twenty. We extract sequence step definitions, timing rules, and enrollment conditions from Apollo's API as a structured JSON export. Your team uses this as a rebuild reference for Twenty's workflow builder or a third-party sequencing tool.

Apollo ERP

Workflow / Automation

maps to

Twenty CRM

Workflow

1:1
Fully supported

Apollo workflow rules (if configured as automations) do not migrate. Twenty's workflow builder handles simple automations but has a different trigger-and-action model. We export workflow definitions as documentation for manual rebuild. Complex Apollo automations with conditional logic should be scoped separately as a post-migration configuration project.

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.

Apollo ERP logo

Apollo ERP gotchas

High

Leave balance carry-forward errors on year-end migration

Medium

Chart of Accounts mapping requires manual chart design review

Medium

API rate limits throttle bulk export on lower-tier plans

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

  • Import order constraint — companies must precede people and opportunities

    Twenty's CSV import mechanism enforces referential integrity at import time: the 'one' side of a one-to-many relationship must exist before you can reference it. This means Companies must be migrated first (so companyId links resolve), then People (so personId links resolve for opportunities), then Opportunities. Apollo exports each object independently, so FlitStack sequences the migration exports in this exact order and uploads to Twenty in the correct sequence. Failing to follow this order produces companyId and personId lookup failures that require re-import — which can create duplicates if de-duplication logic is not pre-configured. The Twenty documentation explicitly warns that soft-deleted records in Twenty still count toward uniqueness checks, meaning a re-import of a deleted company record will restore it rather than link to it.

  • Apollo N:N contact-company model collapses to single companyId in Twenty

    Apollo supports N:N contact-to-company associations natively — one contact can belong to multiple companies simultaneously with no primary designation enforced. Twenty's People object has a single companyId relation field. FlitStack maps the most-recently-modified company association as the primary companyId in Twenty. Secondary company associations are preserved as a custom multi-select field (Company_Associations__c) on the People record, listing all non-primary company IDs and names. This means a contact's full company affiliation history is preserved but the primary company is deterministically assigned. Your team should verify the primary-company rule meets your business logic before the migration runs.

  • Twenty's 20,000-record export ceiling requires multi-pass exports for large datasets

    Twenty's CSV export via the UI (Command Menu → Export view) is limited to 20,000 records per export. For Apollo deployments with more than 20,000 contacts or 20,000 companies, FlitStack performs multiple filtered exports (e.g., by created date range or owner) and reassembles the dataset before loading into Twenty. The same limit applies to Twenty's CSV import — large imports are split and sequenced. This is a known constraint documented in Twenty's data migration guide and must be factored into migration timeline planning.

  • Sequences and workflow automations cannot migrate and have no Apollo export

    Apollo sequences — the multi-step email and call cadences that define outreach timing, enrollment triggers, and exit conditions — are a core platform feature with no documented export endpoint in Apollo's API. Twenty's workflow builder handles basic automations (field updates, task creation, notifications) but has no native sequence-equivalent. Reddit discussions in r/CRM confirm teams resort to third-party sequencing tools (such as Mailshake, Lemlist, or Instantly) or rebuild flows manually. FlitStack extracts sequence step definitions as structured JSON from Apollo's internal data where accessible and provides a rebuild reference document for your team — but the automation logic itself must be rebuilt.

  • File attachments not included in Apollo CSV export — require separate remediation

    Apollo's CSV export does not include file attachments. Files attached to contacts, companies, or deals must be inventoried separately via Apollo's API and re-uploaded manually to Twenty. Twenty's standard Notes and file attachment mechanisms can host these, but there is no bulk attachment migration path. FlitStack generates an attachment inventory report listing each file's original record association, file name, and Apollo storage location so your team can execute re-upload as a post-migration step. This is a manual remediation task, not an automated migration step.

Migration approach

Six steps for a successful Apollo ERP to Twenty CRM data migration

  1. Audit Apollo data model and export all object types

    FlitStack connects to Apollo's REST API (authenticated with your API key) and inventories all object types: contacts, companies, deals, custom fields (by modality: contact, account, opportunity), custom objects, and engagement logs. We export each object type to CSV, noting the Apollo field names, data types, and pick-list values for stage and custom select fields. We also inventory custom field definitions via POST /api/v1/fields to capture label, type, and modality. This audit produces a complete field inventory used to generate the Twenty custom field creation plan and the mapping document. Apollo's API rate limits (default 1000/hour) are respected via request throttling — large datasets may require multiple export sessions.

  2. Create Twenty schema: custom fields, custom objects, and workspace members

    Before any data is imported into Twenty, FlitStack creates all required custom fields and custom objects in Twenty's Settings → Data Model. This follows Twenty's explicit requirement that fields must exist before CSV import creates records. We also verify that all Apollo owner email addresses have corresponding invited Twenty workspace members — if a user is missing, we flag it so your team can invite them before migration runs. Twenty's limit of 10 custom objects on Pro cloud is checked against the Apollo custom object count and escalated if the Organization tier is needed.

  3. Resolve owners and primary company associations

    FlitStack matches Apollo owner IDs to Twenty workspace members by email address. Any owner with no corresponding Twenty user is flagged in a pre-migration report — your team either invites that user to Twenty or provides a fallback assignee. For Apollo contacts with multiple company associations, we apply the most-recently-modified company as the primary companyId in Twenty and record secondary associations in a custom Company_Associations__c field. This deterministic rule is documented in the mapping plan for your review before the migration executes.

  4. Run sample migration with field-level diff

    A representative slice of Apollo records (typically 100–500 per object) migrates first: a mix of contacts with varying custom field populations, companies with and without parent hierarchies, open and closed deals, and activity records. We generate a field-level diff between the Apollo source values and the Twenty destination fields, verifying that pick-list values mapped correctly, companyId and personId lookups resolved, owner assignments matched, and custom field data populated as expected. You review the diff before the full migration commits.

  5. Execute full migration with delta-pickup window

    Full migration runs against Twenty's CSV import interface, following the Companies → People → Opportunities → Tasks import order required by Twenty's referential integrity model. FlitStack sequences the uploads to ensure foreign keys resolve correctly. A delta-pickup window (typically 24–48 hours) captures any new or modified Apollo records created during the cutover window. After full migration, we verify record counts per object against the Apollo audit totals, check for duplicate records (de-duplicated by source_system_id), and confirm all custom fields populated. One-click rollback is available if reconciliation shows data integrity issues.

Platform deep dives

Context on both ends of the pair

Apollo ERP logo

Apollo ERP

Source

Strengths

  • Integrated HR, payroll, and finance in a single platform reduces data silos and reconciliation effort for SMBs.
  • Strong payroll module with multi-state or multi-country compliance capabilities for Indian and South Asian deployments.
  • FSM and manufacturing modules provide work order tracking, job costing, and supply chain visibility for operational businesses.
  • Affordable entry pricing makes the platform accessible without large upfront capital expenditure.
  • Centralized database means customer and employee data share a single source of truth across modules.

Weaknesses

  • Leave management module is known to produce calculation conflicts and requires careful configuration and testing.
  • User interface is dated compared to modern SaaS platforms, affecting user adoption and day-to-day efficiency.
  • Third-party integrations are limited, restricting connectivity to best-of-breed tools for CRM, BI, or specialized vertical applications.
  • Documentation lags behind product updates, making self-service troubleshooting difficult for non-standard configurations.
  • Support quality and response times are inconsistent, particularly for complex configuration or migration-related issues.
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?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Apollo ERP and Twenty CRM.

  • Object compatibility

    B

    2 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

    Apollo ERP: Not applicable..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Apollo-to-Twenty migrations complete in 72–96 hours for under 50,000 total records when Twenty's schema is pre-built and owners are pre-invited. Larger datasets (100,000+ records) or setups with multiple custom objects extend to 5–10 days. The longest planning step is creating Twenty's custom field schema before import — Twenty requires fields to exist before CSV data lands, so schema setup must finish before the first import file uploads.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Apollo ERP.
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