CRM migration

Migrate from Odoo Marketing Automation to Odoo CRM

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

Odoo Marketing Automation logo

Odoo Marketing Automation

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

75%

9 of 12

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

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Odoo Marketing Automation to Odoo CRM is an intra-platform consolidation, not a cross-vendor migration. Both modules share Odoo's core partner model (Contacts and Leads), the same XML-RPC API surface, and the same Custom-plan API availability gating. The primary migration challenge is that Automation Rules, Workflow Activities, and Campaign Trace logs have no direct Odoo CRM equivalent because CRM focuses on pipeline management rather than marketing campaign orchestration. We extract the full rule structure (triggers, conditions, action chains, email templates), document it as a written inventory, and deliver it alongside the migrated records so your Odoo admin can rebuild automation inside CRM's Automated Actions. Email Templates migrate as reusable records. Mass Mailing history migrates as a reference object. Attachments do not migrate. Standard-plan customers without API access require CSV-based export and import, which we accommodate by pre-formatting source exports and pre-mapping destination import columns.

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

Odoo Marketing Automation logo

Odoo Marketing Automation

What's pushing teams away

  • Custom Python code required for non-standard automation logic forces teams to hire Odoo developers or learn server actions to do anything outside the built-in activity types.
  • API access restricted to the Custom plan tier ($61/user/month) locks out smaller teams from programmatic data exports, bulk imports, and third-party integrations.
  • Two separate apps (Email Marketing and Marketing Automation) must be installed together for full functionality, creating confusion about feature ownership and workflow scope.
  • Reporting limitations — no native conversion tracking, weak analytics dashboards, and no built-in revenue attribution — push data-driven teams toward dedicated marketing automation platforms.

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

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

Odoo Marketing Automation

Contact

maps to

Odoo CRM

Contact

1:1
Fully supported

Odoo Marketing Automation reads from the same res.partner model that Odoo CRM uses for Contacts. We migrate name, email, phone, company (partner_id), tags, and custom fields from the source partner records. The internal id from the source database is preserved in a custom migration_ref field so that Campaign traces can be reconciled against the original contact records after migration.

Odoo Marketing Automation

Lead

maps to

Odoo CRM

Lead

1:1
Fully supported

Leads in Odoo Marketing Automation and Odoo CRM share the crm.lead model. We migrate lead name, email, phone, company name, stage_id, priority, source, expected closing date, and tags. Stage names vary by database and require a mapping table built during scoping. Owner (user_id) migrates by email match against the Odoo destination User table.

Odoo Marketing Automation

Opportunity

maps to

Odoo CRM

Opportunity

1:1
Fully supported

Opportunities can be enrollment targets in Marketing Automation via domain filters. We migrate opportunity name, partner_id, stage_id, expected revenue, probability, lost reason, and close date. Opportunities referenced in Automation Rule domain filters are preserved as CRM Opportunities after migration, and the domain filter logic is included in the automation inventory document for manual rebuild.

Odoo Marketing Automation

Campaign

maps to

Odoo CRM

Campaign (reference object)

1:1
Fully supported

Marketing Automation Campaigns have no direct CRM equivalent. CRM does not have a campaign object for marketing orchestration. We migrate Campaign name, target model (Contact, Lead, or Sales Order), audience domain filter, and campaign state as a reference record stored in a custom CRM_Campaign migration table. The customer's Odoo admin uses this as the lookup reference when rebuilding automation inside CRM Automated Actions.

Odoo Marketing Automation

Automation Rule

maps to

Odoo CRM

Automated Action (inventory only)

lossy
Fully supported

Automation Rules are the workflow definitions in Marketing Automation (trigger, filter domain, action chain). These do not have a direct CRM equivalent and cannot be replayed on the destination because CRM Automated Actions have a different trigger model and action set. We extract every Automation Rule with its name, trigger_type (time-based, email event, server action, record creation), filter_domain, and action chain, and present it as a written inventory document with recommended CRM Automated Action equivalents. Python Code activities are flagged separately as manual-rebuild items.

Odoo Marketing Automation

Workflow Activity

maps to

Odoo CRM

Automated Action Action (inventory only)

lossy
Fully supported

Workflow Activities are the individual steps within an Automation Rule (Send Email, Update Record, Create Task, Server Action). We extract activity type, timing (wait_days, interval_type), template reference, and child activity links as part of the Automation Rule inventory. Send Email activities map to CRM Email Templates and can be reused; Update Record activities map to CRM Automated Action field updates; Create Task activities map to CRM Project tasks or CRM activities.

Odoo Marketing Automation

Mass Mailing

maps to

Odoo CRM

Email (reference object)

1:1
Fully supported

Mass Mailings tracked in the Email Marketing app (mailing.mailing records) are migrated as reference objects in a custom CRM_MassMailing migration table with subject, body (HTML), scheduled_date, recipient count, and mailing statistics (sent, delivered, opened, clicked). The email body HTML is preserved for re-use inside CRM Email Templates if the customer rebuilds a campaign send in CRM.

Odoo Marketing Automation

Email Template

maps to

Odoo CRM

Email Template

1:1
Fully supported

Email Templates from the Email Marketing app (mail.template records) migrate to CRM Email Templates. We migrate template name, subject, body HTML, and inline image references. Variable placeholders (mail_merge_model fields) are preserved with a note that they require reconfiguration inside CRM because CRM uses a different merge model than Marketing Automation.

Odoo Marketing Automation

Tag

maps to

Odoo CRM

Tag

1:1
Fully supported

Tags on Contacts, Leads, and Opportunities in Marketing Automation are stored in the ir.model.data pattern shared with CRM. We migrate tag names as string arrays and reassign by name on the destination. Duplicate tag names across source objects are merged into a single tag list per CRM convention.

Odoo Marketing Automation

Custom Field

maps to

Odoo CRM

Custom Field

lossy
Fully supported

Custom fields added via Odoo Studio or ir.model.fields on Contact, Lead, and Opportunity are migrated as key-value pairs on the parent record. We inspect the ir.model.fields metadata to determine field type (char, integer, many2one, date, etc.) and create equivalent custom fields in the destination CRM database before importing data. Many2one fields require lookup resolution against the referenced model.

Odoo Marketing Automation

User / Owner

maps to

Odoo CRM

User

1:1
Fully supported

Odoo user accounts are referenced as create_uid, write_uid, and assignees on CRM and marketing records. We map user login, name, and active status by email match against the destination Odoo User table. Any source user without a matching destination user is flagged for the customer admin to provision before record migration begins.

Odoo Marketing Automation

Campaign Trace

maps to

Odoo CRM

Activity Log (reference)

1:1
Fully supported

Campaign Trace records (marketing_trace records linked to contacts and leads) capture enrollment events in Marketing Automation. CRM has no trace log equivalent. We migrate trace data as reference records in a custom CRM_CampaignTrace migration table keyed to the original contact and campaign IDs, allowing the customer admin to reconstruct trace history inside CRM Activities or a custom model 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.

Odoo Marketing Automation logo

Odoo Marketing Automation gotchas

High

External API access is gated behind the Custom plan

High

Automation rules with Python server actions cannot replay on non-Odoo destinations

Medium

No native conversion tracking within Marketing Automation

Medium

Two dependent apps must both be installed for full feature access

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 and Workflow Activities cannot replay in CRM

    Odoo Marketing Automation uses a rule-based automation model (utm.monitor and marketing.automation.rule) with multi-step Workflow Activities that include email sends, record updates, task creation, and Python server actions. Odoo CRM's Automated Actions use a different trigger model (ir.actions.server) with a more limited action set. We extract every Automation Rule and Workflow Activity as a written inventory with recommended CRM equivalents. Python Code activities require a developer to rebuild inside CRM or convert to standard action types. We do not migrate automation rules as executable code.

  • Campaign traces and mass mailing statistics have no CRM home

    Campaign Trace records (enrollment events per contact per campaign) and Mass Mailing statistics (sent, delivered, opened, clicked, bounced) are stored in Odoo's marketing.automation.trace and mailing.mailing models. CRM has no equivalent object for these metrics. We migrate them as reference data in a custom migration table so the customer can review historical campaign performance alongside the migrated contacts, but CRM dashboards will not surface these metrics natively. We flag this gap during scoping so expectations are set before migration begins.

  • Standard plan API access requires CSV-based migration

    Odoo's XML-RPC External API is only available on the Custom plan ($61/user/month). Standard plan customers ($31.10/user/month) cannot programmatically export Contacts, Leads, Campaigns, or automation records. We work around this using Odoo's native CSV/XLS export from list views, which is slower, requires more manual column mapping, and does not export automation rule metadata. We confirm API availability during discovery and adjust the extraction method accordingly. Customers serious about ongoing automation may need to upgrade to Custom for API access regardless of migration scope.

  • SMS Marketing and two-app dependency not available in CRM alone

    SMS automation features in Marketing Automation depend on the SMS Marketing app being installed alongside Email Marketing. Odoo CRM does not include SMS Marketing. If the source database uses SMS campaigns or SMS-based automation steps, we flag them during scoping and note that CRM alone cannot replicate this functionality without installing the SMS Marketing app separately. Email-based automation migrates without this constraint.

  • Email template merge fields require manual reconfiguration

    Marketing Automation Email Templates use Odoo's mail.merge model for dynamic field substitution in mass mailings. CRM Email Templates use a different substitution model tied to the CRM lead and contact fields. Inline images and merge tokens do not automatically transfer. We migrate the HTML body and subject as-is, but the customer admin must re-add merge fields inside CRM's Email Template editor. We flag every template with dynamic fields in the migration inventory.

Migration approach

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

  1. Discovery and app inventory

    We audit the source Odoo database to confirm which apps are installed (Marketing Automation, Email Marketing, SMS Marketing, CRM), estimate record counts per object (Contacts, Leads, Opportunities, Campaigns, Automation Rules, Mass Mailings, Email Templates), and determine API access tier (Standard or Custom plan). We extract a full list of Automation Rules and Workflow Activities with their trigger types, filter domains, and action chains. This scoping call typically runs 60-90 minutes with the customer's Odoo admin and produces a written migration scope document.

  2. Extraction method selection

    If the source is on the Custom plan, we use XML-RPC to extract Contacts, Leads, Opportunities, Email Templates, Campaigns, Mass Mailings, Automation Rules, and Workflow Activities in structured JSON batches. If the source is on the Standard plan, we use CSV export from list views, pre-formatting the export columns and mapping them to the destination schema before import. We extract Tags and Custom Fields separately from ir.model.fields and ir.attachment metadata to ensure custom field types and names are preserved.

  3. Automation rule and campaign inventory

    We extract every Marketing Automation Rule and Workflow Activity as a structured JSON document including rule name, trigger type, filter domain, action chain (with activity type, timing, template reference, and child activity links), and any Python Code activity blocks. We cross-reference Campaign trace logs against Contact and Lead IDs to build the CRM_CampaignTrace migration table. The inventory is delivered as a written document with each rule on a separate page showing the full trigger-to-action chain and a recommended CRM Automated Action equivalent. Python Code activities are flagged as manual-rebuild items.

  4. Schema preparation in destination CRM

    We create any missing custom fields in the destination CRM database that correspond to source custom fields on Contact, Lead, and Opportunity. We pre-create the CRM_Campaign and CRM_CampaignTrace migration reference tables if the customer wants historical campaign data accessible post-migration. We configure tag records in the destination so tag name matching works during import. User mapping is validated against the destination Odoo User table to confirm all source owner references have a matching destination user.

  5. Staged import in dependency order

    We import into Odoo CRM in dependency order: Users (validated, not migrated), Tags (first, to avoid orphan tags), Contacts (with custom field data), Leads (with stage mapping applied), Opportunities (with partner_id and owner_id resolved), Email Templates (as reusable CRM templates), then the CRM_Campaign and CRM_CampaignTrace reference tables. After each phase we emit a reconciliation report comparing source record count to destination record count and flag any records that failed import with the error reason.

  6. Cutover, validation, and automation rebuild handoff

    We run a delta migration for any records modified during the import window, then hand off to the customer's Odoo admin to validate a random sample of migrated records. We deliver the Automation Rule inventory document and schedule a 60-minute handoff call to walk through each rule's recommended CRM Automated Action equivalent. We do not rebuild Automation Rules as CRM Automated Actions inside the migration scope; that work is handled by the customer's Odoo admin or an Odoo implementation partner. We offer a one-week hypercare window for reconciliation issues.

Platform deep dives

Context on both ends of the pair

Odoo Marketing Automation logo

Odoo Marketing Automation

Source

Strengths

  • Native integration with the broader Odoo suite (CRM, Sales, eCommerce, Inventory, Accounting) means automation can act on transactional data without ETL.
  • Transparent per-app pricing is far cheaper than per-contact platforms (HubSpot, Marketo) for large contact databases — a structural advantage for high-volume senders.
  • Drag-and-drop email editor and visual workflow builder usable without coding knowledge once the Odoo learning curve is cleared.
  • Multi-channel support: email, SMS, and social media campaigns orchestrated from one platform.
  • Open-source codebase (Community Edition) provides a no-licence path for teams with internal Odoo developers.

Weaknesses

  • Steep learning curve for the Odoo UI — reviewers consistently note beginners struggle to orient versus purpose-built marketing tools like Mailchimp or ActiveCampaign.
  • Segmentation depth is limited compared to dedicated marketing automation platforms; complex predicate logic requires technical or developer help.
  • Automation workflow flexibility is rigid for non-standard scenarios; multi-branch logic and dynamic content insertion are weaker than HubSpot or Klaviyo.
  • Reporting and analytics are basic — most teams add Odoo Studio reporting or external BI tools (Power BI, Metabase) for executive-grade dashboards.
  • Third-party integration out of the box is limited to the Odoo connector ecosystem; bespoke integrations require Odoo development.
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 Odoo Marketing Automation 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

    Odoo Marketing Automation: Not publicly documented by Odoo.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations complete in two to four weeks for databases under 10,000 contacts, 2,000 leads, and 50 Automation Rules with API access. Larger databases (over 25,000 contacts) or Standard-plan databases without API access requiring CSV-based export and import move to five to eight weeks. The automation rule inventory work adds scoping time on top of data migration because we extract and document every rule individually before import begins.

Adjacent paths

Related migrations to explore

Ready when you are

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