CRM migration
Field-level mapping, validation, and rollback between Wetroo CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Wetroo CRM
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Wetroo CRM and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Wetroo CRM to Odoo CRM is a migration from a mobile-first WhatsApp-centric CRM with a thin API surface to a modular ERP-adjacent CRM with deep schema flexibility. Wetroo does not expose a bulk-export endpoint for Contacts, Companies, or Deals — we extract these via paginated API calls against their REST layer with API-key auth. Odoo stores Leads as crm.lead records that can be either unqualified Prospects or qualified Opportunities, with a formal Convert action separating the two states. We map Wetroo Leads to crm.lead (unqualified), Wetroo qualified Leads and Contacts to res.partner, and Wetroo Deals to crm.lead with type=opportunity and stage mapping. Drip marketing sequences, automation rules, and WhatsApp conversation threads do not migrate — we deliver written inventories for manual rebuild in Odoo's automation framework and WhatsApp Business API configuration respectively.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Wetroo CRM 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.
Wetroo CRM
Lead
Odoo CRM
crm.lead (type=lead)
1:1Wetroo Leads map to Odoo crm.lead records with type=lead (unqualified prospect). We preserve source attribution (Facebook Lead Form, Google Data Extractor, manual entry) in a custom Char field on the Odoo crm.lead. The Wetroo lead score, if present, maps to odoo priority or a custom field. Lead status in Wetroo (new, contacted, qualified, lost) maps to Odoo's stage configuration, which we define during schema setup.
Wetroo CRM
Contact
Odoo CRM
res.partner
1:1Wetroo qualified Contacts map to Odoo res.partner records. We preserve full contact details — name, phone, email, job title, lifecycle stage — in the partner fields. Address data (street, city, state, country, zip) maps to res.partner address fields. Custom fields on Wetroo Contacts require pre-creation in Odoo as ir.model.fields before import. res.partner is the primary person/account model in Odoo, distinct from the crm.lead model.
Wetroo CRM
Company
Odoo CRM
res.partner (company_type=company)
1:1Wetroo Companies map to Odoo res.partner records with company_type=company. Company names become partner names; industry tags map to industry_id (a many2one to res.partner.industry). Address and billing data on Wetroo Companies map to res.partner address fields. Companies are created before Contacts so that the child_contact relationship to the parent company partner is satisfied at insert time.
Wetroo CRM
Deal
Odoo CRM
crm.lead (type=opportunity)
1:1Wetroo Deals map to Odoo crm.lead with type=opportunity. The deal name becomes the Odoo lead name; deal value maps to Odoo expected_revenue and sometimes list_price depending on the pipeline configuration. Pipeline stage names map to Odoo stage definitions within the crm.stage model. Closed-Lost and Closed-Won deal outcomes map to Odoo's lost and won stage states.
Wetroo CRM
Pipeline and Stage
Odoo CRM
crm.stage
lossyWetroo pipeline configuration (stage names, order, win/loss states) is read via API and mapped to Odoo crm.stage records within the relevant team. We define each pipeline as an Odoo crm.team and assign stages to that team. Stage probability percentages migrate from Wetroo to Odoo stage probability values. Custom stages on Wetroo are recreated as Odoo stages during schema configuration.
Wetroo CRM
Activity (Call Logs via OBD endpoint)
Odoo CRM
crm.phonecall
1:1Wetroo OBD call records are extracted via the /api/v1/?apirequest=obd_record endpoint. Each OBD record maps to an Odoo crm.phonecall record — call duration, disposition, caller number, timestamp, and linked partner. Odoo requires the crm_phonecall module (part of Odoo's extra-apps suite) to be installed; we confirm this is available in the destination Odoo version before migration.
Wetroo CRM
Activity (WhatsApp Messages)
Odoo CRM
mail.message (via Discuss/WhatsApp connector)
1:1WhatsApp message threads are extracted from Wetroo's conversation API. We write message content, sender/receiver, timestamp, and message type as mail.message records linked to the res.partner record. Media attachments (images, documents) require a separate download step — we export them to cloud storage and provide re-upload instructions for the admin. Odoo's native WhatsApp Business API connector must be configured post-migration for ongoing message sync.
Wetroo CRM
Activity (Emails, Notes, Tasks, Events)
Odoo CRM
mail.message, crm.phonecall, calendar.event
1:1Email activities migrate as mail.message records with subtype comment linked to the res.partner. Notes migrate as mail.message with subtype note. Tasks migrate as crm.phonecall or project.task depending on whether they are CRM-linked or project-scoped. Calendar events migrate as calendar.event with attendee data mapped to calendar.attendee records linked to the res.partner or crm.lead.
Wetroo CRM
Custom Fields (Leads, Contacts, Deals)
Odoo CRM
ir.model.field
lossyCustom fields on Wetroo Leads, Contacts, and Deals require pre-creation in Odoo as ir.model.field entries before any data import. We create fields during schema setup using Odoo's ir.model.data API, matching Wetroo's field types (Char, Text, Integer, Float, Selection, Many2one, Date, DateTime) to their Odoo equivalents. Picklist and multi-select values on Wetroo become Selection or Char fields in Odoo; value-label mapping is applied during the transform step.
Wetroo CRM
Owner (User)
Odoo CRM
res.users
1:1Wetroo user records (name, email, role, team assignment) map to Odoo res.users. We resolve owners by email match against the destination Odoo instance's User table. Any Wetroo owner without a matching Odoo user is held in a reconciliation queue for the customer's admin to provision before record import resumes, because OwnerId (user_id) references are required on crm.lead and res.partner.
Wetroo CRM
Tags
Odoo CRM
crm.tag
lossyWetroo lead and contact tags migrate to Odoo crm.tag records. We create the tag in Odoo during schema setup, then write crm.lead.tagrel records linking each lead or opportunity to its tags. Tags used for lead classification or segmentation in Wetroo map directly to Odoo's tag taxonomy, which appears in the Kanban pipeline view as filterable tag chips.
Wetroo CRM
Drip Sequences and Automation Rules
Odoo CRM
Not migrated (rebuild inventory only)
1:1Wetroo drip sequences and sales automation cadences live in the automation layer with no exportable schema or API endpoint. We do not migrate them as code. We deliver a written inventory of every active sequence — trigger conditions, step types, delays, and contact list membership — that the customer's Odoo admin rebuilds using Odoo Studio, ir.actions.server, or a sales engagement module. The contact lists exported from Wetroo serve as the audience for rebuilding these sequences.
| Wetroo CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Lead | crm.lead (type=lead)1:1 | Fully supported | |
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner (company_type=company)1:1 | Fully supported | |
| Deal | crm.lead (type=opportunity)1:1 | Fully supported | |
| Pipeline and Stage | crm.stagelossy | Fully supported | |
| Activity (Call Logs via OBD endpoint) | crm.phonecall1:1 | Fully supported | |
| Activity (WhatsApp Messages) | mail.message (via Discuss/WhatsApp connector)1:1 | Fully supported | |
| Activity (Emails, Notes, Tasks, Events) | mail.message, crm.phonecall, calendar.event1:1 | Fully supported | |
| Custom Fields (Leads, Contacts, Deals) | ir.model.fieldlossy | Fully supported | |
| Owner (User) | res.users1:1 | Fully supported | |
| Tags | crm.taglossy | Fully supported | |
| Drip Sequences and Automation Rules | Not migrated (rebuild inventory only)1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Wetroo CRM gotchas
No official bulk-export endpoint complicates migration extraction
Drip sequences and automation logic are not exportable
Seat-tier limits can cause billing surprises during team migration
WhatsApp message history requires separate extraction
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Discovery and extraction probe
We audit the Wetroo account for record counts across all object types (Leads, Contacts, Companies, Deals, Activities, call logs, WhatsApp messages), custom field definitions, pipeline configurations, and active user count. Since Wetroo has no bulk-export endpoint, we probe each paginated API endpoint to measure total pages, page size, and response consistency. We also document active drip sequences and automation rules during this phase so the customer has a record before extraction begins. The discovery output is a written migration scope, record-count estimate per object, and a Wetroo plan-tier compliance check.
Odoo schema design and crm.stage configuration
We design the destination Odoo CRM schema. This includes creating the necessary crm.team records (one per Wetroo pipeline), defining crm.stage values with names, sequence order, and probability percentages mapped from Wetroo, creating any custom fields on crm.lead and res.partner using Odoo's ir.model.field API, and configuring the crm.lead convert policy to preserve message history on conversion. Schema is deployed into an Odoo test database first. If the customer is on Odoo Online (SaaS), schema changes go through the Apps interface or the Odoo Studio UI; for Odoo.sh or self-hosted, we use the ORM directly.
Extraction and transformation pipeline
We build a scripted extraction pipeline using Wetroo's paginated REST API endpoints. We pull Leads, Contacts, Companies, Deals, and Activities in batch using the API key, apply field-level transformations (date format normalization, picklist value remapping, stage name alignment), and write to an intermediate CSV or JSON format. The extraction runs in cycles to handle pagination limits and any rate-throttling responses from Wetroo's API. We log record counts and null-field rates for each batch and surface any endpoint failures for retry before the staging migration begins.
Sandbox staging migration and reconciliation
We run a full migration into the customer's Odoo staging environment using the transformed data. We reconcile record counts for every object type — Leads in, Contacts in, Companies in, Deals in, Activities in — against the Wetroo extraction logs. The customer's admin spot-checks 25-50 records for field accuracy and data completeness, and reviews the crm.lead and res.partner records in Odoo's UI. Any mapping corrections are applied to the transform pipeline before the production migration runs. Pipeline stages and Kanban views are validated for correct ordering and probability values.
User reconciliation and Owner provisioning
We extract every distinct Wetroo owner (sales rep) referenced on Leads, Contacts, Deals, and Activities and match by email against the Odoo res.users table. Owners without a matching Odoo user are placed in a reconciliation queue. The customer's Odoo admin provisions the missing users (active or inactive depending on whether the original Wetroo rep is still employed) before production migration resumes. This step is a hard dependency because OwnerId (user_id) references on crm.lead are required fields in Odoo for proper activity assignment.
Production migration and cutover
We run the production migration in record-dependency order: Companies (res.partner company_type=company), Contacts (res.partner company_type=person linked to the company partner), Leads (crm.lead type=lead), Deals (crm.lead type=opportunity linked to partner), Activity history (mail.message, crm.phonecall, calendar.event), and Tags. Each phase emits a reconciliation report before the next phase begins. We freeze Wetroo writes during the cutover window, run a final delta migration of any records modified during the window, then enable Odoo as the system of record. We deliver the drip sequence and automation inventory document to the customer's admin for rebuild in Odoo Studio.
Platform deep dives
Wetroo CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Wetroo CRM and Odoo CRM.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Wetroo CRM: Not publicly documented.
Data volume sensitivity
Wetroo CRM doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Wetroo CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Wetroo CRM to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Wetroo CRM
Other ways to arrive at Odoo CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.