CRM migration

Migrate from SendCloud to Odoo CRM

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

SendCloud logo

SendCloud

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between SendCloud and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Migrating from SendCloud to Odoo CRM is a cross-domain move: SendCloud is a shipping automation platform with no native CRM objects, while Odoo CRM is part of a full ERP suite with Contacts, Companies, Opportunities, and pipeline management. SendCloud stores customer data as recipient names attached to Parcel and Shipment records, not as structured contact records. We extract and reshape that data into Odoo Contacts and Companies during migration, preserving shipment history, address books, return records, and carrier routing preferences. We do not migrate SendCloud Workflows, return portal templates, or negotiated carrier rate tables as these are platform-stored values with no export path. We do not migrate shipping labels as binary files. We deliver a written inventory of webhook endpoint configurations and integration credentials that your admin rebuilds in Odoo after cutover.

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

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How SendCloud objects map to Odoo CRM

Each row shows how a SendCloud object lands in Odoo CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

SendCloud

Parcels

maps to

Odoo CRM

Delivery Order

1:1
Fully supported

SendCloud Parcel records map to Odoo Stock Picking records with move lines representing the shipped items. Each Parcel's weight, dimensions, reference number, status, and carrier information migrate as fields on the Stock Picking and stock.move records. Parcel status (shipped, in_transit, delivered, returned) maps to Odoo's picking state and move state fields. The SendCloud Parcel external_id is preserved as a custom field for reconciliation.

SendCloud

Shipments

maps to

Odoo CRM

Sale Order

1:1
Fully supported

SendCloud Shipment records, which group one or more Parcels sent to the same recipient, map to Odoo Sale Orders. The recipient address from the Shipment becomes the Delivery Address on the Sale Order. If the customer does not already exist as an Odoo Contact, we create one from the shipment recipient data. Shipment carrier and service level map to Odoo's delivery method and shipping_cost fields on the Sale Order.

SendCloud

Returns

maps to

Odoo CRM

Return (Stock Picking type return)

1:1
Fully supported

SendCloud Return records track the inbound flow of parcels back to the merchant. We map these to Odoo Stock Pickings of type 'return' linked to the original outbound Delivery Order. Return reason codes from SendCloud migrate to a custom picklist field on the return picking. Note that SendCloud return portal settings (reason code configuration, label templates) are not exposed via the API and require manual reconfiguration in Odoo after migration.

SendCloud

Addresses (ship-to)

maps to

Odoo CRM

Contact

1:many
Fully supported

SendCloud stores ship-to addresses as structured objects on Shipments and Returns. Multiple shipments to the same address are consolidated into a single Odoo Contact record with the address set as the primary delivery address. Name, street, city, postal code, country, and phone migrate directly. Email addresses, if present on shipment recipient data, migrate as email fields on the Contact. We deduplicate by address hash to avoid creating duplicate Contact records for repeat customers.

SendCloud

Addresses (ship-from warehouse)

maps to

Odoo CRM

Company + Warehouse

1:1
Fully supported

SendCloud's sender address configuration, used as the ship-from origin on Parcels, maps to an Odoo Company record and a Warehouse record. The Warehouse address in Odoo must match the Address Name field in SendCloud exactly (case-sensitive) for return processing to work correctly. We flag this requirement during scoping and validate the name match before production migration begins.

SendCloud

Carriers

maps to

Odoo CRM

Delivery Carrier

lossy
Mapping required

SendCloud carrier routing rules and activated carrier integrations map to Odoo Delivery Carriers configured in Inventory > Configuration > Delivery Methods. We preserve the carrier-to-carrier mapping (which SendCloud carriers correspond to which Odoo delivery carrier integrations) in a written carrier routing table. Carrier-specific negotiated rates stored in SendCloud's internal tables do not transfer and are flagged as a high-severity gotcha for the customer to resolve directly with carriers post-migration.

SendCloud

Custom Fields (on Parcels)

maps to

Odoo CRM

Custom Fields on Stock Picking

lossy
Fully supported

SendCloud custom fields on Parcels (available on certain plan tiers) map to custom fields on the Odoo stock.picking model. We inventory all SendCloud custom field schemas during scoping, map them to Odoo custom fields with matching data types, and pre-create the destination schema before migration so that custom field data migrates into typed custom fields rather than being dropped.

SendCloud

Webhook Subscriptions

maps to

Odoo CRM

Webhook Endpoint Inventory (no import)

1:1
Mapping required

SendCloud webhook endpoint configurations (Parcel status change, shipment event, return update webhooks) are exported as a written inventory document listing each webhook's endpoint URL, event type, and secret key. The webhook subscriptions themselves cannot be transferred to Odoo because they are tied to SendCloud API credentials. The inventory document is delivered to the customer's admin for recreation in Odoo's webhook or automation triggers post-migration.

SendCloud

Integrations (Shop platforms)

maps to

Odoo CRM

Integration Credential Inventory

1:1
Fully supported

SendCloud's native shop platform integrations (Shopify, WooCommerce, Magento, PrestaShop, PrestaShop) connect order data to SendCloud. We inventory active integrations and flag which require new API credentials to be generated after migration. Odoo has its own native e-commerce (Odoo Website / eCommerce) and shop connectors, and if the customer intends to consolidate into Odoo's shop platform, we flag the integration migration path in the scope document.

SendCloud

Users

maps to

Odoo CRM

User

1:1
Mapping required

SendCloud user accounts (team members with shipping operation roles) are mapped to Odoo User records by email match. SendCloud role assignments do not have direct Odoo equivalents because Odoo uses a more granular rights group system covering per-app access. We deliver a role mapping table that maps SendCloud user roles to Odoo access groups (Shipping User, Inventory User, Sales User, etc.) for the customer's admin to assign post-migration.

SendCloud

Shipping Labels

maps to

Odoo CRM

Label Format Configuration

lossy
Fully supported

SendCloud shipping label data (PDF, ZPL, PNG formats) is not migrated as binary files. We preserve the label format preferences (format type, carrier-specific formatting) in a written configuration document. After migration, shipping labels are regenerated in Odoo through the delivery carrier integration using the carrier API credentials configured at the destination. This is standard practice because label binary files expire and carrier APIs regenerate current labels on demand.

SendCloud

Parcel Status History

maps to

Odoo CRM

Stock Move Line Activity Log

1:1
Fully supported

SendCloud tracks Parcel status transitions (created, label_printed, handed_to_carrier, in_transit, out_for_delivery, delivered, returned) over time. Each status transition timestamp migrates as a note or activity entry on the corresponding Odoo Stock Picking record, preserving the historical delivery timeline. This ensures the full tracking history is available in Odoo without requiring access to the SendCloud dashboard.

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

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Negotiated carrier rates are SendCloud-stored values that do not export

    SendCloud stores each merchant's negotiated carrier rates within its own platform. These rates are not available via the SendCloud API export and cannot be transferred to Odoo or re-established through any migration process. We flag this during scoping and preserve all other Parcel, Shipment, Return, and label format data. The customer must renegotiate carrier contracts directly with each carrier or port existing agreements. FlitStack AI does not broker carrier contract transfers or provide carrier rate migration services.

  • SendCloud has no CRM objects; customer data must be reshaped from shipment records

    SendCloud does not have Contacts, Companies, or Leads. Customer data exists only as recipient name and address fields attached to Shipment and Parcel records. A multi-step reshape is required: extract distinct recipient records from shipment data, deduplicate by address hash and name, create Odoo Contact records (with email if available), create or link Odoo Company records, and link each Delivery Order to the correct Contact. This reshape is included in standard migration scope but adds time for accounts with high shipment volumes and many repeat recipients.

  • Odoo warehouse name must exactly match SendCloud Address Name (case-sensitive)

    SendCloud's return processing uses an Address Name field to match return parcels to the correct warehouse. Odoo's warehouse configuration uses a Warehouse Name field for the same purpose. The Odoo documentation explicitly states that the Warehouse name in Odoo and the Address Name in SendCloud must be exactly the same, character-for-character, for returns to process correctly. We validate this name match during scoping and flag any discrepancy. If the names differ, the customer must rename one before return records can be linked correctly.

  • Webhook subscriptions and integration credentials must be rebuilt in Odoo

    SendCloud webhook subscriptions and shop platform integration credentials are bound to the SendCloud account and cannot be transferred. After migration, the destination Odoo environment will not receive events from SendCloud. We export a written inventory of all webhook endpoint configurations, event types, and integration credentials for the customer's admin to recreate in Odoo's automation and webhook modules. The admin must also update any shop platform webhooks to point to Odoo instead of SendCloud to avoid duplicate order creation.

  • SendCloud free plan parcel cap can interrupt migration export

    SendCloud's free plan limits accounts to 20 parcels per month. Migration export operations that pull historical shipment data via API consume against this limit. If the account is on a free plan and historical shipment volume exceeds 20 during the export window, the account hits its cap and API calls return errors. We scope the current SendCloud plan before beginning export and recommend upgrading to a paid tier (Lite at €26/mo or higher) if historical volume exceeds the free plan cap during the migration window.

  • SendCloud return portal settings are not fully exposed via API

    SendCloud's return portal configuration includes return reason codes, label template selections, return-to-address routing rules, and customer-facing return portal branding. The SendCloud API does not expose these settings in full. We inventory available return configuration during scoping but cannot guarantee complete coverage. Customers should plan to manually reconfigure return portal settings in Odoo (via Inventory > Returns configuration or a third-party Odoo returns app) after migration, using the SendCloud inventory document as a reference.

Migration approach

Six steps for a successful SendCloud to Odoo CRM data migration

  1. Discovery and SendCloud plan audit

    We audit the SendCloud account across plan tier, activated carriers, webhook endpoint list, integration connections (Shopify, WooCommerce, Magento, etc.), custom field schemas on Parcels and Returns, and historical shipment volume by month. We identify the free-plan parcel cap risk and recommend a temporary paid tier upgrade if historical export volume will exceed 20 parcels during the migration window. The discovery output is a written migration scope document with the full object inventory, carrier routing table, and webhook inventory.

  2. Odoo schema design and warehouse naming validation

    We design the Odoo destination schema. This includes creating or confirming the Company and Warehouse records with names validated against SendCloud's Address Name field, configuring Delivery Carriers to match the active SendCloud carrier integrations, designing the Contact and Company structure (including whether to use Odoo's virtual Company model or direct Contact with address), and pre-creating custom fields on stock.picking to match SendCloud Parcel custom fields. Schema is validated in an Odoo test database before production deployment.

  3. Customer data reshape and address book normalization

    We extract all distinct recipient records from SendCloud Shipment data by parsing recipient name, email, phone, and address fields across every shipment. We deduplicate by address hash, create Odoo Contact records with full address data, create or link Odoo Company records, and assign a primary delivery address to each Contact. Email addresses, where present in shipment recipient data, are used to match existing Odoo Contacts if the Odoo instance already contains customer data. The reshape logic is validated against a random sample of 50 shipments before full export begins.

  4. Sandbox migration and reconciliation

    We run a full migration into an Odoo test environment using a subset of production data volume. The customer reconciles record counts (Contacts created, Companies created, Delivery Orders linked to Contacts, Return pickings linked to original outbound pickings, custom field values present), spot-checks 30-50 records against SendCloud source data, and validates carrier configuration against the carrier routing table. Sign-off on the sandbox migration gates production migration.

  5. Production migration in dependency order

    We run production migration in dependency order: Contacts and Companies first (from shipment recipient reshape), followed by Warehouse and Delivery Carrier configuration (with carrier routing table applied), Delivery Orders (from SendCloud Parcels linked to Contacts), Return pickings (linked to original outbound Delivery Orders), Parcel status history (as activity notes on each Stock Picking), custom fields (mapped to pre-created stock.picking custom fields), and webhook and integration inventory document delivery. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and admin handoff

    We freeze SendCloud API writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record for customer and shipment data. We deliver the webhook endpoint inventory, integration credential list, carrier routing table, and return portal configuration inventory to the customer's admin for rebuilding. We support a one-week post-cutover window to resolve reconciliation issues raised by the customer's team. We do not rebuild SendCloud automations as Odoo automation rules; that work is documented in the inventory and handled by the customer's admin or an Odoo partner.

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.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 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 Odoo CRM.

  • Object compatibility

    B

    1 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 Odoo 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 Odoo CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Migrations under 15,000 shipments with no custom objects, single warehouse, and straightforward customer data reshape land between three and five weeks. Migrations with high historical volume (over 50,000 Parcel records), multiple SendCloud warehouses, complex return record linking, custom Parcel field schemas, or an existing Odoo instance with pre-existing data move to eight to fourteen weeks because of the customer reshape logic, address deduplication, and multi-phase reconciliation work. The Odoo CRM module is a standard Odoo application, so no Odoo version upgrade or module compatibility work is required unless the Odoo instance is running an older major version.

Adjacent paths

Related migrations to explore

Ready when you are

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