CRM migration
Field-level mapping, validation, and rollback between Insider and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Insider
Source
Odoo CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Insider and Odoo CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Insider to Odoo CRM is a cross-paradigm migration: Insider is a customer data and engagement platform built around unified user profiles and event-driven Journey orchestration; Odoo CRM is a transactional sales management tool built around Leads, Contacts, and Opportunities in a pipeline. The migration centers on mapping Insider's CDP user records to Odoo Leads and Contacts, translating behavioral event history into Odoo's chattering and messaging logs, and restructuring Insider segments into Odoo Tags and static groups. Insider's Journey automations have no mechanical export path and must be fully reconstructed in Odoo Automated Actions and Server Actions; we deliver a written inventory of every Journey with its trigger logic, conditions, and channel steps to guide that reconstruction. Odoo's per-user pricing ($24-$49/user/month) is more predictable than Insider's traffic-based model, which scales with message volume and profile activity rather than headcount.
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 Insider 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.
Insider
User (Profile)
Odoo CRM
Lead and Contact (split required)
1:manyInsider user profiles with a lifecycle stage of Subscriber, MQL, or prospect-level assignment map to Odoo Lead. Profiles with a sales-qualified or customer lifecycle stage map to Odoo Contact attached to a Company (res.partner with customer_rank). We use the Insider Unification API upsert to extract all profile fields, compute the split using the lifecycle stage property, and preserve the original Insider lifecycle stage in a custom Char field (x_insider_lifecycle_stage__c) on both Lead and Contact for audit traceability. Email and phone map directly to email_from and phone on Lead; for Contact, email maps to email and phone to phone.
Insider
Company
Odoo CRM
Company (res.partner with is_company=True)
1:1Insider Companies map to Odoo Company records (res.partner with is_company=True, customer_rank > 0). The Insider company name maps to name, domain maps to website, and industry maps to industry_id via Odoo's industry selection list. Address fields (city, country, street) map to partner address fields. We create Company records before any Contact or Lead import so that the parent_id lookup is satisfied at insert time.
Insider
Deal
Odoo CRM
Opportunity (crm.lead)
1:1Insider Deals map to Odoo CRM Opportunities (crm.lead records with type='opportunity'). The Insider dealstage property maps to Odoo stage_id within the configured pipeline. Pipeline names from Insider become Odoo team_id assignments (sales teams). Deal amount, currency, expected close date, and probability migrate to planned_revenue, x_currency_id, date_closed, and probability respectively. Any custom deal properties become custom fields on crm.lead.
Insider
Deal Stage
Odoo CRM
CRM Stage (crm.stage)
lossyEach Insider deal pipeline and its stages map to an Odoo CRM Pipeline (c.crm.team) with corresponding Stage records (crm.stage). We configure stage sequence, probability percentages, and is_won/is_lost flags during schema setup to match Insider's pipeline structure. Stage names and order transfer directly; probability values round to Odoo's integer constraint.
Insider
Event (Behavioral)
Odoo CRM
Mail Message / Custom Event Log
1:1Insider behavioral events (page views, purchases, custom actions) export via the Raw Export API as event_name, timestamp, and event_parameters. We translate these into Odoo mail.message records with message_type='notification' linked to the parent Lead or Contact via res_id and res_model, or into a custom crm.event.log model if the customer's use case requires structured event history. The event_parameters JSON serializes into a custom Text field for audit. Historical timestamp preserves via mail.message date.
Insider
Segment
Odoo CRM
Tag (ir.attachment) + Group
1:manyInsider segments are dynamic audience lists defined by attribute-and-event rule conditions. Since Odoo has no dynamic behavioral segmentation equivalent, we export the segment member list (user IDs) and recreate them in Odoo as Tags on the relevant Lead or Contact records. The segment rule definition exports as metadata for the customer's admin to reference when rebuilding equivalent filters using Odoo's domain-based filtering or static Tag groups.
Insider
Product (Catalog)
Odoo CRM
Product (product.product)
1:1Insider product catalog entries (sku, name, price, category, images) map to Odoo Product records. The Insider product ID becomes the default_code (SKU field). Prices and categories map to list_price and categ_id. Product images migrate as binary attachments on the product.product record. If the customer uses Odoo Sales or eCommerce modules alongside CRM, product variants map to product.template with attribute lines.
Insider
Transaction (Order)
Odoo CRM
Sale Order (sale.order)
1:1Insider transaction objects (order_id, total, items, currency, timestamps) map to Odoo Sale Order records linked to the corresponding Contact (partner_id) and Company (partner_invoice_id, partner_shipping_id). Order lines map to sale.order.line with product_id resolved from the product catalog mapping. Currency maps to currency_id. If the customer does not use Odoo Sales module, transactions map instead to custom fields on the Contact record.
Insider
Custom Attribute
Odoo CRM
Custom Field (ir.model.fields)
lossyInsider allows arbitrary key-value custom properties beyond the standard profile schema. We export all custom attribute keys and types, then create corresponding custom fields on the Odoo crm.lead model (or res.partner if used for contacts) via Odoo Studio before migration. Field types map from the Insider attribute type: string attributes become Char, numeric attributes become Float or Monetary, date attributes become Date, and boolean attributes become Boolean. Multi-value attributes become Char with comma-separated values or One2many lines depending on structure.
Insider
List (Static)
Odoo CRM
Tag
1:1Insider static Lists (named user collections beyond dynamic segments) export as a list of user IDs per list. We recreate each list in Odoo as a Tag on the corresponding Lead or Contact record. List membership resolves by matching user email to the migrated Lead or Contact email. If the customer requires list-level grouping, we create a Tag per list name.
Insider
Tag
Odoo CRM
Tag
1:1Insider tags export as string label arrays per user. We migrate each unique tag string to an Odoo Tag record (mailing.contact.subscription or a custom tag model depending on Odoo version and installed modules) and link it to the matching Contact or Lead via the tag_id relation. Tag arrays per user create multiple tag assignments on the same record.
Insider
Journey (Automation)
Odoo CRM
Automated Action / Server Action
lossyInsider Journeys are multi-step event-triggered workflows with conditional branching, delays, and channel actions (email, SMS, WhatsApp, push). Odoo has no direct Journey equivalent. We export Journey definitions as a structured written inventory documenting each Journey's entry trigger, conditional gates, channel steps, exit conditions, and timing logic. The customer's admin or Odoo partner uses this inventory to rebuild equivalent automations in Odoo Automated Actions (base.action.rule) and Server Actions. We do not migrate Journey logic as code.
| Insider | Odoo CRM | Compatibility | |
|---|---|---|---|
| User (Profile) | Lead and Contact (split required)1:many | Fully supported | |
| Company | Company (res.partner with is_company=True)1:1 | Fully supported | |
| Deal | Opportunity (crm.lead)1:1 | Fully supported | |
| Deal Stage | CRM Stage (crm.stage)lossy | Fully supported | |
| Event (Behavioral) | Mail Message / Custom Event Log1:1 | Fully supported | |
| Segment | Tag (ir.attachment) + Group1:many | Fully supported | |
| Product (Catalog) | Product (product.product)1:1 | Fully supported | |
| Transaction (Order) | Sale Order (sale.order)1:1 | Fully supported | |
| Custom Attribute | Custom Field (ir.model.fields)lossy | Fully supported | |
| List (Static) | Tag1:1 | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Journey (Automation) | Automated Action / Server Actionlossy | 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.
Insider gotchas
API rate limit of 25,000 requests per minute is shared across endpoints
No automated journey export — automations must be rebuilt manually on exit
Pricing is traffic-based with no public tiers, leading to billing surprises
Contract lock-in with annual or multi-year terms
Long implementation ramp complicates early-stage migrations
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 migration scope audit
We audit the Insider account to quantify user profile volume, event history depth, segment count, active Journey count, custom attribute schema, product catalog size, transaction volume, and current contract end date. We confirm the Odoo edition (Community or Online) and installed CRM modules, and review any existing Odoo custom fields to avoid conflicts. The discovery output is a written migration scope document covering object-level mapping, timeline estimate, pricing quote, and a pre-migration data quality report flagging duplicates, missing emails, and incomplete profile records. We also document active Insider Journeys during this phase so the Journey inventory deliverable is ready before cutover.
Odoo schema design and custom field creation
We design the destination Odoo CRM schema to match the migrated Insider data model. This includes configuring CRM pipelines and stages (crm.team and crm.stage), creating custom fields on crm.lead and res.partner for Insider custom attributes with type-appropriate field definitions, setting up Tags and static groups to host Insider segments and lists, and designing the Lead-Contact split rule using the Insider lifecycle stage property. Schema changes deploy into a sandbox Odoo environment for validation before touching production data.
Sandbox migration and reconciliation
We run a full test migration into an Odoo sandbox using representative data volumes. The customer's CRM lead reviews record counts, spot-checks 25-50 randomly selected records for field-level accuracy against the Insider source, and validates that Lead-Contact splits, tag assignments, and custom field values are correct. Any mapping corrections and data quality flags (duplicate emails, missing phone numbers, orphaned companies) surface here. The customer signs off on the sandbox results before we proceed to production migration.
Data extraction and transformation
We extract user profiles via the Insider Unification API using chunked batch reads compliant with the 25,000 requests/minute rate limit, applying exponential backoff on 429 responses. Event history exports via the Raw Export API. All data lands in a structured staging environment where we apply the Lead-Contact lifecycle stage split, map Insider custom attributes to typed Odoo custom fields, resolve company associations for contact records, and format tag arrays per user. Deduplication runs on email as the primary key, with the customer's preferred merge rule applied (most recent record wins, or highest field completeness wins).
Production migration in dependency order
We migrate records into Odoo production in dependency order: Companies first (res.partner with is_company=True), then Leads and Contacts (with parent company lookup resolved), then Opportunities (with partner_id and stage_id resolved), then product catalog and sale orders, then custom event history as mail.message or custom event log records, then tags and segment memberships. Each phase emits a row-count reconciliation report before the next phase begins. We pause writes during the cutover window and run a final delta pass for any records modified during migration. Owner assignments resolve by email match to Odoo user records.
Cutover, validation, and Journey inventory delivery
We freeze Insider writes, run the final delta migration pass, validate record counts in Odoo, then hand off as the system of record. We deliver the complete Journey inventory document listing every active Insider Journey with its trigger, conditions, step sequence, and recommended Odoo Automated Action equivalent. We provide a one-week hypercare window for reconciliation issues reported by the sales team. We do not rebuild Journeys as Odoo code inside the migration scope; that is a separate engagement or an internal Odoo admin task. Reports, dashboards, and saved views do not migrate; we deliver a written inventory of existing Insider reports for the customer to rebuild in Odoo Reporting.
Platform deep dives
Insider
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Insider and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Insider and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Insider and Odoo CRM.
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
Insider: 25,000 requests per minute, shared across Unification API endpoints (Upsert User Data and Delete User Attribute). Exceeding this returns HTTP 429 and requires retry with backoff..
Data volume sensitivity
Insider exposes a bulk API — large-volume migrations stream efficiently.
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 Insider to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Insider 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 Insider
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.