CRM migration

Migrate from Insightly Marketing to Odoo CRM

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

Insightly Marketing logo

Insightly Marketing

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

58%

7 of 12

objects map 1:1 between Insightly Marketing and Odoo CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Insightly Marketing to Odoo CRM is a schema translation, not a direct record copy. Insightly separates Leads and Contacts as distinct objects while maintaining Organizations as the company record; Odoo CRM uses a Lead object with a Convert-to-Opportunity action, storing person records under a Partner model. We resolve the Lead versus Contact distinction at migration time using Insightly lifecycle stage, map Organizations directly to Odoo Partner records, and preserve the Organization-to-Contact relationship through Odoo's contact_ids field on the Partner. Projects migrate to Odoo Project with task lists and milestones. Historical timestamps and custom field values transfer to typed Odoo fields. We do not migrate Insightly workflow rules or email templates as code; we deliver a written inventory mapping each Insightly automation trigger to an Odoo Action Rule equivalent for the customer's admin to rebuild 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

Insightly Marketing logo

Insightly Marketing

What's pushing teams away

  • The learning curve is steep for new users — workflow automation and advanced configuration require time investment, and documentation is described as overwhelming.
  • Reporting capabilities are restrictive compared to enterprise CRMs, with limited flexibility for custom reports or deeper data analysis across large datasets.
  • UI performance issues surface when navigating large datasets, and some advanced features feel limited compared to more complex CRM systems.
  • Per-user pricing scales poorly for growing teams, and the mandatory All-in-One bundle fees (onboarding, AppConnect setup, Premier Support) surprise customers who expected the advertised per-user rate.
  • Customization options are more limited than expected — some users find the system cannot fully adapt to their unique business processes despite the marketing promise.

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

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

Insightly Marketing

Contact

maps to

Odoo CRM

Lead

1:1
Fully supported

Insightly Contact maps to Odoo CRM Lead. We populate the Lead's partner_name (company name) with the parent Organization's name, contact_name with the person's full name, email from CONTACT_FIELD_EMAIL, and phone from CONTACT_FIELD_PHONE. The original Insightly lifecycle stage migrates to a custom Char field x_insightly_lifecycle_stage for audit. Contact ownership (insightly_owner_id) maps to Odoo user_id on Lead. Tags on Contact migrate to Odoo tag_ids via Odoo's Tags app, or to a custom Char field if the customer prefers a single-select reference.

Insightly Marketing

Organization

maps to

Odoo CRM

Partner

1:1
Fully supported

Insightly Organization maps directly to Odoo res.partner with is_company=True. The ORGANIZATION_NAME field becomes partner_name, WEBSITE becomes website, INDUSTRY maps to industry_id if the customer has configured Odoo's industry taxonomy. Billing address and shipping address from Organization locations become Odoo's address fields (street, street2, city, state_id, zip, country_id). Organization CUSTOM_FIELD values map to custom Char, Integer, or Selection fields on Partner.

Insightly Marketing

Organization

maps to

Odoo CRM

Partner.contact_ids

1:many
Fully supported

Insightly Contacts attached to an Organization migrate as Odoo Partner contact records under the Organization's Partner. The parent Organization becomes the Partner (is_company=True), and each Contact becomes a Partner record with parent_id pointing to the Organization Partner and contact_type=contact. This preserves the Organization-to-Contact hierarchy that Odoo uses for address and communication routing.

Insightly Marketing

Lead

maps to

Odoo CRM

Lead

1:1
Fully supported

Insightly Lead object (separate from Contact) maps 1:1 to Odoo CRM Lead. LEAD_STATUS becomes x_insightly_lead_status on the Lead record. Lead source attribution (LEAD_SOURCE) maps to Odoo's medium_id or a custom field. Any lead-specific custom fields migrate as typed Odoo fields on the Lead.

Insightly Marketing

Opportunity

maps to

Odoo CRM

Opportunity

1:1
Fully supported

Insightly Opportunity maps to Odoo CRM Opportunity. OPPORTUNITY_NAME becomes name, EXPECTED_VALUE becomes planned_revenue, PROBABILITY maps to x_probability (Odoo's standard probability is auto-calculated from stage, so we use a custom Float field). CLOSE_DATE becomes date_closed. STAGE_NAME maps to stage_id, but requires mapping against Odoo's existing stage values (New, Qualified, Proposition, Won, Lost) since Odoo uses a single pipeline.

Insightly Marketing

Opportunity Stage

maps to

Odoo CRM

Opportunity Stage

lossy
Fully supported

Insightly pipeline stages require mapping to Odoo's stage_id values. If Insightly has multiple pipelines (Plus 5, Professional 15, Enterprise 50), we consolidate all stage names into Odoo's single pipeline stage sequence. Stage probability values from Insightly migrate to custom Float fields on the Opportunity since Odoo's default probability is derived from stage sequence position.

Insightly Marketing

Project

maps to

Odoo CRM

Project

1:1
Fully supported

Insightly Project maps to Odoo Project (from the Project app). PROJECT_NAME becomes name, STATUS becomes project_status (on_hold, in_progress, completed). Milestones in Insightly map to Odoo Milestone records linked to the Project. TASK_LIST_NAME values become Odoo task names with their contained tasks migrated as Odoo task records. Project-to-Contact and Project-to-Organization links migrate as Odoo Project.partner_id and task-level partner_id references.

Insightly Marketing

Task

maps to

Odoo CRM

Task

1:1
Fully supported

Insightly Tasks map to Odoo Project Task records. TASK_NAME becomes name, DUE_DATE becomes date_deadline, ASSIGNED_TO maps to user_id (resolved via Owner-to-User lookup). STATUS maps to x_insightly_task_status (Odoo task state uses kanban_state and stage_id). Related-to references (Contact, Organization, Opportunity, Project) map to Odoo's task fields: partner_id for contacts, project_id for projects, and opportunity_id for deals.

Insightly Marketing

Note

maps to

Odoo CRM

Note (mail.message)

1:1
Fully supported

Insightly Notes migrate to Odoo mail.message records with message_type=notification attached to the relevant CRM record (Lead, Opportunity, Partner). NOTE_BODY in rich text maps to body HTML. NOTE_TITLE becomes the message subject. Created date and author (Owner) preserve using Odoo's message_date and author_id fields. Notes linked to Insightly Projects attach to the corresponding Odoo Project record.

Insightly Marketing

Custom Fields

maps to

Odoo CRM

Custom Fields

lossy
Mapping required

Insightly custom field groups and custom fields map to Odoo ir.model.field records or Studio-created fields on the target model (crm.lead, res.partner, crm.lead, project.project, project.task). Field types map: Insightly TEXT to Char, NUMBER to Float or Integer, DATE to Date, PICKLIST to Selection, CHECKBOX to Boolean, CURRENCY to Monetary. Validation rules on Insightly custom fields require manual review to determine whether Odoo's constrains or SQL constraints are needed.

Insightly Marketing

Tags

maps to

Odoo CRM

Tags (utm.tag) or custom Char

lossy
Mapping required

Insightly Tags on Contacts, Organizations, Opportunities, and Projects migrate to Odoo's utm.tag (available via the Tags app for CRM) as Tag records with their names preserved. The tag application_id links each tag to the CRM application. Alternatively, for tags that represent categorical data (e.g., industry segments, customer tiers), we migrate to a custom Selection or Char field on the Lead or Partner per the customer's preference.

Insightly Marketing

Custom Objects

maps to

Odoo CRM

Custom Model (ir.model)

lossy
Mapping required

Insightly custom objects (per-instance schemas) require a case-by-case migration design. We evaluate whether the custom object maps to an existing Odoo model (e.g., res.partner extension, crm.lead extension, project.task extension) or requires a new ir.model with custom fields. Odoo's model inheritance via _inherit allows extending standard models without a separate custom table, which is the preferred approach when the custom object relates to Leads, Partners, or Opportunities. Custom object relationships (lookups between custom objects) map to Odoo many2one or many2many fields on the appropriate model.

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.

Insightly Marketing logo

Insightly Marketing gotchas

High

All-in-One bundles carry mandatory setup fees not visible in per-user pricing

Medium

CSV export is per-category and email-delivered, not a single bulk pull

High

Workflow automation rules are not accessible via API or CSV export

Medium

Email templates export in non-standardized format requiring rebuild

Medium

Custom object schemas vary per customer implementation

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

  • Odoo uses a single CRM pipeline; multi-pipeline mapping requires stage consolidation

    Insightly Professional and Enterprise support up to 15 and 50 named pipelines respectively, allowing teams to maintain separate deal sequences for different business units, product lines, or geographies. Odoo CRM operates a single pipeline per database with stage values shared across all deal types. We map each Insightly pipeline to a distinct set of stage values in Odoo, but teams that rely on pipeline-level reporting or pipeline-specific automation in Insightly will need to redesign their stage strategy. This is a structural Odoo CRM limitation, not a FlitStack AI gap, and we flag it during scoping so the customer can decide on their post-migration stage layout before migration begins.

  • Insightly workflow rules do not migrate to Odoo Action Rules

    Insightly's Workflow Rules (triggers, field updates, notifications, task creation) live in Insightly's workflow engine and are not accessible via Insightly's CSV export or REST API in a portable format. Odoo CRM's automation engine uses Action Rules, which are server-side event-driven rules triggered on record write, create, or state change — architecturally different from Insightly's visual workflow builder. We document every active Insightly workflow during discovery and deliver a written Action Rules rebuild plan with trigger mapping, condition translation, and action equivalents. The customer's Odoo admin or an Odoo implementation partner rebuilds these post-migration. This is manual rebuild work that must be scoped separately.

  • Insightly's per-category email CSV export requires multi-session coordination

    Insightly's native export generates one CSV per data category (Contacts, Organizations, Opportunities, Projects, Tasks) and delivers each file by email rather than a unified download. For Odoo migrations, we coordinate multiple export sessions, receive files via connected inbox rules, and assemble them into a unified dataset before mapping. This adds coordination overhead to the data extraction phase and requires the customer to grant us email access or forward the files. API-based extraction is available for Insightly Professional and Enterprise tiers and is the preferred path for migrations over 25,000 records.

  • Custom object schemas vary per Insightly instance and require pre-migration discovery

    Insightly custom objects are defined per customer, meaning field names, field types, and inter-object relationships are unique to each implementation. We cannot begin field-level mapping for custom objects without a schema discovery phase that extracts the actual custom object definition from the customer's Insightly instance. This discovery step (typically one to three days) adds to the timeline and must be completed before the migration design phase. Skipping this phase risks silent data loss when custom object fields are not recognized in the mapping.

  • Insightly email templates export in non-standard HTML requiring Odoo rebuild

    Marketing email templates in Insightly are stored in a format that cannot be directly imported into Odoo's mail.template model. We extract the HTML content from templates and preserve images and styling references, but the actual Odoo mail template records must be rebuilt using Odoo's mail template editor (or Studio). We deliver a template content inventory with HTML source, images, and merge field references so the customer's admin can reconstruct them in Odoo. Template reconstruction is a manual step estimated at two to four hours per template depending on complexity.

Migration approach

Six steps for a successful Insightly Marketing to Odoo CRM data migration

  1. Discovery and migration scope definition

    We audit the source Insightly instance across all tiers and data categories: Contacts, Organizations, Leads, Opportunities, Projects, Tasks, Custom Objects, and active Workflow Rules. We extract the custom object schema definition (field names, types, relationships) during discovery since custom objects vary per customer implementation. We pair this with an Odoo environment audit: which Odoo apps are installed (CRM, Project, Contacts, Studio), what custom fields already exist, and which users and groups are provisioned. The discovery output is a written migration scope document, a custom object mapping design, and an Odoo Action Rules rebuild inventory derived from the active Insightly workflow rules.

  2. Owner-to-User reconciliation

    We extract every distinct Insightly Owner (referenced on Contact, Organization, Opportunity, Project, and Task records) and match by email against the Odoo destination environment's res.users table. Any Owner without a matching Odoo User goes to a reconciliation queue. The customer's Odoo administrator provisions the missing Users (active or inactive depending on whether the original Insightly user is still active). This step is required before any record import because Odoo's user_id field on Lead, Opportunity, and Task is a required or strongly-referenced foreign key. We provide the Owner reconciliation list and the customer approves the provisioning before Phase 3 begins.

  3. Schema design and Odoo field mapping

    We design the Odoo destination schema before any data loads. This includes provisioning custom fields on crm.lead, res.partner, crm.opportunity, project.project, and project.task models using ir.model.fields or Odoo Studio. For Insightly custom objects, we design the Odoo model (either extending an existing model via _inherit or creating a new ir.model) and define all custom fields with correct Odoo field types (Char, Float, Integer, Date, Selection, Boolean, Many2one). We map Insightly pipeline stages to Odoo CRM stage values, consolidating multiple Insightly pipelines into Odoo's single-pipeline stage sequence. The schema is validated in the Odoo environment before migration data is written.

  4. Staging migration and reconciliation

    We run a full migration into the Odoo staging or production environment using production-like data volume. The customer's CRM lead and Odoo administrator reconcile record counts (Leads in, Partners in, Opportunities in, Tasks in, Project records in), spot-check 25-50 records against the Insightly source, and verify that Organization-to-Contact links, Opportunity-to-Partner assignments, and Project-to-Task hierarchies are intact. This validation pass identifies any mapping corrections needed before the production migration runs. Any corrections to field types, custom field definitions, or stage mappings happen here, not in production.

  5. Production migration in dependency order

    We run production migration in record-dependency sequence: Partners (from Organizations), Leads (from Contacts and Insightly Leads with lifecycle stage split), Opportunities (with Partner and User references resolved), Tasks (with related-to references resolved to Partner, Opportunity, or Project), Projects and Milestones, Custom Objects (last, because they may reference Partner or Opportunity lookups), and Notes as mail.message records. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC API with batch chunking and error logging to handle large volumes. No production data is modified until the staging sign-off is received.

  6. Cutover, validation, and workflow rebuild handoff

    We freeze Insightly data entry during cutover and run a final delta migration of any records created or modified during the migration window. We enable Odoo CRM as the system of record and deliver the Workflow and Action Rules rebuild inventory document to the customer's Odoo administrator. We support a one-week hypercare window where we resolve any data reconciliation issues raised during the first week of Odoo use. We do not rebuild Insightly Workflow Rules as Odoo Action Rules inside the migration scope; that is a separate engagement estimated during discovery.

Platform deep dives

Context on both ends of the pair

Insightly Marketing logo

Insightly Marketing

Source

Strengths

  • Combines CRM, marketing automation, and project management in a single subscription rather than three separate tools.
  • Right-sized pricing for 10-50 person teams — lower total cost than Salesforce with faster implementation.
  • Custom objects and custom field groups allow non-technical users to adapt the schema to their business without developers.
  • Native Unbounce integration provides landing pages and forms without additional third-party tools post-merger.
  • Annual billing with transparent per-user pricing; record limits scale across Plus (100k), Professional (250k), and Enterprise (500k).

Weaknesses

  • Workflow automation rules are not exportable, requiring manual recreation in the destination platform.
  • CSV export delivers one category at a time via email — not a unified bulk export for migration teams.
  • Mandatory fees (onboarding, AppConnect setup, Premier Support) apply to All-in-One bundles, inflating year-one costs beyond the advertised per-user rate.
  • UI performance degrades with large datasets, and reporting flexibility is limited compared to enterprise CRMs.
  • Email templates export in a format that requires rebuilding rather than direct import into most destination platforms.
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 Insightly Marketing 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

    Insightly Marketing: Not publicly documented; Insightly does not publish explicit rate limits in its developer documentation.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Insightly Marketing 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 four and six weeks for accounts under 50,000 total records (Contacts, Organizations, Opportunities, Projects, Tasks) with no custom objects and a single Insightly pipeline. Migrations with custom object schemas, multiple Insightly pipelines requiring Odoo stage consolidation, large engagement histories (over 200,000 activity records), or Project-to-Odoo task migration move to fourteen to twenty weeks because of custom object discovery, Odoo API batch handling, and the Action Rules rebuild documentation scope.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Insightly Marketing.
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