CRM migration

Migrate from webCRM to Odoo CRM

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

webCRM logo

webCRM

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between webCRM and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from webCRM to Odoo CRM is a multi-format extraction and transformation migration. webCRM has no public API; data exits through the manual Utilities > Overviews export utility or via the Zynk connector outputting Delivery XML. We guide customers through the Overviews export, transform nested Delivery XML into flat Order and Order Line records, and resolve Organisation-to-Company, Contact-to-Partner, and Deal-to-Opportunity mappings before loading into Odoo via its XML or CSV import channels. Custom fields from webCRM carry across as manually-created Odoo custom fields on the equivalent model. Automation rules stored inside webCRM's Automation Module are not accessible for export and do not migrate; we inventory every active automation so your admin can rebuild them in Odoo Studio post-go-live. webCRM Products migrate as Odoo Products with pricing and description preserved. Task history migrates as Odoo CRM activities attached to the correct Partner record.

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

webCRM logo

webCRM

What's pushing teams away

  • Users report support response times as a pain point, with some customers citing delays when resolving configuration issues.
  • As a smaller CRM in a market dominated by HubSpot and Salesforce, businesses scaling beyond 50 users often migrate to platforms with more ecosystem integrations.
  • Limited public API documentation makes the platform difficult to integrate with custom tooling, pushing technical teams toward alternatives with better developer support.

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

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

webCRM

Organisation

maps to

Odoo CRM

res.partner (company type)

1:1
Fully supported

webCRM Organisations map to Odoo res.partner records with partner_type = contact and company_type = company. We extract Organisation name, address, phone, website, and any Organisation-level custom fields and create them as Company Partner records in Odoo. The Organisation ID is preserved in a custom Char field webcrm_id for reference. Odoo's Contacts module must be installed to enable the res.partner model for CRM use; we confirm this during scoping.

webCRM

Contact

maps to

Odoo CRM

res.partner (individual type)

1:1
Fully supported

webCRM Contacts map to Odoo res.partner records with partner_type = contact and company_type = person. We resolve the Organisation-to-Company lookup at import time by matching Organisation name or ID to the Odoo Company Partner created in the prior phase. Contact-level custom fields map to custom Char, Integer, or Selection fields on res.partner. Email, phone, and job title migrate directly.

webCRM

Deal

maps to

Odoo CRM

crm.lead (stage = Opportunity)

1:1
Fully supported

webCRM Deals map to Odoo crm.lead records of type opportunity. The Deal name becomes the Opportunity name; deal value maps to Odoo's Expected Revenue (planned_revenue); pipeline stage names map to Odoo CRM Stage values in the configured Sales Pipeline. We flag any Deals with status that has no Odoo stage equivalent and create a custom stage or use Closed Lost during staging. Deal-to-Organisation and Deal-to-Contact associations resolve via the Partner and partner_id lookups after those records are imported.

webCRM

Deal Stage

maps to

Odoo CRM

crm.stage

lossy
Fully supported

Each distinct webCRM pipeline stage value becomes an Odoo CRM Stage record in the sales team's pipeline. We create these stages during the Odoo configuration phase, mapping the original stage name and probability percentage. If webCRM uses multiple Deal pipelines, we create separate Odoo Sales Teams and assign the appropriate stage sets to each.

webCRM

Delivery

maps to

Odoo CRM

sale.order + sale.order.line

1:many
Fully supported

webCRM Deliveries are exported in webCRM Delivery XML format via Zynk. The nested XML with line-item detail is flattened into two records: sale.order (header: customer, order date, delivery address, delivery reference) and sale.order.line (product, quantity, unit price, tax). We parse the XML, extract parent Delivery attributes, and emit child Order Line rows, then load via Odoo's CSV import or XML-RPC API. webCRM Delivery status (dispatched, confirmed) maps to Odoo sale.order state.

webCRM

Product

maps to

Odoo CRM

product.product

1:1
Fully supported

webCRM Product Database records (name, description, SKU, list price, cost price) map to Odoo product.product records. We create each webCRM product as an Odoo Product with type = product or service based on the product database flags. Standard price from webCRM becomes Odoo's list_price; cost from webCRM becomes standard_price. Product associations with Deals or Deliveries resolve after both objects exist in Odoo.

webCRM

Task

maps to

Odoo CRM

crm.lead.activity or mail.activity

1:1
Fully supported

webCRM Tasks linked to Organisations or Contacts migrate as Odoo CRM activities attached to the relevant crm.lead (Opportunity) or res.partner record. Task subject becomes the activity title; task status (pending, completed) maps to activity state; due date migrates as deadline. Tasks without a parent Deal or Contact are attached to the nearest related Organisation or Contact record. Activity timeline ordering is preserved by setting create_date to the original webCRM task timestamp.

webCRM

Custom Fields

maps to

Odoo CRM

ir.model.fields (custom)

lossy
Mapping required

webCRM custom fields on Organisations, Contacts, Deals, Deliveries, Products, and Tasks require manual creation in Odoo before data import. We extract the full custom field schema during scoping (field name, data type, options for picklists), create matching custom fields in Odoo via Settings > Technical > Database Structure > Fields, then import values as part of each object migration phase. Custom field types are matched to the closest Odoo field type: text fields to Char, numeric fields to Float or Integer, date fields to Date.

webCRM

Automation Rules

maps to

Odoo CRM

studio.automation (rebuild)

1:1
Not supported

webCRM Automation Module rules (time-based reminders, inactivity triggers, deadline actions) are stored internally with no export endpoint and cannot be migrated. We inventory every active webCRM automation during scoping, documenting its trigger, conditions, actions, and affected record types. This inventory is handed off as a written specification for the customer's Odoo admin or an Odoo partner to rebuild using Odoo Studio automation, server actions, or scheduled actions. Budget 1-2 hours per automation rule for rebuild.

webCRM

Owner

maps to

Odoo CRM

res.users

1:1
Fully supported

webCRM Owners (sales reps assigned to Organisations, Contacts, Deals) map to Odoo res.users records. We extract distinct owner references from all migrating objects, match by email address against the Odoo destination User list, and flag any owners without a matching Odoo User for the customer's admin to provision before record import resumes. Owner assignment on Deals migrates as user_id on the crm.lead record.

webCRM

Order (webCRM Orders via Deliveries)

maps to

Odoo CRM

sale.order

1:1
Fully supported

webCRM Order records linked to Deliveries are captured through the Delivery XML export. If webCRM maintains separate Order records distinct from Deliveries, we export those via the Overviews utility as CSV and map order number, order date, and customer reference to Odoo sale.order. The Delivery XML and Order CSV are cross-referenced to avoid duplicating records if both export paths produce the same data.

webCRM

Quote

maps to

Odoo CRM

sale.order (quotation state)

1:1
Fully supported

webCRM quotes or proposals stored as distinct records from Orders export as Odoo sale.order with state = draft or sent. Quote line items map to sale.order.line. If webCRM quotes are stored within the Deal object (attached as a document reference rather than a structured record), we note the file location and recommend it be re-uploaded manually to the migrated Odoo Opportunity as an attachment 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.

webCRM logo

webCRM gotchas

High

Automation rules are not exported or migratable

Medium

Export requires manual Overviews navigation

Medium

Delivery XML format requires transformation

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

  • Automation rules cannot be extracted from webCRM

    webCRM's Automation Module stores time-based and event-triggered workflows internally with no public export endpoint. Any deadline reminders, inactivity triggers, or follow-up actions built in webCRM will not carry over. We identify every active automation during scoping and produce a written inventory specifying each rule's trigger, conditions, actions, and affected record types. The customer's admin rebuilds them in Odoo Studio post-migration. Budget 1-2 hours per automation rule; complex multi-step rules may require an Odoo partner.

  • Manual Overviews export requires customer involvement

    webCRM has no API for programmatic data extraction. All Organisation, Contact, Deal, Product, and Task data exits through the Utilities > Overviews menu by manually selecting each object type and running an export. We guide customers through this process and batch exports into a consistent format before ingestion. Large datasets require multiple export passes. If the customer has high record counts (over 10,000 per object), we schedule multiple export sessions and cross-reference record totals to confirm nothing was missed.

  • Delivery XML must be parsed and flattened before Odoo import

    webCRM Deliveries export in webCRM Delivery XML format via the Zynk connector. The nested XML structure (Delivery header with child line items, addresses, and status) does not map directly to any Odoo import format. We write a custom XML parser that extracts the Delivery header fields (customer reference, delivery date, delivery address) and flattens line items into sale.order and sale.order.line rows. Without this transformation step, Delivery XML cannot be loaded into Odoo via CSV or XML-RPC.

  • Odoo custom fields must be created before data import

    webCRM custom fields have no auto-migration path to Odoo. We extract the full custom field schema during scoping, but each field must be manually created in Odoo (Settings > Technical > Database Structure > Fields) before import values can land. We provide a field creation checklist with field name, Odoo model, data type, and options. Odoo custom fields use ir.model.fields with a technical name starting with x_; we generate these names from the webCRM field label during mapping.

  • webCRM Deals with no Organisation create orphaned Odoo Opportunities

    webCRM Deals occasionally exist without a linked Organisation (orphan deals). In Odoo, Opportunities (crm.lead of type opportunity) benefit from a linked Partner, but are technically valid without one. We flag orphan Deals during scoping. Options include creating a dummy webCRM Organisation (e.g., 'Legacy - No Company') to hold them, or accepting that they appear in Odoo without a Partner link. The customer chooses the strategy before production migration.

Migration approach

Six steps for a successful webCRM to Odoo CRM data migration

  1. Scoping and Overviews export guidance

    We conduct a scoping call to audit the webCRM instance: record counts per object (Organisations, Contacts, Deals, Deliveries, Products, Tasks), active automation rule count, custom field schema per object, and any Zynk connector configurations. We then guide the customer through the Utilities > Overviews export process, providing step-by-step instructions for each object type. We recommend running exports in a specific order (Organisations first, then Contacts, then Deals, then Products, then Deliveries) and cross-referencing record counts to confirm completeness before the transformation phase begins.

  2. XML transformation and data mapping

    We transform the webCRM Delivery XML from Zynk into a pair of CSV files: sale.order (header) and sale.order.line (line items). We cross-reference the Delivery XML with any standalone Order CSV exports to avoid duplicating records. We build the field mapping spreadsheet covering every webCRM field to its Odoo equivalent, including custom field creation specs. We flag any webCRM picklist values that do not have a matching Odoo option and propose a mapping or a custom Odoo selection value.

  3. Odoo environment setup

    We confirm the Odoo instance has the CRM module installed and review the existing Sales Pipeline stages. We create any missing CRM stages to match webCRM pipeline stage names, set probability percentages, and configure the Kanban view order. We then create all custom fields identified in the mapping spreadsheet via Odoo's Settings > Technical interface. We load Products first (as a lookup dependency for Order Lines) via CSV import, then prepare the Partner and Opportunity import templates.

  4. Staging migration and reconciliation

    We run a full migration into a test environment or a copy of the production Odoo database. We import in dependency order: Products (no dependencies), Companies (from Organisations), Contacts (with Company lookup resolved), Opportunities (with Contact and Company lookups resolved), Sales Orders (from Deliveries and Orders), then Tasks as activities. We validate row counts against the webCRM export totals and spot-check 25-50 records against the source. The customer reviews and approves the staging output before production migration is scheduled.

  5. Production migration and cutover

    We run production migration following the same dependency order as staging. Owner reconciliation (matching webCRM owners to Odoo users by email) is completed before Opportunity import since user_id is a required field on crm.lead. We run Deliveries and Orders last since they have the most dependencies (Products, Partners, and optionally Opportunities). Any records modified in webCRM during the migration window are delta-migrated after the initial load. We then freeze webCRM access, run a final delta pass, and hand over the production Odoo instance.

  6. Automation inventory handoff and go-live support

    We deliver the automation inventory document listing every active webCRM Automation Rule with its trigger, conditions, actions, and a recommended Odoo Studio equivalent. We support a one-week hypercare window resolving any data quality issues raised by the sales team during initial use. We do not rebuild webCRM automations as Odoo automations inside the migration scope; that work is handled by the customer's Odoo admin or a separate Odoo partner engagement.

Platform deep dives

Context on both ends of the pair

webCRM logo

webCRM

Source

Strengths

  • Pipeline management with customisable stages and revenue forecasting
  • Product database with real-time inventory overview
  • Task and time-based automation for follow-ups and reminders
  • Order management linking quotes to deliveries and inventory
  • High customer support ratings (4.7/5) on review platforms

Weaknesses

  • No publicly documented API for direct programmatic access
  • Automation rules are not exportable and must be rebuilt manually
  • Smaller market footprint limits third-party integrations compared to major CRMs
  • Export relies on manual Overviews utility or third-party tools like Zynk
  • Limited pricing transparency makes cost comparison 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. 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 webCRM and Odoo 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

    webCRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your webCRM 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 10,000 Organisations and 3,000 Deals with no Delivery XML histories. Migrations with large Delivery XML exports (over 1,000 delivery records), extensive custom field schemas (over 20 custom fields per object), or multi-company Odoo configurations move to six to ten weeks because of XML parsing, manual Odoo custom field creation, and dependency sequencing work. Odoo instance provisioning and configuration time is included in the migration timeline.

Adjacent paths

Related migrations to explore

Ready when you are

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