CRM migration

Migrate from Sanoflow to Odoo CRM

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

Sanoflow logo

Sanoflow

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

62%

8 of 13

objects map 1:1 between Sanoflow and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Sanoflow to Odoo CRM is a platform-class migration that also involves restructuring around Odoo's ERP-integrated data model. Sanoflow organises customer interactions around Enquiries and Channels feeding a shared Inbox; Odoo CRM uses the crm.lead model for inbound prospects and res.partner for the contact-company hierarchy. We resolve the Enquiry-to-Lead split during scoping, map Sanoflow Custom Fields to Odoo ir.model.fields, and preserve Pipeline stage order as Odoo stage sequences. WhatsApp message templates cannot transfer between Meta Business accounts — we document all active template content for the customer's admin to re-submit post-migration. Sanoflow Flows and automation logic have no documented export endpoint, so we deliver a written Workflow Specification Document describing every trigger, step, and action for manual recreation in Odoo Studio or automated actions. Channel credentials (WhatsApp Business API tokens) are destination-specific and cannot migrate; the customer provisions new channels in Odoo WhatsApp integration 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

Sanoflow logo

Sanoflow

What's pushing teams away

  • WhatsApp API conversation-based pricing is opaque until active — teams underestimate Meta's per-conversation fees layered on top of Sanoflow's subscription.
  • Flows and automation logic do not export cleanly; no documented public API means migration requires manual recreation of workflows in the destination.
  • Tier limits on Channels (3 on Starter, 10 on Growth) force plan upgrades that were not anticipated during initial pricing discussions.
  • Teams with complex multi-brand or multi-region operations report friction managing multiple WhatsApp Business accounts under one Sanoflow org.
  • Customer support responsiveness is flagged as inconsistent in community discussions, particularly for Enterprise-tier billing disputes.

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 Sanoflow objects map to Odoo CRM

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

Sanoflow

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

Sanoflow Contact records map to Odoo res.partner. The contact's name, phone, email, and custom field values migrate directly. Sanoflow does not have a separate Account/Company object — contacts store company affiliation as a text field or custom field. We create res.partner records for each company name encountered in contacts and link individual contacts as children of the parent partner record using partner_id. Owner assignment (hubspot_owner equivalent) maps to Odoo user_id on res.partner.

Sanoflow

Enquiry

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Sanoflow Enquiry records map to Odoo crm.lead. The enquiry body, source channel, status, and assigned agent migrate. Enquiry custom fields map to crm.lead custom fields created in Odoo Studio before migration. The Sanoflow channel source (WhatsApp, Instagram, Messenger, TikTok) is preserved as a tag on the crm.lead for reporting. Enquiry Forms submitted with no existing Contact create crm.lead records with the contact_name field populated from the form submission.

Sanoflow

Pipeline

maps to

Odoo CRM

crm.stage (per team)

lossy
Fully supported

Sanoflow Pipelines map to Odoo stage sequences within crm.lead. Each Sanoflow Pipeline name becomes an Odoo Sales Team (crm.team) with its own stage sequence. Stage order and names migrate 1:1. Stage-specific automation rules (Sanoflow stage-entry triggers) are flagged in the Workflow Specification Document for manual rebuild in Odoo automated actions or Studio.

Sanoflow

Pipeline Stage

maps to

Odoo CRM

crm.stage

1:1
Fully supported

Sanoflow pipeline stages map directly to Odoo crm.stage records. Stage names, sequence order, and is_won/is_lost flags migrate. Probability percentages from Sanoflow map to Odoo stage on_change_mapping probability values. Stage-specific assignees and routing rules are documented in the Workflow Specification Document.

Sanoflow

Channel

maps to

Odoo CRM

crm.tag (channel tracking)

lossy
Fully supported

Sanoflow Channels (WhatsApp, Instagram, Messenger, TikTok) cannot be migrated as live channel credentials — WhatsApp Business API tokens are destination-specific and tied to the Sanoflow Meta Business account. We document each active Channel name and type as a crm.tag with tag_name prefixed by 'channel_' (e.g., channel_whatsapp, channel_instagram) so the customer can filter lead sources by channel in Odoo reporting. Channel reconnection happens post-migration in Odoo WhatsApp integration settings.

Sanoflow

Custom Fields (Contact)

maps to

Odoo CRM

Custom Fields (res.partner)

1:1
Fully supported

Sanoflow Custom Fields on Contacts (text, number, date, choice) at Growth tier and above migrate to Odoo custom fields on res.partner created via Odoo Studio before migration. Choice-field options map to selection fields or many2one relations depending on option count. Field labels and help text are preserved. We verify field types are compatible with Odoo's allowed field types before migration.

Sanoflow

Custom Fields (Enquiry)

maps to

Odoo CRM

Custom Fields (crm.lead)

1:1
Fully supported

Sanoflow Custom Fields on Enquiries migrate to Odoo custom fields on crm.lead. Date and datetime fields are validated against Odoo's datetime format before import. Choice fields with more than 40 options are mapped to many2one relations to avoid Odoo's selection field length limits.

Sanoflow

Flows

maps to

Odoo CRM

Automated Actions / Server Actions

lossy
Mapping required

Sanoflow Flows have no documented export endpoint. We cannot migrate Flows as code. We extract Flow metadata during scoping — name, trigger type, step count, and action types — and document every Flow in a Workflow Specification Document. The customer rebuilds flows in Odoo Automated Actions (triggered on crm.lead write/create), Server Actions, or Odoo Studio. Flow rebuild is outside migration scope and is handled by the customer's admin or an Odoo implementation partner.

Sanoflow

Teams and Custom Roles

maps to

Odoo CRM

crm.team

1:1
Mapping required

Sanoflow Teams and role assignments migrate to Odoo crm.team records. Team members map to crm.team member records linked to Odoo res.users. Sanoflow role names are preserved as tags on crm.team for reference. Permission granularity differences between Sanoflow and Odoo are documented — Sanoflow's per-Enquiry visibility rules may require simplification in Odoo based on the customer's chosen security model (record rules per team vs. global access).

Sanoflow

Enquiry Forms

maps to

Odoo CRM

Website Form (website.form) + crm.lead

lossy
Mapping required

Sanoflow Enquiry Forms cannot migrate as live web forms because they are tied to Sanoflow's frontend infrastructure. We document form field definitions, routing rules (which Flow a submission triggers), and field-to-Enquiry field mappings in a Form Specification Document. The customer rebuilds forms in Odoo's Website Form Builder or as custom website controllers. Form routing rules become Odoo Automated Action triggers on crm.lead creation.

Sanoflow

WhatsApp Broadcasts and Campaigns

maps to

Odoo CRM

Mail Template (mail.template) + crm.lead tags

1:1
Mapping required

WhatsApp campaign records (audience segments, message template content, send history metadata) migrate as documentation. Actual WhatsApp message template content is preserved in a text inventory for re-submission to Meta. The template approval status does not carry over — Meta requires fresh template approval in the new WhatsApp Business account. Odoo WhatsApp integration uses mail.template with wa.template model; we document the target template structure so the customer's admin creates the replacement templates post-migration.

Sanoflow

Webhooks

maps to

Odoo CRM

Webhook endpoint configuration

lossy
Not supported

Sanoflow Webhooks are Premium and Enterprise tier only and point to Sanoflow-specific destination URLs. Webhook endpoints cannot transfer between platforms. We document active webhook configurations (URL, event triggers, payload structure) in the Integration Specification Document. The customer recreates webhook endpoints in Odoo's Webhook module (Enterprise) or via custom ir.model.records with the out.wa webhook model.

Sanoflow

Owner (agent)

maps to

Odoo CRM

res.users

1:1
Fully supported

Sanoflow Owners (agents assigned to Enquiries) map to Odoo res.users by email match. Any Sanoflow Owner without a matching Odoo User goes to a reconciliation queue. The customer's Odoo admin provisions missing users before record import begins. Owner-less Sanoflow records (unassigned Enquiries) are held in a default Odoo team for manual reassignment 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.

Sanoflow logo

Sanoflow gotchas

High

WhatsApp API conversation charges are not included in subscription price

High

Flow automation has no documented export or API access

Medium

Channel and Pipeline limits per plan are enforced, not soft

Medium

WhatsApp message templates do not transfer between Meta Business accounts

Low

No public review presence makes quality verification difficult

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

  • Sanoflow has no documented public API for data extraction

    Sanoflow's Developer Hub (developers.sanoflow.io) returned no accessible content during research. There is no documented REST, GraphQL, or Bulk API for programmatic data extraction. We work with Sanoflow's native export capabilities where available and use screen-scraping fallback for objects without export paths. The absence of an API means that any undocumented export limitation discovered during migration may require scope adjustment. We document every extraction method used and flag any records that cannot be reached via automated extraction.

  • WhatsApp message templates do not transfer between Meta Business accounts

    WhatsApp Business message templates are tied to the Meta Business account connected in Sanoflow. Migrating to Odoo CRM means re-submitting all custom templates for Meta approval under the new WhatsApp Business account connected to Odoo. We document every active WhatsApp template name, content, and variable placeholders during scoping. Approval timelines are typically 24-48 hours per template. Templates that were rejected or pending approval at migration time may need to be restarted from scratch.

  • Flow automation has no export path and must be manually rebuilt

    Sanoflow's Flow Builder has no documented export endpoint or API access. We cannot extract Flow definitions programmatically. We document every active Flow during scoping — name, trigger type, step count, message content, and action types — in a Workflow Specification Document. The customer's admin or an Odoo implementation partner rebuilds these in Odoo Automated Actions, Server Actions, or Odoo Studio. This is a manual process that typically takes 1-3 days per complex Flow depending on step count and conditional branching depth.

  • Enquiry-to-Lead schema transition requires field-level mapping decisions

    Sanoflow Enquiries and Odoo crm.lead have different default schemas. Enquiry fields that have no direct crm.lead equivalent (custom Sanoflow fields, conversation-specific metadata) require mapping to custom crm.lead fields created in Odoo Studio before migration. Choice fields with more than 40 options exceed Odoo's selection field limit and must be re-architected as many2one relations. We surface these mapping decisions during scoping and resolve them before any data moves.

  • Odoo Community lacks native WhatsApp integration out of the box

    WhatsApp integration in Odoo requires an Odoo App (from the Odoo Apps store) or custom development using the WhatsApp Business API directly. Odoo Community Edition does not include WhatsApp channel support. Teams migrating from Sanoflow's native WhatsApp integration need to evaluate Odoo WhatsApp integration apps or budget for custom development to restore WhatsApp messaging in Odoo. We flag this gap during scoping and include WhatsApp channel restoration as a post-migration configuration item in the handoff document.

Migration approach

Six steps for a successful Sanoflow to Odoo CRM data migration

  1. Discovery and data audit

    We audit the Sanoflow account across all tiers (Starter, Growth, Premium, Enterprise), enumerating Contacts, Enquiries, Pipelines, Channels, active Flows, Custom Fields, Teams, Enquiry Forms, and Webhook configurations. We run export attempts on every object with available extraction methods and document any objects that cannot be reached automatically. We count active WhatsApp message templates, estimate conversation volume for Meta billing awareness, and assess whether the customer is on a Sanoflow plan that gates any migration-relevant objects.

  2. Odoo schema provisioning

    We provision the Odoo environment for migration. For Odoo Online (SaaS), we work in the customer's staging or production database. For Odoo Community self-hosted, we validate XML-RPC access and test connection credentials. We create all required custom fields on res.partner and crm.lead using Odoo Studio or direct model inheritance, configure Sales Teams (one per Sanoflow Pipeline), set up stage sequences matching Sanoflow stage order, and create crm.tag records for channel tracking. Schema is validated in a sandbox environment before any data moves.

  3. Workflow Specification Document delivery

    We deliver the Workflow Specification Document covering every active Sanoflow Flow: trigger type (event-based, time-based, form-submission), step sequence, message content, variable placeholders, and action types (assign, tag, notify, route). We also deliver an Integration Specification Document covering active Webhooks (URL, event type, payload structure) and Enquiry Form routing rules. These documents are the handoff artifacts for the customer's admin or Odoo implementation partner to rebuild automations post-migration.

  4. Data cleansing and preparation

    We run data quality checks on extracted Sanoflow data: duplicate Contacts by email and phone, malformed email addresses, missing required fields (name, phone) on Contact and Enquiry records, and choice field values that exceed Odoo's selection field limits. We normalise phone number formats to E.164 and standardise address fields to Odoo's address model. Stale Enquiry records (closed or archived more than 24 months ago) are flagged for archival rather than migration unless the customer specifies otherwise.

  5. Staging migration and reconciliation

    We run a full migration into the Odoo staging environment using production-like data volume. The customer's Odoo admin reconciles record counts (partners in, leads in, stage distribution, custom field values), spot-checks 25-50 random records against the Sanoflow source, and validates that tag assignments, team memberships, and owner assignments are correct. Any field mapping corrections, custom field type adjustments, or choice-field re-architecture happen here before production migration begins.

  6. Production migration and cutover

    We freeze Sanoflow writes during the cutover window, run a final delta migration of any records modified during staging sign-off, then enable Odoo as the system of record. We deliver the WhatsApp Template Inventory for Meta re-submission and the Automation Rebuild Tracker for Odoo admin progress. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. Channel reconnection (WhatsApp Business API provisioning in Odoo) and Flow rebuild remain with the customer's admin as post-migration configuration items.

Platform deep dives

Context on both ends of the pair

Sanoflow logo

Sanoflow

Source

Strengths

  • WhatsApp Business API integration without per-conversation markup, unlike competitors charging 12–35% premium.
  • Generous Starter tier (3 Channels, 5 Pipelines) lowers entry barrier for small teams evaluating the platform.
  • No-code Flow Builder with pre-built templates for common WhatsApp sales and support sequences.
  • Omnichannel Inbox unifying WhatsApp, Instagram, Messenger, and TikTok into a single agent workspace.
  • Multi-industry positioning (Healthcare, Ecommerce, Hospitality, Automotive) with vertical-specific workflow templates.

Weaknesses

  • No publicly documented API or developer documentation accessible via standard research — migration tooling is not supported.
  • WhatsApp conversation-based pricing by Meta adds a variable cost layer not visible in Sanoflow's own pricing page.
  • Flows and automation logic have no export path — workflows must be manually rebuilt in the destination platform.
  • Tier limits on Channels and Pipelines are restrictive for growing teams, potentially requiring unplanned plan upgrades.
  • Absence of public reviews on major platforms (G2, Capterra) makes independent quality assessment difficult.
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 Sanoflow 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

    Sanoflow: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Sanoflow 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 Sanoflow to Odoo CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 15,000 Contacts and 3,000 Enquiries with no custom objects and a straightforward pipeline structure. Migrations with custom objects, multi-pipeline structures, large enquiry histories (over 200,000 records), or Odoo multi-company setups move to seven to twelve weeks because of Odoo XML-RPC rate-limit handling, Studio-based custom field creation, and WhatsApp template documentation scope. The Workflow Specification Document delivery runs in parallel with data migration and does not extend the timeline significantly.

Adjacent paths

Related migrations to explore

Ready when you are

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