CRM migration

Migrate from OctopusPro to Twenty CRM

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

OctopusPro logo

OctopusPro

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

64%

9 of 14

objects map 1:1 between OctopusPro and Twenty CRM.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

OctopusPro is a field service management platform built around the booking lifecycle, with native objects for Jobs, Field Workers, Invoices, and Quotes that reflect a service-business data model. Twenty CRM is an open-source modern CRM built in TypeScript with a People, Companies, and Opportunities object model, and a Custom Object framework for domain-specific records. There is no direct one-to-one object mapping between these platforms: Bookings, Jobs, Field Workers, Services, and the operational data that powers OctopusPro's dispatch interface must be reconstructed in Twenty as Custom Objects with custom fields. We begin every migration by requesting a structured export from OctopusPro's support team, discovering the tenant-specific custom field schema, and designing the destination Custom Object schema in Twenty before any data moves. We do not migrate OctopusPro automations, the Customer Portal configuration, or GPS location history from the worker app as time-series records; these require rebuild or reconfiguration in Twenty post-migration.

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

OctopusPro logo

OctopusPro

What's pushing teams away

  • Incorrect billing charges appear after cancellation is confirmed in writing, with refunds denied and support unresponsive to escalation attempts, per verified Capterra reviews.
  • The platform has been described as extremely complex by customers who struggled with onboarding and found customer support lacking in compassion and clarity.
  • Multiple reviewers report being charged for plans they did not agree to, with one instance of a $5,000 accidental charge that took a week to resolve.

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

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

OctopusPro

Customer

maps to

Twenty CRM

Person (People)

1:1
Fully supported

OctopusPro Customer profiles (name, phone, email, address, notes) map directly to Twenty Person records. The primary email becomes the Twenty email field and serves as the dedupe key. Custom fields attached to the Customer profile in OctopusPro (vertical-specific data such as gate codes or pet health history) are migrated as Twenty custom fields on Person. The custom field schema is tenant-specific and must be requested from OctopusPro support during export discovery.

OctopusPro

Customer

maps to

Twenty CRM

Company

lossy
Fully supported

If OctopusPro Customer records include business entity data (company name separate from contact name), we create a Twenty Company record and link the Person as a relation (employee-of or contact-at). The mapping decision is confirmed during scoping by reviewing whether the OctopusPro export separates business and individual contact fields.

OctopusPro

Booking

maps to

Twenty CRM

Custom Object: Booking

lossy
Fully supported

OctopusPro Bookings are the central object linking a Customer, Field Worker, Service, time slot, status, and Invoice. Twenty has no native booking or scheduling object, so we create a Booking Custom Object in Twenty with custom fields for customer (Person lookup), field worker (User lookup), service, scheduled date and time, status, and related invoice. Booking status history migrates as custom fields or as linked Task records if timeline tracking is needed.

OctopusPro

Job

maps to

Twenty CRM

Custom Object: Job or Task

1:many
Fully supported

OctopusPro Jobs are work order records that may exist independently of or alongside Bookings depending on the customer's workflow. We create a Job Custom Object in Twenty or, for simpler job tracking, use Task records with a custom job_reference__c field linking back to the parent Booking. Field-level job data (description, priority, tags, photos from forms) migrates as custom fields on the destination object. Form schema varies by service type; we flag any fields that require new custom field creation in Twenty during scoping.

OctopusPro

Field Worker

maps to

Twenty CRM

User

1:1
Fully supported

OctopusPro Field Worker records (name, role, contact details, pay rate, location tracking preferences) map to Twenty User accounts. We resolve field workers by email match. GPS tracking preferences from the OctopusPro worker app are noted as custom fields in Twenty but do not activate live location sharing; that feature requires rebuild in Twenty using a third-party GPS integration.

OctopusPro

Invoice

maps to

Twenty CRM

Opportunity + Custom Fields

1:1
Fully supported

OctopusPro Invoices (line items, tax, totals, payment status tied to a Booking) are reconstructed in Twenty as Opportunity records with custom fields capturing invoice_number__c, invoice_date__c, subtotal__c, tax_amount__c, total_amount__c, and payment_status__c. The Opportunity Stage maps to invoice payment status (Open, Won for paid, Closed Lost for written off). For businesses that need invoice documents, we attach the exported invoice PDF as a ContentDocument via ContentDocumentLink.

OctopusPro

Payment

maps to

Twenty CRM

Opportunity Activity (Task/Note)

1:1
Fully supported

OctopusPro Payment records (amount, method, date, status against an Invoice) migrate as Task records linked to the parent Opportunity, with custom fields capturing payment_method__c, amount_paid__c, and payment_date__c. Partial payments and refunds are flagged as separate Task records with a payment_type__c custom field (full, partial, refund). This reconstructs the payment history against the Opportunity without requiring a native payment object in Twenty.

OctopusPro

Quote / Estimate

maps to

Twenty CRM

Opportunity

1:1
Fully supported

OctopusPro Quotes (pre-booking documents with line items, validity dates, and accept/reject status) migrate to Twenty as Opportunities with a quote_status__c custom field (pending, accepted, rejected, expired) and validity_date__c. Line items from the Quote migrate as OpportunityLineItem records if the Twenty workspace has a Pricebook2 configured; otherwise, they are stored as custom fields or a Note attachment.

OctopusPro

Service

maps to

Twenty CRM

Custom Object: Service

lossy
Fully supported

OctopusPro Service definitions (name, description, pricing rules, duration, service area) migrate as a Service Custom Object in Twenty. This provides a reference catalog that can be linked from Booking or Job Custom Object records. Service pricing rules that drive invoice line items are stored as custom fields on the Service object. We create the Service Custom Object in Twenty's Data Model before any Booking or Job import.

OctopusPro

Custom Fields

maps to

Twenty CRM

Custom Fields on relevant objects

lossy
Mapping required

OctopusPro allows custom fields on Customer profiles and Bookings to capture vertical-specific data. We discover the custom field schema by requesting a field inventory from OctopusPro support alongside the export. Each custom field is typed (text, number, date, picklist) and mapped to the corresponding Twenty object and field type. Custom fields that do not map directly (e.g., multi-checkbox in OctopusPro to multi-select picklist in Twenty) are flagged for transformation during scoping.

OctopusPro

Forms & Checklists

maps to

Twenty CRM

Custom Object: Form Record

1:1
Mapping required

OctopusPro Forms and checklists capture structured field data at the job level (photos, tags, intake information). The form schema varies by service. We migrate available field data as custom fields on the Job or Booking Custom Object, with the raw form output stored as a Note attachment if the data does not fit a structured custom field. Any form field requiring a new custom field in Twenty is added to the Data Model before migration runs.

OctopusPro

Customer Portal

maps to

Twenty CRM

None

1:1
Not supported

The OctopusPro Customer Portal is a configuration layer for self-booking, invoice viewing, and FAQ access. Portal settings, permission flags, and branded theme configurations do not migrate as data objects. We document the active portal features during scoping so the customer can configure equivalent functionality in Twenty or via a separate customer-facing tool post-migration.

OctopusPro

Automations

maps to

Twenty CRM

None

1:1
Mapping required

OctopusPro Automations define trigger-action workflows for scheduling, notifications, and status changes. Twenty supports workflow automation from its Pro plan. We capture automation rules during scoping as part of the written inventory delivered to the customer. Automation logic is not migrated as code; the customer's admin rebuilds the relevant triggers in Twenty's workflow builder post-migration.

OctopusPro

FAQs

maps to

Twenty CRM

Note or Custom Field on Service

1:1
Mapping required

OctopusPro service-level FAQs are linked to specific Services and appear in the customer portal and email templates. FAQ content and service associations migrate as Note records linked to the corresponding Service Custom Object in Twenty, or as a long-text custom field on the Service object. Display configuration (portal placement, email inclusion) must be reconfigured in Twenty manually after migration.

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.

OctopusPro logo

OctopusPro gotchas

High

Booking Fee vs Commission billing model affects migration cost estimates

High

Incorrect charges and billing disputes are documented in reviews

High

No documented public API or bulk export mechanism

Medium

Customer Portal settings do not migrate independently

Medium

Custom field schema is tenant-specific and must be discovered before mapping

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

  • OctopusPro export depends entirely on support-assisted file delivery

    OctopusPro has no self-service export tool and no documented public API. All data extraction requires opening a support request and waiting for OctopusPro to prepare a structured file delivery. Verified reviews describe this process as slow and unresponsive. We handle the support request on the customer's behalf and set a reasonable SLA expectation during scoping, but export timelines are outside our control. We recommend requesting the export file at the start of the project to avoid blocking the migration start date.

  • Twenty CRM REST API silently creates empty records with invalid data

    GitHub issue #6640 on the Twenty repository documents a known REST API problem: the API creates empty objects even when valid data is provided, and returns no error codes when data is silently discarded. We work around this by using Twenty's CSV import feature for standard objects (People, Companies, Opportunities) where the built-in import UI provides validation feedback, and use the API only for Custom Object records where CSV import is not available. All API imports are followed by a reconciliation count check to detect silent failures.

  • Twenty has no native booking or field service object model

    OctopusPro's core value is its booking-centric data model: Bookings link Customers, Field Workers, Services, time slots, and Invoices within a single object. Twenty CRM is a traditional CRM with People, Companies, and Opportunities at its core. There is no native equivalent to Bookings, Jobs, or Field Worker dispatch. We reconstruct these as Custom Objects in Twenty, but the customer should understand that native scheduling, dispatch board, and GPS worker tracking features require rebuild using Twenty's workflow engine and a third-party GPS integration.

  • Custom field schema discovery requires OctopusPro support interaction

    OctopusPro allows custom fields on Customer profiles and Bookings. The custom field schema is defined per tenant and is not visible through any self-service export interface. We must request a full field inventory from OctopusPro support as part of the export process. This discovery step adds one to two weeks to the scoping timeline and is required before we can finalize the field mapping document for Twenty's Data Model configuration.

Migration approach

Six steps for a successful OctopusPro to Twenty CRM data migration

  1. Scoped export request from OctopusPro

    We open a structured export request with OctopusPro support on the customer's behalf, requesting CSV or JSON exports of Customers, Bookings, Field Workers, Invoices, Payments, Quotes, Services, Forms, and Custom Fields. We simultaneously request a full custom field inventory so we can map tenant-specific fields to Twenty custom fields during scoping. We recommend the customer authorize this request at the earliest opportunity because OctopusPro's support response time is outside our control and can add one to three weeks to the project timeline.

  2. Twenty workspace setup and custom object schema design

    While waiting for the OctopusPro export, we set up the Twenty workspace. We create the Custom Objects required to model the booking lifecycle: Booking, Job, and Service Custom Objects with all necessary custom fields for status, GPS coordinates (as text), payment terms, and form data. We configure the Twenty Data Model (Settings > Data Model) for each Custom Object, define custom fields on Person for customer-specific data, and add Opportunity custom fields for invoice reconstruction. We invite all team members before importing so that Owner lookups are satisfied at migration time.

  3. Data cleansing and field mapping document

    When the OctopusPro export files arrive, we profile the data for completeness, duplicates, and formatting inconsistencies. We clean duplicate customer records (keeping the most complete), standardize phone number formats, and resolve partial addresses before mapping. We produce a written field mapping document that assigns each OctopusPro field to a Twenty field or custom field, noting any type transformations (date formats, picklist values, multi-checkbox to multi-select picklist). The mapping document is reviewed and signed off by the customer before any import begins.

  4. Sandbox migration and reconciliation

    We run a full migration into Twenty's sandbox environment using production-like data volume. The customer reconciles record counts (People, Companies, Bookings, Jobs, Invoices, Payments) against the OctopusPro source, spot-checks 25-50 records for field-level accuracy, and validates that lookup relationships (Booking to Customer, Job to Field Worker) resolved correctly. Any mapping corrections are documented and applied before the production migration runs.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Person records (from Customers), Company records (where applicable), Service Custom Object (referenced by Bookings), Booking Custom Object (with customer and field worker lookups resolved), Job Custom Object (linked to Booking), Opportunities (with invoice custom fields populated from Invoice records), Task records (from Payments), and finally any remaining Custom Object records. Each phase emits a row-count reconciliation report. We use Twenty's CSV import for standard objects and the REST or GraphQL API for Custom Objects with per-record validation checks.

  6. Cutover, validation, and automations handoff

    We coordinate the cutover window: final writes to OctopusPro are frozen, any records modified during the migration window are migrated as a delta pass, then Twenty is enabled as the system of record. We validate record counts and spot-check relationships in production. We deliver the automation inventory document (Captured from OctopusPro scoping) to the customer with a written note on each automation requiring rebuild in Twenty's workflow builder. We offer a one-week hypercare window for reconciliation issues. We do not rebuild OctopusPro automations as Twenty workflows within the migration scope.

Platform deep dives

Context on both ends of the pair

OctopusPro logo

OctopusPro

Source

Strengths

  • POS, payment collection, invoicing, and SMS receipts in one platform for service businesses.
  • GPS fieldworker tracking and real-time location monitoring from the worker app.
  • Unlimited user seats on the top plan without per-seat billing.
  • Online self-booking and customer-facing portal reduce administrative coordination overhead.
  • Quote and estimate generation with professional templates and status tracking.

Weaknesses

  • Billing errors and incorrect charges are a recurring complaint in verified reviews, including charges after confirmed cancellation.
  • Platform is described as extremely complex, with poor onboarding and unresponsive support for new customers.
  • No public API documentation or bulk export/import tools means data portability depends entirely on support-assisted exports.
  • Limited customization options for workflows and data capture compared to general-purpose CRMs.
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 OctopusPro 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

    OctopusPro: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your OctopusPro 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 four and eight weeks for accounts with under 5,000 customer records and a straightforward custom field schema. Migrations with tenant-specific custom fields, high booking volume, invoice history requiring opportunity reconstruction, or GPS data stored as custom fields move to eight to twelve weeks because of the OctopusPro export dependency, custom schema design, and multi-pass validation. The export request to OctopusPro support typically takes one to three weeks and is on the critical path from day one.

Adjacent paths

Related migrations to explore

Ready when you are

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