CRM migration

Migrate from cMercury to Odoo CRM

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

cMercury logo

cMercury

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between cMercury and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Migrating from cMercury to Odoo CRM is a cross-category move: cMercury is an email marketing platform with subscriber-centric data, while Odoo CRM is a full relationship management system with Contact, Company, Lead, and Opportunity objects. There is no direct object equivalence between marketing subscribers and CRM contacts, so we resolve the schema gap by mapping cMercury Subscribers to Odoo CRM Contacts, preserving the engagement score as a custom numeric field, and storing email verification status as a contact-level flag. Historical campaign performance (opens, clicks, bounces) migrates as Activity records or Notes against each Contact so the timeline is preserved. cMercury Segments map to Odoo CRM Tags; campaign metadata (subject lines, send dates, aggregate stats) migrates as Note records or Opportunity-linked activities. Automations, templates, sending domains, and the Asset Library are documented rather than migrated: automations require manual rebuild in Odoo's Action Rules or Studio automation; sending domains require fresh DNS configuration; and template HTML is exported for manual reassembly in Odoo's email composer. We do not migrate Workflows, Sequences, or Automations as code; we deliver a written inventory for your admin to rebuild in Odoo Studio or Action Rules.

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

cMercury logo

cMercury

What's pushing teams away

  • The drag-and-drop editor, while user-friendly, lacks the advanced layout control that power users need, pushing experienced designers toward more capable tools.
  • Automation workflows are functional but lack the depth of branching logic and conditional triggers found in dedicated marketing automation platforms.
  • Some users report that customer support response times vary significantly depending on plan tier, with slower turnaround on non-Enterprise accounts.
  • The platform's relative size compared to enterprise competitors means fewer third-party integrations and a smaller ecosystem of plugins and extensions.

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

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

cMercury

Subscriber

maps to

Odoo CRM

Contact

1:1
Fully supported

cMercury Subscribers map to Odoo CRM Contacts. The cMercury email address becomes the Contact email field and serves as the dedupe key. Subscription status (active, unsubscribed, bounced) maps to Odoo CRM's opt-out and blacklist fields: active subscribers remain in the normal contact list, unsubscribed contacts are flagged via the mass_mailing Unsubscribe field, and bounced contacts are flagged in the blacklist or an internal mail.mass_mailing.contact state field. Engagement score migrates as a custom float field on Contact (cm_engagement_score__c) if the customer requests it during scoping; otherwise it is preserved as a CSV export for post-migration manual entry. The cMercury Verify badge (valid, invalid, risky, catch-all) migrates as a selection field on the Contact record (cm_verification_status__c) so the new system can honour quality indicators.

cMercury

Segment

maps to

Odoo CRM

Tag

lossy
Fully supported

cMercury Segments are dynamic filter-based audience groups (engagement score, source, custom field conditions). Odoo CRM does not have a native dynamic segment engine equivalent to cMercury's rule-based segmentation. We translate cMercury's segment membership rules into Odoo CRM Tags, assigning each subscriber the relevant tag(s) based on the last-known segment membership. For segments built on static criteria (tags, source), this is a direct tag assignment. For segments built on engagement thresholds or date ranges, we note the rule in the segment inventory document for the admin to rebuild using Odoo's Domain filter on a saved Filter view.

cMercury

Campaign

maps to

Odoo CRM

Activity + Note

many:1
Fully supported

cMercury Campaign records include subject line, send date, aggregate open rate, click rate, bounce rate, and unsubscribe count. Odoo CRM has no native Campaign object in the base CRM app. We merge campaign metadata into a Note record attached to each Contact who received the campaign, or into a single Note per campaign for reference. Aggregate campaign performance metrics (total opens, clicks, bounces) are stored as a Note on the CRM's root document (or a dedicated Project in the Project app if Odoo Project is enabled) so the customer retains historical performance data. The customer can also opt to map campaign send history to Opportunities if Odoo CRM's native Activity and marketing tracking are used alongside Odoo Marketing, which is outside the base CRM scope.

cMercury

Custom Field

maps to

Odoo CRM

Custom Field on Contact

1:1
Fully supported

cMercury custom profile fields (text, number, date, dropdown) map directly to Odoo CRM custom fields on the Contact model. We create fields of the matching type during schema design, before any data import. Dropdown fields from cMercury become Odoo Selection fields with the same option values. Date fields map to Odoo Date fields. Numeric fields map to Float or Integer fields depending on the cMercury data type. Fields are deployed into the Odoo Sandbox first for validation before production import.

cMercury

Tag

maps to

Odoo CRM

Tag

1:1
Fully supported

cMercury flat tags on subscribers map 1:1 to Odoo CRM Tags. We export all subscriber tag assignments and bulk-apply them to the corresponding Contacts during import using Odoo's mail.composer.mixin (tag write API). Tag names are preserved exactly; tag count is maintained as a count of unique tags per Contact in a custom field if the customer requires it.

cMercury

Email Verification Result

maps to

Odoo CRM

Custom Field on Contact

1:1
Fully supported

cMercury Verify stores per-email validation status (valid, invalid, risky, catch-all) as a badge on each subscriber record. We map this to a selection field (cm_verification_status) on the Odoo CRM Contact record, with values: valid, invalid, risky, catch-all, and unknown. This preserves the quality signal for the customer's deliverability team to reference without re-running verification on the imported list. If the customer has an Odoo email marketing integration (e.g., Odoo Email Marketing app), the verification field can be used to suppress invalid addresses from future sends.

cMercury

Engagement Score

maps to

Odoo CRM

Custom Float Field on Contact

1:1
Fully supported

cMercury tracks per-subscriber engagement scores as numeric values derived from open, click, and reply rates. We map engagement scores to a custom float field (cm_engagement_score) on the Contact record. If Odoo CRM has a scoring system enabled (available via the CRM Score app or a custom field), the score can be used to drive Odoo's lead prioritisation. Note that Odoo's native scoring engine uses different calculation logic; we preserve the original cMercury numeric score as a static field rather than recalculating it in Odoo's model.

cMercury

Asset Library

maps to

Odoo CRM

Attachment on IrAttachment

1:1
Mapping required

Images and files stored in the cMercury Asset Library are downloaded as a batch during extraction, preserving file names and folder organisation. We upload them to Odoo CRM's IrAttachment records, linked to the relevant Contact or saved as general Attachments in Odoo's document management (if the Documents app is enabled). Folder hierarchy is approximated using Odoo's tags on attachments or subfolders in the Documents app, where supported. Plain image files (JPEG, PNG, GIF) are uploaded to the Odoo attachment store; HTML template files are stored as Attachments for manual reassembly in Odoo's email composer.

cMercury

Template

maps to

Odoo CRM

Attachment (Product Template Description or Email Template)

1:1
Fully supported

cMercury templates use a proprietary block structure for the drag-and-drop editor. We extract the HTML source and image assets from each template and store them as Attachments in Odoo CRM. The customer can then manually reassemble the template using Odoo's Email Template editor or paste the HTML into a custom email template. We flag which templates had complex nested blocks (e.g., conditional content, dynamic personalisation) in the inventory document so the admin knows which templates require extra reassembly effort. Template metadata (name, subject line, creation date) is preserved as a Note in the attachment description.

cMercury

Automations

maps to

Odoo CRM

Action Rule / Studio Automation (manual rebuild)

lossy
Mapping required

cMercury Automations are named workflow sequences with triggers, delays, and actions. We document the full automation tree for each active automation during discovery: trigger type, filter conditions, action sequence, and any conditional branching. We deliver this as a written automation inventory with trigger mapping recommendations for Odoo CRM Action Rules or Studio automations. The customer or an Odoo partner rebuilds the automations post-migration. No automation data migrates automatically.

cMercury

Sending Domain

maps to

Odoo CRM

DNS Configuration (manual)

lossy
Fully supported

cMercury sending domains are configured with DKIM, SPF, and DMARC records pointing to cMercury's infrastructure. Odoo Online uses Odoo's own sending infrastructure; Odoo.sh and On-Premise allow custom sending domains with customer-managed DNS. We provide a DNS checklist at cutover that specifies the TXT, DKIM, and SPF records required for each domain in the Odoo environment. The customer configures DNS in their domain registrar. We do not manage DNS changes. Sending domain ownership cannot be transferred between platforms.

cMercury

Owner

maps to

Odoo CRM

User

1:1
Fully supported

cMercury Owner records (users who own subscribers and campaigns) map to Odoo CRM User records. We resolve cMercury owners by email address match against the destination Odoo User table. Any cMercury Owner without a matching Odoo User is held in a reconciliation queue for the customer's admin to provision before record import resumes. Inactive cMercury owners are mapped to inactive Odoo Users so that ownership attribution is preserved even if the user is no longer active.

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.

cMercury logo

cMercury gotchas

Medium

Free tier caps daily sends at 200 emails

Low

cMercury branding on Free plan emails

High

Automation workflows do not migrate automatically

Medium

Sending domain ownership cannot be transferred

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

  • No direct object model between cMercury and Odoo CRM

    cMercury is an email marketing platform built around Subscribers and Campaigns; Odoo CRM is a relationship management platform built around Contacts, Companies, Leads, and Opportunities. There is no Subscriber-to-Contact object equivalence, no Campaign-to-Opportunity mapping, and no native Segment-to-Pipeline mapping. Engagement history must be flattened into Activity records or Notes; aggregate campaign performance cannot be stored as native Odoo CRM metrics without custom fields. We define the schema bridge during discovery, but customers should understand that this is a structural mapping, not a direct record copy.

  • Automation workflows do not migrate automatically

    cMercury automations are defined as sequences of triggers, delays, and actions tied to subscriber events. Odoo CRM uses Action Rules and Studio automations which have a different trigger model and action library. We do not migrate automations as code. We deliver a written inventory of every active cMercury automation during discovery with trigger type, conditions, action sequence, and recommended Odoo Action Rule equivalent. The customer's admin rebuilds these post-migration; we recommend allocating 1-2 hours per complex workflow for manual recreation. Automations with conditional branching or multi-step sequences require careful manual translation.

  • Odoo version window and upgrade costs

    Odoo requires customers on On-Premise or Odoo.sh deployments to maintain within three versions of the latest release or face forced upgrade migration charges. The version you start on matters for total cost of ownership. We flag the customer's current Odoo version (if any) during discovery and note whether the destination version is within the supported window. Odoo Online customers on the SaaS plan are automatically kept up to date, but may face app compatibility issues when major Odoo versions change, requiring app review before upgrades.

  • Sending domains require fresh DNS configuration

    Each cMercury sending domain is configured with DKIM, SPF, and DMARC records tied to cMercury's mail infrastructure. When migrating to Odoo CRM, the new platform will require fresh DNS records for the same domains. Odoo Online uses Odoo's shared sending infrastructure; Odoo On-Premise and Odoo.sh allow custom sending domains with customer-managed DNS. We provide a DNS checklist during cutover specifying the TXT, DKIM selector, and SPF records to configure in the customer's domain registrar. We do not manage DNS changes. Configuration errors during the transition window can cause temporary deliverability drops.

  • Template HTML does not reassemble automatically

    cMercury templates use a proprietary block structure that does not export as a compatible HTML structure for Odoo's email template editor. We extract the HTML source and all embedded image URLs during extraction. Image assets are downloaded and re-uploaded to Odoo's attachment store. The customer manually pastes the HTML into an Odoo Email Template or uses Odoo's drag-and-drop email builder to reassemble the layout. We flag which templates used complex nested blocks, conditional content, or dynamic personalisation tags so the admin knows the reassembly scope.

Migration approach

Six steps for a successful cMercury to Odoo CRM data migration

  1. Discovery and environment assessment

    We audit the cMercury account across all objects: subscriber volume, segment definitions and membership counts, campaign send history, active automations, custom field schema, tag inventory, Asset Library size and file types, and engagement score range. We pair this with an Odoo CRM environment review: which Odoo edition is deployed (Online,.sh, or On-Premise), the current Odoo version, which CRM apps are installed (CRM alone vs CRM plus Project or Marketing), and the target user count. The discovery output is a written migration scope with object-level mapping, a custom field creation list, an automation inventory form, and a recommended Odoo CRM configuration approach.

  2. Schema design and Odoo custom field creation

    We design the destination schema in the Odoo environment before any data import. This includes creating custom fields on the Contact model for engagement score (Float), verification status (Selection), and any cMercury custom fields without direct Odoo equivalents. We configure Tags for segment migration and set up any required Odoo Apps (Documents for asset storage, Project if campaign tracking via activities is selected). Custom fields are deployed into the Odoo Sandbox (Full Copy or Partial Copy) first for validation before production.

  3. Sandbox migration and reconciliation

    We run a full test migration into the Odoo Sandbox using production-like data volume extracted from cMercury. The customer reconciles record counts (Subscribers in vs Contacts in, Tags assigned, campaign notes created), spot-checks 25-50 random Contacts against the source data, and reviews the custom field values and tag assignments. Any field mapping corrections, missed custom fields, or tag naming issues are resolved in the Sandbox before production migration begins.

  4. Owner reconciliation and Odoo User provisioning

    We extract every distinct cMercury Owner referenced on subscriber and campaign records and match by email against the destination Odoo User table. Owners without a matching Odoo User go to a reconciliation queue. The customer's Odoo admin provisions any missing Users (active or inactive depending on whether the original cMercury user is still active). Migration cannot proceed past this step because Contact owner fields must be satisfied at insert time for Odoo's access control.

  5. Production migration in dependency order

    We run production migration in record order: Odoo Users (validated), Accounts/Companies (if multi-company Odoo, created first), Contacts (with opt-out, blacklist, engagement score, and verification status fields set, owner resolved), Tags (bulk-applied per subscriber), campaign notes (merged into per-campaign Notes attached to relevant Contacts), asset files (uploaded to IrAttachment), custom field data for any remaining cMercury custom objects. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Automation inventory delivery and cutover

    We freeze cMercury writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo CRM as the system of record. We deliver the automation inventory document to the customer's admin team with recommended Odoo Action Rule equivalents for each cMercury automation. We support a one-week hypercare window where we resolve reconciliation issues. We do not rebuild cMercury automations as Odoo Action Rules inside the migration scope; that is a separate Odoo configuration engagement. We also deliver the DNS configuration checklist for each sending domain.

Platform deep dives

Context on both ends of the pair

cMercury logo

cMercury

Source

Strengths

  • Built-in email verification reduces bounce rates and protects sender reputation before and after migration.
  • Multiple sending domains allow brand isolation, useful for migrating multi-brand subscriber bases.
  • Deep segmentation with conditional logic supports sophisticated audience targeting.
  • AI Writing Assistant up to 1,000 words on Enterprise helps teams generate content without third-party tools.
  • Hands-on migration support is offered directly by cMercury for teams switching platforms.

Weaknesses

  • The platform is smaller than enterprise competitors, resulting in fewer third-party integrations and a narrower ecosystem.
  • Advanced automation branching logic is limited compared to dedicated marketing automation platforms.
  • Customer support response times vary by plan tier, with non-Enterprise users reporting slower turnaround.
  • The drag-and-drop editor, while accessible, lacks the advanced layout controls that power users expect.
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. All 8 core objects map 1:1 between cMercury and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across cMercury and Odoo CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between cMercury and Odoo CRM.

  • 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

    cMercury: Not publicly documented. cMercury's Terms reference API rate limits as service restrictions but exact thresholds are not disclosed on the public docs site (cmercuryapi.readme.io)..

  • Data volume sensitivity

    A

    cMercury exposes a bulk API — large-volume migrations stream efficiently.

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Simple migrations under 10,000 subscribers with engagement score and verification status preserved as custom fields, no campaign history migration, and a clean custom field schema land between three and five weeks. Migrations with campaign send history mapped as Activity records, engagement score custom field preservation, large Asset Library transfers (500+ files), or multi-company Odoo structures requiring Account pre-creation move to eight to fourteen weeks because of schema design, custom field deployment, and batched API ingestion into Odoo.

Adjacent paths

Related migrations to explore

Ready when you are

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