CRM migration

Migrate from SendCloud to Twenty CRM

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

SendCloud logo

SendCloud

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

60%

6 of 10

objects map 1:1 between SendCloud and Twenty CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

SendCloud is a purpose-built e-commerce shipping platform and does not function as a CRM, so a SendCloud-to-Twenty CRM migration is not a like-for-like platform swap but rather the extraction of any customer and address data from SendCloud into a new CRM foundation. We export SendCloud address records (ship-to and ship-from addresses attached to shipments and returns), parcel and shipment history, return data with reason codes, and any custom fields defined on parcels. Twenty CRM's standard objects—Companies, People, Opportunities, Tasks, Notes—receive this data via the REST API with custom objects created for Shipments and Returns since Twenty has no native shipping model. We do not migrate carrier-specific negotiated rates, live webhook subscriptions, or shop platform integration credentials; these require manual reconfiguration post-migration. We deliver a written inventory of any SendCloud return portal settings and carrier routing rules so the customer's team can rebuild these manually in Twenty or the carrier portal directly.

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

SendCloud logo

SendCloud

What's pushing teams away

  • Initial integration setup is complex and time-consuming; some merchants report needing to assist SendCloud's own team with API and development issues.
  • Carrier coverage is inconsistent across regions; merchants shipping to or from specific countries report limited carrier options or missing support.
  • The platform is purpose-built for e-commerce shipping and lacks the broader sales, marketing, or customer management features that horizontal CRM platforms provide.
  • Pricing scales with shipment volume and carrier count, making it harder to predict costs as order volumes grow or as carriers are added.

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

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

SendCloud

Address

maps to

Twenty CRM

Company and People

1:many
Fully supported

SendCloud stores ship-to and ship-from addresses as structured objects linked to Shipments and Returns. Ship-to addresses with a customer name map to Twenty People records; ship-from addresses (warehouse or business origin) map to Twenty Company records as the company's primary address. We deduplicate by address string during export and preserve the original SendCloud address_id as a custom field sc_address_id__c for reconciliation. Address validation rules differ between platforms; we flag any address records that fail Twenty's validation during import for manual correction.

SendCloud

Shipment

maps to

Twenty CRM

Custom Object: Shipment

1:1
Fully supported

SendCloud Shipments represent the logical grouping of one or more Parcels sent to the same recipient address. We create a custom Shipment object in Twenty with fields for shipment_date, shipping_method, service_level, carrier, tracking_number, destination_address (lookup to People), and ship_from_address (lookup to Company). The SendCloud shipment_id becomes sc_shipment_id__c on the custom object for cross-reference. Historical shipment status (in_transit, delivered, returned) migrates as a select field.

SendCloud

Parcel

maps to

Twenty CRM

Custom Object: Parcel (linked to Shipment)

1:1
Fully supported

SendCloud Parcels are the transactional unit with weight, dimensions, reference number, and status. We create a custom Parcel object in Twenty with fields for parcel_reference, weight, dimensions, status, and a lookup to the parent Shipment object. Each Parcel's shipment link is resolved at migration time using the SendCloud parcel_id-to-shipment_id relationship. Parcel custom fields (defined on certain SendCloud plans) migrate as custom fields on the Parcel object, created in Twenty before import.

SendCloud

Return

maps to

Twenty CRM

Custom Object: Return

1:1
Fully supported

SendCloud Return requests track inbound parcels with return reason codes, return label data, and RMA status. We create a custom Return object in Twenty with fields for rma_number, return_reason, return_status, return_label_url, and lookups to the original Shipment (via sc_shipment_id__c) and the People record of the returning customer. Return reason codes are mapped to a select field with options sourced from SendCloud's available codes during scoping.

SendCloud

User

maps to

Twenty CRM

People (Account Owner)

1:1
Fully supported

SendCloud User accounts with shipping operations roles map to Twenty People records. We extract user name, email, and role assignments from SendCloud and create corresponding People records in Twenty. Role assignments are stored as a text field since Twenty's permission model is workspace-scoped and not directly equivalent to SendCloud's account-level role structure. Active SendCloud users without a matching email in Twenty are held in a reconciliation queue for the customer's admin to provision.

SendCloud

Custom Fields (Parcels and Returns)

maps to

Twenty CRM

Custom Fields on Parcel and Return objects

lossy
Fully supported

SendCloud custom fields defined on Parcels and Returns are account-specific and exposed partially via API. We inventory all custom fields during scoping, map their data types to equivalent Twenty field types (text, number, date, select, multi-select), create the fields in Twenty's Settings → Data Model before import, then populate them during the data load. Any custom fields with unsupported data types are flagged for manual migration post-load.

SendCloud

Webhook Subscriptions

maps to

Twenty CRM

Webhook Subscriptions (re-establishment)

1:1
Mapping required

SendCloud webhook endpoint configurations are exported during scoping as a written inventory document. We do not migrate live webhook connections because they are tied to SendCloud credentials and will not function at Twenty. The inventory includes the endpoint URL, event type (parcel_status, shipment_created, return_initiated), and payload schema for each webhook so the customer's development team can recreate these in Twenty's webhook configuration. This is a manual rebuild task outside migration scope.

SendCloud

Integrations

maps to

Twenty CRM

Integrations (re-establishment)

1:1
Mapping required

SendCloud's native integrations with Shopify, WooCommerce, Magento, PrestaShop, and other shop platforms are inventoried during scoping. We export integration configuration settings (API keys, webhook URLs, sync settings) as a written document for the customer's admin to reconfigure in the destination platform. Twenty has no native Shopify or WooCommerce integration; the customer will need to build a custom integration via Twenty's REST or GraphQL API, use an iPaaS tool like Zapier or n8n, or engage a developer. This is documented as a post-migration configuration task.

SendCloud

Carrier

maps to

Twenty CRM

Select field on Shipment

lossy
Fully supported

Carriers defined in SendCloud's routing rules map to a select field on the custom Shipment object in Twenty. We create a carrier__c select field with options sourced from the active carrier list in the SendCloud account. Carrier-specific routing rules (which are SendCloud-stored workflow configurations) are documented in the integration inventory for manual rebuild. Merchant-specific negotiated carrier rates are not exported from SendCloud and do not migrate; this is flagged as a high-severity gotcha before migration begins.

SendCloud

Shipping Labels

maps to

Twenty CRM

URL field on Parcel

lossy
Fully supported

SendCloud shipping label binary files are not migrated as they are carrier-generated PDF or ZPL files stored in SendCloud's file system. We create a label_url__c text field on the Parcel object and populate it with the SendCloud label URL if accessible via API during the export window. Post-migration, the customer regenerates labels from the carrier portal directly using the tracking number and shipment data migrated to Twenty. Label format preferences (size, branding) are documented for manual reconfiguration at the carrier level.

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.

SendCloud logo

SendCloud gotchas

High

Carrier-specific rate negotiated rates do not transfer

High

Webhook and integration credentials must be re-established

Medium

Free tier parcel cap is easy to exceed during migration

Medium

Return workflow configurations are account-specific

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

  • Carrier-negotiated rates do not export from SendCloud

    SendCloud stores each merchant's negotiated carrier rates within its own platform's internal rate tables, which are not accessible via the public API or exportable as a portable data set. When migrating away from SendCloud, these rates are lost and must be re-negotiated directly with carriers or ported via carrier account management portals. We flag this during scoping so customers understand the scope of re-negotiation before cutover. All other parcel, shipment, return, address, and label-format preference data migrates normally.

  • Shop platform integrations must be rebuilt for Twenty

    SendCloud's native integrations with Shopify, WooCommerce, Magento, PrestaShop, and other shop platforms connect order data to the shipping workflow via SendCloud API credentials. Twenty CRM has no native e-commerce platform integration; the customer must build a custom integration via Twenty's REST or GraphQL API, use an iPaaS automation tool like Zapier or n8n, or hire a developer. We inventory the active SendCloud integrations during scoping and deliver a written configuration guide, but the actual integration rebuild is outside migration scope and requires the customer's development resources.

  • SendCloud webhook subscriptions do not transfer

    SendCloud webhook subscriptions are tied to the SendCloud account credentials and endpoint URLs and cannot be redirected to Twenty. We export the webhook configuration (event types, endpoint URLs, payload schemas) as a written inventory document. The customer's development team must recreate these webhooks in Twenty's webhook configuration post-migration. Live webhook connections will cease to function at cutover unless the customer updates the external system's webhook URL to point to Twenty before disabling SendCloud.

  • Return portal settings require manual reconfiguration

    SendCloud's return portal settings—including return reason codes, return label templates, and return-to-address configurations—are set at the account level and not fully exposed via the public API. We inventory the available return configuration during scoping, but full reconfiguration of the return portal must be completed manually at the destination platform or with the carrier directly. Return data (RMA numbers, return reasons, return status) migrates as records in Twenty's custom Return object, but the self-service return portal experience must be rebuilt separately.

  • Free SendCloud plan parcel cap risks migration interruption

    SendCloud's free plan allows up to 20 parcels per month. Migration export operations that pull historical shipment data consume API calls against this limit, potentially causing the account to hit its cap before the migration is complete. We scope the account's current plan before beginning export and recommend customers temporarily upgrade to a paid SendCloud tier (Lite at €26/mo or higher) if historical volume exceeds the 20-parcel threshold during the export window. The free tier cap does not affect paid-plan accounts.

Migration approach

Six steps for a successful SendCloud to Twenty CRM data migration

  1. Account scoping and plan assessment

    We audit the SendCloud account across plan tier (Free/Lite/Growth/Premium/Enterprise), API access scope, historical parcel and shipment volume, active custom fields on Parcels and Returns, carrier routing rules, webhook subscriptions, and shop platform integrations. We extract the full list of active integrations and webhook endpoints during this phase. The scoping output is a written migration scope document with record counts per object, a list of custom fields to create in Twenty, and a flag for any carrier rate dependencies. We recommend any temporary SendCloud plan upgrade required to avoid free-tier parcel cap interruption during export.

  2. Twenty workspace preparation

    We create the Twenty workspace by setting up the data model before any data import. This includes creating the custom Shipment, Parcel, and Return objects via Settings → Data Model, adding all custom fields (carrier__c, sc_shipment_id__c, sc_address_id__c, return_reason, rma_number, and any parcel custom fields sourced from SendCloud), and configuring select field options for status values and carrier names. We invite all team members via Settings → Members before import so that any owner or assignee references in the migrated data resolve correctly.

  3. Export from SendCloud

    We export SendCloud data via CSV and API in dependency order: Addresses first (to resolve lookups), then Users, then Shipments (with parcel count and carrier data), then Parcels (linked to shipments), then Returns (linked to original shipment and customer). We handle pagination and chunking for accounts with large historical volumes. Webhook endpoint configurations and integration settings are documented as written inventories rather than extracted as portable credentials.

  4. Data transformation and field mapping

    We transform the exported SendCloud data against the mapping document created during scoping. Address records are split into Twenty People (ship-to) and Company (ship-from) records with deduplication. Shipment records are created as custom Shipment object records with carrier, tracking number, and destination address lookups resolved. Parcel records are linked to parent Shipment records via the sc_shipment_id__c reference. Return records are linked to both the original Shipment and the People record of the returning customer.

  5. Sandbox import and reconciliation

    We run a test import into a Twenty sandbox or trial workspace to validate the data model, field mappings, and lookup resolution before production migration. The customer's team spot-checks 20-30 records against the SendCloud source for accuracy (addresses, shipment dates, tracking numbers, return status). Any field mapping corrections or custom field additions are made in Twenty's data model, and the test import is repeated until the customer signs off. This step prevents data integrity issues in production.

  6. Production migration and cutover

    We run the production migration in dependency order: Companies and People first, then Shipments, then Parcels (linked to shipments), then Returns. Each phase emits a row-count reconciliation report before the next phase begins. We freeze SendCloud writes during the cutover window, run a final delta import of any records modified during migration, then enable Twenty as the system of record for customer and shipment tracking. We deliver the webhook and integration inventory document for the customer's development team to rebuild post-migration.

Platform deep dives

Context on both ends of the pair

SendCloud logo

SendCloud

Source

Strengths

  • Connects 25–80+ carriers including DHL, UPS, FedEx, and regional carriers in a unified dashboard.
  • Native integrations with 50+ shop platforms including Shopify, WooCommerce, and Magento.
  • Automated post-purchase tracking emails and branded tracking pages without manual intervention.
  • API-first platform with SDKs in Python, PHP, Ruby, Java, Node.js, and .NET.
  • Multi-market routing rules and customs documentation for cross-border e-commerce shipments.

Weaknesses

  • Initial integration and API setup is complex; customer reviews report needing to assist SendCloud's own development team with incomplete API documentation.
  • Rate limits and API quotas are not publicly documented, making migration scoping unpredictable for high-volume accounts.
  • Carrier coverage is inconsistent across certain regions and shipping corridors, limiting utility for merchants with geographically specific fulfillment needs.
  • The platform is e-commerce shipping-focused and does not offer broader CRM, marketing automation, or sales pipeline features.
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 SendCloud 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

    SendCloud: Not publicly documented.

  • Data volume sensitivity

    A

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

Estimator

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

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

Can't find your answer?

Walk through your SendCloud 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 two and four weeks for accounts with fewer than 5,000 address records and clean custom field schemas. Accounts with high historical shipment volume (over 50,000 records), complex custom field hierarchies, or multiple carrier routing configurations move to four to eight weeks because of chunked API sequencing, custom object creation in Twenty's schema, and the lookup resolution across shipment-to-address relationships. Discovery and scoping takes one to two weeks regardless of volume.

Adjacent paths

Related migrations to explore

Ready when you are

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