CRM migration

Migrate from Gauss Box CRM & Sales to Twenty CRM

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

Gauss Box CRM & Sales logo

Gauss Box CRM & Sales

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

70%

7 of 10

objects map 1:1 between Gauss Box CRM & Sales and Twenty CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Gauss Box CRM & Sales and Twenty CRM share a similar object vocabulary but differ fundamentally in architecture and export capability. Gauss Box stores Persons, Organizations, Deals, Activities, and a Product catalog with account-specific custom attributes defined through its attribute-set system, while Twenty CRM uses Company and Person as its primary account and contact objects with a standard Opportunity pipeline, Task and Event activity model, and a Custom Objects capability for non-standard data. The critical migration difference is that Gauss Box does not publish a REST or GraphQL API for self-service export, requiring coordinated CSV extraction or assisted export through their support team before any data can move. We sequence the migration with Organizations as the first load (as parent records), then Products, then Persons and Leads, then Deals and Activities, then document attachments. Custom attribute sets from Gauss Box must be enumerated during discovery and pre-created as custom fields in Twenty before data import. Twenty's per-user pricing at approximately $9/month (self-hosted free or cloud from ~$9/seat) contrasts with Gauss Box's per-user model starting at €119/month for three users, making the switch financially significant for growing teams. Workflows, sequences, and notification automations do not migrate; we deliver a written inventory for the customer's admin to rebuild in Twenty's workflow engine.

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

Gauss Box CRM & Sales logo

Gauss Box CRM & Sales

What's pushing teams away

  • Pricing scales per-user, which becomes expensive as sales teams grow — especially when the CRM's core contact/company objects are unlimited but the seat count is not.
  • Lack of a public API or developer documentation means third-party integrations and automation require custom development or Gauss Box's professional services.
  • The platform lacks the ecosystem depth of established CRMs — fewer native integrations, fewer marketplace apps, fewer community resources.
  • Small-to-mid-market teams that outgrow the bundled ERP or project modules find the migration path unclear and supported only on a per-engagement basis.
  • Interface and workflow design prioritizes comprehensiveness over speed, making day-to-day sales tasks feel more weighted than in lighter-weight CRM 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 Gauss Box CRM & Sales objects map to Twenty CRM

Each row shows how a Gauss Box CRM & Sales 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.

Gauss Box CRM & Sales

Organization

maps to

Twenty CRM

Company

1:1
Fully supported

Gauss Box Organizations (company records) map directly to Twenty Company records. The Organization name, industry, size, D&B data fields (if the Gauss Box account had D&B enrichment active), and address fields map to the corresponding Twenty Company fields. Organization is loaded first because Persons and Deals carry foreign-key references to it. The Twenty Company API accepts name, domain, employees, industry, and address as typed fields. Any custom attributes defined on the Organization object in Gauss Box's attribute-set system are enumerated during discovery and pre-created as custom fields on the Twenty Company object before migration.

Gauss Box CRM & Sales

Product (Catalog)

maps to

Twenty CRM

Standard Object: Opportunity with line items

1:1
Fully supported

Gauss Box Products (name, category, type, price, sale tax configuration) map to Twenty Products if the Twenty instance has the Products feature enabled, or to a custom Product object if the standard feature is not active. ProductCode from Gauss Box maps to the sku field. We reassign products to Deals at the destination using the stored deal-product associations. Tiered pricing and volume discount rules that were custom Gauss Box configurations become custom fields on the destination Product record.

Gauss Box CRM & Sales

Person (Contact)

maps to

Twenty CRM

Person

1:1
Fully supported

Gauss Box Persons map directly to Twenty Person records. Name, email, phone, address, and any role or title field map to the corresponding Twenty Person fields. Persons carry a link to their parent Organization, which is resolved by matching the Organization's external ID (we assign a stable UUID during Organization migration) against the Organization field on the Person record during migration. All account-specific custom attributes on the Gauss Box Person object are pre-created as custom fields on Twenty Person before the Person batch load.

Gauss Box CRM & Sales

Lead

maps to

Twenty CRM

Person (unqualified) or Lead (if configured)

1:many
Fully supported

Gauss Box Leads carry a work status, assigned team member, and a link to a corresponding Person. We map Leads to Twenty Person records with the work status preserved in a custom field (lead_work_status__c). If Twenty is configured with a dedicated Lead object (via custom object definition), unqualified Leads map to the Lead object and converted Leads map to Person. The lead-to-person link is preserved by recording the original Gauss Box lead_id in a custom field on the destination Person for audit and reconciliation.

Gauss Box CRM & Sales

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Gauss Box Deals map to Twenty Opportunity records. Deal fields (stage, owner, value, budget, product associations, close date) map to the corresponding Opportunity fields. Pipeline stage names are configurable per Gauss Box account, so we enumerate the active stage set during discovery and map it to Twenty's Opportunity stage field, creating any missing stage values in Twenty before migration. Deal-product associations are resolved by looking up the migrated Product UUIDs against the imported product records. Owner assignment uses the Gauss Box owner's email address, resolved against the Twenty user directory during migration.

Gauss Box CRM & Sales

Activity

maps to

Twenty CRM

Task and Event

1:1
Fully supported

Gauss Box Activities (interactions linked to Deals and Persons) map to Twenty Task records for standard activities and Event records for meetings and calendar events. Activity type, timestamp, description, and parent object link (person or deal) migrate directly. Gauss Box ties automatic reminders to Activity records, but these system-generated reminders are often embedded in the parent record metadata rather than exported as independent rows. We extract what is present, flag records with active reminders that will not carry over as discrete activities, and recommend the customer document open reminder counts before migration so they can recreate priority reminders in Twenty.

Gauss Box CRM & Sales

Document

maps to

Twenty CRM

Attachment (on Company or Person)

1:1
Fully supported

Gauss Box stores documents per record with access permissions in its document management module. We extract files with their filenames and any stored metadata, then re-attach them to the corresponding migrated Company or Person record in Twenty. File metadata (created date, modified date, access level) migrates as attachment metadata fields. Access permissions that existed in Gauss Box's document module do not transfer to Twenty's attachment model and must be reconfigured by the customer's admin post-migration if permission-scoped document access is required.

Gauss Box CRM & Sales

Custom Attributes (Attribute Sets)

maps to

Twenty CRM

Custom Fields on Person, Company, Opportunity, or Product

lossy
Mapping required

Gauss Box attribute sets allow each account to define custom fields on Persons, Organizations, Deals, and Products. These fields are not standardized across accounts. We run a mandatory discovery phase to enumerate every active attribute set before mapping begins. Each discovered custom field is pre-created in Twenty with a matching field type (text, number, date, picklist, checkbox, or email) before the corresponding data batch is loaded. Skipping this step results in data landing in wrong columns or being silently dropped if the destination field does not exist.

Gauss Box CRM & Sales

Owner (User Assignment)

maps to

Twenty CRM

User

1:1
Fully supported

Gauss Box Deals, Leads, and Activities carry owner assignments tied to Gauss Box user accounts. We map owner email addresses to Twenty's user directory. Any Gauss Box owner without a matching Twenty User is held in a reconciliation queue for the customer's admin to provision before the record import resumes. Inactive Gauss Box user accounts that are still referenced in owner fields are flagged separately so the customer can decide whether to provision a corresponding inactive Twenty User or reassign the records.

Gauss Box CRM & Sales

Deal Stage (Pipeline Configuration)

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Gauss Box's configurable pipeline stages are enumerated per account and mapped to Twenty's Opportunity stage values. Stage names, probabilities, and order of presentation migrate as configured. If the Gauss Box account uses multiple pipelines (an advanced configuration), we map each Gauss Box pipeline to a separate Opportunity pipeline view in Twenty, or document the multi-pipeline requirement for the customer's admin to configure as separate Twenty pipeline filters post-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.

Gauss Box CRM & Sales logo

Gauss Box CRM & Sales gotchas

High

No documented public API export endpoint

Medium

Custom attribute sets are account-specific and require discovery

Medium

Per-user pricing creates billing surprises when migrating in

Low

Activity reminders and notification data are not independently exportable

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

  • Gauss Box has no public API export endpoint

    Gauss Box does not publish a REST or GraphQL API with documented endpoints for data export. Their own FAQ states that data migration is tailored to each client's needs and requires contacting their team. We handle this by working with the customer to extract data via CSV templates that we define and the customer requests from Gauss Box support, or by using their assisted export process. If Gauss Box cannot produce a clean CSV export within the agreed timeline, the migration may be delayed. We coordinate directly with Gauss Box on the customer's behalf to request the export package. This export limitation adds a coordination step not present in migrations from platforms with open APIs.

  • Custom attribute sets are account-specific and require full discovery

    Gauss Box's attribute-set system lets each account define custom fields on Persons, Organizations, Deals, and Products that do not exist in any standardized schema. A field called Region on one account may not exist on another. We run a mandatory discovery phase to enumerate every active attribute set before any destination schema is created. Every custom field discovered in Gauss Box must be pre-created as a matching custom field in Twenty before the corresponding data batch is imported. Skipping this step results in data landing in wrong columns or being silently dropped if the destination field does not exist.

  • Activity reminders are embedded in record metadata, not independent rows

    Gauss Box ties automatic reminders and smart notifications to Deal and Activity records. These system-generated reminders (distinct from customer-authored notes) do not always appear as independent rows in a CSV export. They are often embedded in the parent record's metadata as reminder flags or timestamps. We extract what is present in the export, flag records with active reminders that will not carry over as discrete Twenty activities, and recommend the customer document open reminder counts before migration so they can recreate priority reminders in Twenty's activity model. Notes authored by users export normally as text content in the activity description field.

  • Document access permissions do not transfer to Twenty's attachment model

    Gauss Box's document management module stores files with per-record access permissions that are scoped to the Gauss Box permission model. When we re-attach documents to migrated Company or Person records in Twenty, the Gauss Box-specific permission settings are lost. Twenty's attachment model does not have a granular permission system equivalent to Gauss Box's document access controls. If the customer requires document-level permissions in Twenty, we recommend using Twenty's workspace permission model or a document management integration post-migration. We flag this gap during scoping so the customer's admin can decide on the post-migration document access strategy.

  • CSV export ordering requires parent-record resolution before child-record load

    Because Gauss Box exports are CSV-based rather than API-driven, there is no referential integrity enforcement across the export. Organizations must be loaded before Persons (since Persons carry an Organization foreign key), and Persons must be loaded before Deals (since Deals reference both a Person and an Organization). We assign stable external IDs during the export preparation phase and use those IDs as lookup keys during the Twenty import. If the customer's Gauss Box export does not include all required foreign key columns, we request a supplemental export or reconstruct the relationships from the Gauss Box data model before loading.

Migration approach

Six steps for a successful Gauss Box CRM & Sales to Twenty CRM data migration

  1. Export coordination with Gauss Box

    Since Gauss Box has no self-service API export, we work with the customer to request a CSV export package from Gauss Box support. We define the export template specifying which fields and objects are needed (Organizations, Persons, Leads, Deals, Activities, Products, Documents with file references). If Gauss Box support cannot produce a complete CSV export, we coordinate an assisted export session. The customer provides the export files within the agreed discovery window. We validate the export completeness (record counts per object, presence of required columns, presence of foreign-key columns for relationship resolution) before proceeding.

  2. Discovery and attribute-set enumeration

    We enumerate every active Gauss Box attribute set across Persons, Organizations, Deals, and Products. For each custom attribute, we record the field name, data type, and any picklist values or validation rules defined in Gauss Box. We cross-reference this list against the standard Twenty field model to identify which attributes map to standard Twenty fields and which must become custom fields. We present the customer with a custom field creation checklist and create the custom fields in Twenty (via the admin UI or API) before any data migration begins. This step is required and cannot be skipped or deferred.

  3. Owner reconciliation and user provisioning

    We extract every distinct Gauss Box owner referenced on Deal, Lead, and Activity records and list them by email address. We compare this list against the Twenty destination's user directory. Any Gauss Box owner without a matching Twenty User is added to a reconciliation queue. The customer's Twenty admin provisions the missing users (active or inactive depending on the original Gauss Box user's status). Migration cannot proceed past this step because OwnerId references are required on imported Opportunity and Task records in Twenty.

  4. Schema preparation and custom field pre-creation

    We create all required custom fields in Twenty for any Gauss Box custom attributes that do not map to standard Twenty fields. We configure Opportunity stages to match the Gauss Box pipeline stage set, creating any missing stage values. We verify that the Twenty instance has the Products feature enabled if the customer requires Product catalog migration. We validate the Twenty schema against the Gauss Box export field list to confirm every source field has a destination target before proceeding to data load.

  5. Migration in dependency order with reconciliation reports

    We load data into Twenty in strict dependency order: Companies (from Organizations) first, then Products, then Persons (with Company external ID resolved), then Leads (with Person external ID resolved), then Opportunities (with Person ID, Company ID, and Owner resolved), then Tasks and Events (with parent Person and Opportunity resolved), then Attachments (with parent Company or Person resolved). Each phase emits a row-count reconciliation report comparing the Gauss Box export count to the Twenty insert count. Any discrepancy triggers an investigation before the next phase begins. We use the Twenty REST API with rate-limit handling and exponential backoff for all inserts.

  6. Cutover, delta migration, and workflow inventory handoff

    We freeze Gauss Box writes during the cutover window, run a final delta migration of any records created or modified since the last load, then mark Twenty as the system of record. We deliver a written inventory of every Gauss Box automation, notification rule, and workflow that cannot migrate, with a recommended Twenty equivalent for each. We support a one-week post-cutover window for reconciliation issues raised by the sales team. We do not rebuild Gauss Box automations in Twenty as part of the migration scope; that is a separate engagement.

Platform deep dives

Context on both ends of the pair

Gauss Box CRM & Sales logo

Gauss Box CRM & Sales

Source

Strengths

  • Unlimited Contacts and Organizations on all plans despite per-user pricing
  • Includes D&B business intelligence enrichment on company records
  • GDPR compliance and advanced privacy controls built into the platform
  • Notification and reminder system tied to Deal and Activity records
  • Part of a unified suite covering CRM, ERP, Projects, and Documents under one account

Weaknesses

  • No publicly documented self-service API export — migration requires CSV or assisted export
  • Per-user pricing model means costs scale quickly with team size
  • Limited public documentation on schema, API endpoints, and rate limits
  • Less international market penetration, making community support and third-party integrations harder to find
  • Product catalog lacks advanced pricing rules (e.g., tiered pricing, volume discounts) native to the object
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. 3 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 Gauss Box CRM & Sales and Twenty CRM.

  • Object compatibility

    B

    3 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

    Gauss Box CRM & Sales: Not publicly documented.

  • Data volume sensitivity

    B

    Gauss Box CRM & Sales doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Gauss Box CRM & Sales 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 Gauss Box CRM & Sales to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Smaller migrations under 5,000 Persons, 2,000 Deals, and no extensive custom attribute sets typically complete in two to four weeks. The primary time variable is the CSV export coordination with Gauss Box support, which can take one to two weeks depending on their response time. Migrations with extensive custom attribute sets, multiple Gauss Box modules in scope (Documents, Products), or large activity histories move to six to ten weeks because of the discovery phase, custom field pre-creation, and document re-attachment steps.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Gauss Box CRM & Sales.
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