CRM migration

Migrate from Sellsy to Twenty CRM

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

Sellsy logo

Sellsy

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

73%

8 of 11

objects map 1:1 between Sellsy and Twenty CRM.

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Sellsy to Twenty CRM is a structural migration that resolves three platform-model mismatches before data moves. First, Sellsy conflates Individuals and Companies into a single Contact model with a type discriminator; we split that at export time so that every company record lands as a standalone Company in Twenty and every individual lands as a Person. Second, Sellsy's financial layer (Invoices, Orders, Credit Notes) has no direct equivalent in Twenty's opportunity-focused model, so we map invoices to a custom Invoice object and flag that the customer should configure that object before migration. Third, Sellsy's Staff records must resolve to Twenty's Owner system, requiring an email-based lookup at migration time. We preserve SmartTags as tags, handle custom fields on every object, and flag that Twenty does not currently support native sequencing or automated incremental numbering for Deal IDs — those gaps require process workarounds post-migration. Workflows, sequences, and automations do not migrate; we deliver a written inventory for the customer's admin to 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

Sellsy logo

Sellsy

What's pushing teams away

  • Steep learning curve that requires roughly one week to become productive: reviewers consistently report Sellsy is not intuitive and the information architecture demands significant onboarding investment before teams can work efficiently.
  • Pricing opacity across public sources creates buying friction: Sellsy has been transitioning from modular to bundled pricing for years, leaving outdated numbers scattered across Capterra, G2, and its own site — confusing prospects and delaying sign-off.
  • Interface and UX lag behind newer CRM alternatives: reviewers note the design feels dated compared to platforms like Pipedrive, with imperfect ergonomics that create friction even for basic workflows after the initial learning period.
  • Document template and workflow setup takes 2–3 hours to configure properly: initial setup of custom fields, pipelines, and document templates is non-trivial, and basic configuration at go-live still requires deliberate configuration effort.

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

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

Sellsy

Contact (Individual)

maps to

Twenty CRM

Person

1:1
Fully supported

Sellsy's Contact export bundles Individuals and Companies under a single model with a type discriminator. We split by the type attribute during pre-flight extraction: type=individual records become Twenty Person objects. Mobile, email, job title, and address fields map directly. The original Sellsy contact ID is preserved in a custom field sellsy_id__c for cross-reference and delta reconciliation.

Sellsy

Contact (Corporation)

maps to

Twenty CRM

Company

1:1
Fully supported

Sellsy Corporation records (company-type contacts) map to Twenty Company. The corporation's SIRENE-derived data (legal name, registration number, address) migrates to the corresponding Company fields. We preserve the sellsy_corporation_id__c for lookup resolution if the customer later needs to cross-reference historical records.

Sellsy

Opportunity

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Sellsy Opportunities map to Twenty Opportunities with stage, amount, expected close date, and owner preserved. Note that Twenty does not currently provide an automated incremental numbering system for Opportunity IDs (raised in r/selfhosted as a v2.0 concern). We flag this during scoping and recommend the customer configures a naming convention before migration. Pipeline mapping requires stage translation from Sellsy pipeline stages to Twenty pipeline stages.

Sellsy

Invoice

maps to

Twenty CRM

Custom Invoice Object (configuration required)

1:1
Fully supported

Sellsy Invoices have no direct equivalent in Twenty CRM's standard schema. We create a custom Invoice object in Twenty (or use custom fields on Opportunity) during pre-migration configuration, mapping invoice number, issue date, due date, line items, tax amounts, and SmartTags. The customer must confirm their preferred destination schema for financial records before migration begins.

Sellsy

Order

maps to

Twenty CRM

Custom Order Object or Opportunity Line Items

lossy
Fully supported

Sellsy Orders track commercial transactions distinct from invoices. Depending on the customer's process, we map Orders to either a custom Order object in Twenty or to Opportunity Line Items on the linked Opportunity. Order status (draft, confirmed, shipped, cancelled) requires a picklist configuration in Twenty.

Sellsy

Credit Note

maps to

Twenty CRM

Custom Credit Note Object

lossy
Fully supported

Sellsy Credit Notes (API v2.86.0+) link to original invoices and carry credit amounts. Twenty has no native credit note equivalent. We create a custom Credit Note object or custom fields on the linked Invoice record, preserving the linked invoice reference and credit note amount.

Sellsy

Product

maps to

Twenty CRM

Product

1:1
Fully supported

Sellsy product catalog entries map to Twenty Products with name, description, unit price, and SKU preserved. Pricing rules and matrix configurations are simplified to a single unit price unless the customer specifies a pricing complexity requirement.

Sellsy

Staff

maps to

Twenty CRM

User / Owner

1:1
Mapping required

Sellsy Staff records map to Twenty Users. We resolve by email match. Sellsy's privilege and role model differs from Twenty's workspace permissions; we map the active/inactive status and preserve the original Sellsy role label in a custom field for the customer's admin to translate into Twenty's permission set during workspace configuration.

Sellsy

Task

maps to

Twenty CRM

Task

1:1
Fully supported

Sellsy Tasks map to Twenty Tasks with due date, status, assignee (via Staff-to-User lookup), and description preserved. Task priority maps to Twenty's priority field. Recurring task configurations are flagged as not migratable and noted for manual rebuild if applicable.

Sellsy

Activity (calls, emails, meetings)

maps to

Twenty CRM

Task and Event

1:1
Fully supported

Sellsy Activity records (calls, emails, appointments) map to Twenty Task records for calls and logged communications, and Event records for calendar-based meetings. We preserve the linked Contact and Opportunity references via the sellsy_id__c cross-reference and set the original timestamp to maintain the activity timeline ordering.

Sellsy

SmartTag

maps to

Twenty CRM

Tag

lossy
Fully supported

Sellsy SmartTags are tagging labels applied to Invoices, Orders, and Credit Notes. Twenty supports tags on most objects. We map SmartTags to Twenty Tags on the respective object records. If the destination uses a custom Invoice or Order object, tags migrate to that object's tag field. SmartTags without a matching taggable field are held for customer decision on custom field creation.

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.

Sellsy logo

Sellsy gotchas

High

Owner name uniqueness required in CSV exports

Medium

Pricing numbers scattered across modular and bundled models

Medium

SmartTags are a tagging layer, not a structured object

Medium

Public API rate limits not documented

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

  • Twenty lacks native sequencing for follow-up cadences

    Multiple reviewer threads and the r/CRM community confirm that Twenty CRM does not currently support native sequencing (automated multi-step follow-up cadences). Sellsy sequences and automation workflows do not have a direct equivalent in Twenty. We do not migrate sequences as code. We deliver a written inventory of every active Sellsy sequence with its steps, delays, and trigger conditions so the customer's admin can evaluate third-party tools (e.g., a separate sales engagement platform) or rebuild manually as a process document. This is a known Twenty roadmap item and teams should plan accordingly.

  • No automated incremental numbering for Deal IDs in Twenty

    A Reddit r/selfhosted thread on Twenty v2.0 explicitly notes that automated incremental numbering for Opportunities and project IDs was absent and stalled at least one migration. Sellsy auto-generates sequential IDs for Opportunities; Twenty does not. We flag this during pre-migration scoping and recommend the customer define a naming convention (prefix + date, prefix + sequential number via external script, or manual entry) before migration. This does not block data migration but requires a workflow decision post-migration.

  • Sellsy's flat Contact model requires pre-migration split

    Sellsy exports Contacts as a single flat model bundling Individuals and Companies with a type discriminator field. Exports do not separate these cleanly by default. We run a pre-flight split step that separates Individual-type contacts from Corporation-type contacts before any import into Twenty's Person and Company objects. Failure to split results in company records with individual-type fields (mobile numbers, first names) in Twenty's Company object, which corrupts the data model and requires a cleanup migration.

  • Sellsy CSV export owner name uniqueness can silently misassign

    Sellsy's CSV export for contacts does not deduplicate owner names. If multiple Staff members share the same name, any CSV-based import (including into Twenty) uses the first name match only, silently defaulting owner assignment to a single person across all affected records. We detect duplicate owner names during pre-flight and ask the customer to either disambiguate in Sellsy before export or provide a unique identifier field. This check is part of our standard Sellsy pre-flight before any migration begins.

  • Database migration failures reported in certain Twenty self-hosted versions

    GitHub issues on twentyhq/twenty (Issue #12936, #14705) document database migration failures during self-hosted version upgrades — specifically with Postgres image configuration, core.keyValuePair table access, and blank CRM screens after updating from v1.3.0 to v1.6.7. If the customer is self-hosting Twenty, we confirm the Postgres image version and run database migrations as a pre-flight step before any data import. Docker Compose and Kubernetes deployments require explicit migration command execution that is not always automatic on image update.

Migration approach

Six steps for a successful Sellsy to Twenty CRM data migration

  1. Discovery and Sellsy data audit

    We audit the source Sellsy account across all modules: Contact count (with type split analysis), Corporation count, Opportunity volume and pipeline stages, financial document volume (Invoices, Orders, Credit Notes), product catalog size, Staff roster with name uniqueness check, and SmartTag usage per object. We also inventory active sequences, workflows, and automations for the written handoff document. This phase produces a Sellsy Export Preparation checklist including the Contact type-split requirement and owner deduplication action items.

  2. Twenty schema configuration and custom object setup

    We configure the Twenty CRM destination workspace before any data import. This includes creating the Person and Company relationship if not already configured, setting up pipeline stages mapped from Sellsy pipeline stages, creating a custom Invoice object (or custom fields on Opportunity) to receive Sellsy financial documents, configuring Owner/User accounts mapped from the Sellsy Staff roster, and setting up any custom fields required to receive Sellsy custom field values. Schema configuration is validated in a staging environment before production migration begins.

  3. Contact split and Staff-Owner reconciliation

    We run the Sellsy Contact export through our pre-flight split: Individual-type contacts route to the Person import pipeline; Corporation-type contacts route to the Company import pipeline. Simultaneously, we reconcile Sellsy Staff records to Twenty Users by email match, flagging any duplicate owner names or Staff records without a matching User for the customer's admin to resolve before record import. This step gates all subsequent record imports because OwnerId references are required on Opportunities and Tasks.

  4. Core record migration in dependency order

    We run production migration in record-dependency order: Companies (from Sellsy Corporations), People (from Sellsy Individual contacts), Opportunities (with OwnerId and CompanyId resolved via the cross-reference mapping), Products, Tasks and Activities (via API with timestamps preserved), then financial documents (Invoices, Orders, Credit Notes if the custom Invoice object is configured). Each phase emits a row-count reconciliation report before the next phase begins. We use Twenty's REST API with rate-limit handling and exponential backoff.

  5. SmartTag and custom field migration

    We map Sellsy SmartTags to Twenty Tags on the respective object records (Invoice, Order, Opportunity, Company). Custom field values from Sellsy migrate to Twenty's corresponding custom fields by field label match. Any SmartTags that cannot map to a taggable field are logged and presented to the customer for a custom field decision. Custom field schema is inspected via Sellsy's GET /custom-fields endpoints before migration to ensure no values are dropped silently.

  6. Cutover, validation, and automation handoff

    We freeze Sellsy writes during cutover, run a delta migration of any records modified during the migration window, then mark Twenty as the system of record. We deliver the Sellsy Sequence and Automation Inventory document to the customer's admin team, documenting every active sequence, its trigger, steps, delays, and a recommendation for how to reproduce the outcome in Twenty or via a third-party sequencing tool. We support a one-week hypercare window for reconciliation issues. Workflow and automation rebuilds are outside standard scope and require a separate engagement or admin-level rebuild.

Platform deep dives

Context on both ends of the pair

Sellsy logo

Sellsy

Source

Strengths

  • Comprehensive feature stack covering CRM, invoicing, pre-accounting, and marketing in a single subscription.
  • Native GDPR compliance and French market features including SIRENE directory enrichment.
  • Competitive pricing for very small to mid-sized French businesses compared to international alternatives.
  • Integrated electronic document signing reduces the need for third-party document workflow tools.
  • Automation of routine billing and proposal workflows reduces manual administrative overhead.

Weaknesses

  • Steep learning curve with a one-week ramp-up period reported by multiple reviewers.
  • Interface and UX design feel dated compared to modern CRM alternatives like Pipedrive.
  • Pricing structure has been in transition from modular to bundled, creating confusion across public sources.
  • Limited API documentation and undocumented public rate limits complicate programmatic integrations.
  • Owner name uniqueness requirement in CSV exports can block bulk imports with duplicate owners.
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 Sellsy 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

    Sellsy: Not publicly documented.

  • Data volume sensitivity

    A

    Sellsy exposes a bulk API — large-volume migrations stream efficiently.

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Small migrations under 10,000 Contacts and 1,500 Deals with no custom Invoice configuration complete in two to three weeks. Migrations with active Invoice, Order, and Credit Note histories, a large product catalog, or a Staff roster requiring extensive Owner reconciliation extend to five to eight weeks. The pre-migration Contact split step (Individual vs Corporation separation) typically takes one to two days of customer action before we can begin data extraction.

Adjacent paths

Related migrations to explore

Ready when you are

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