CRM migration
Field-level mapping, validation, and rollback between Odoo CRM and Mailchimp. We move data and schema; workflows are rebuilt natively in Mailchimp.
Odoo CRM
Source
Mailchimp
Destination
Compatibility
5 of 8
objects map 1:1 between Odoo CRM and Mailchimp.
Complexity
BStandard
Timeline
2-4 weeks
Try the reverse
Overview
Moving from Odoo CRM to Mailchimp is a contact-and-audience migration, not a full CRM replacement. Odoo CRM holds a relational model of Contacts, Leads, Opportunities, Pipeline Stages, Sales Teams, Activities, Tags, Custom Fields, and Quotations; Mailchimp has an Audience member model with Tags and Merge Fields. We migrate the Contact/Partner core (res.partner), preserving name, email, phone, address, and company_name. Tags on contacts map to Mailchimp Tags via email dedupe. Custom fields on res.partner map to Mailchimp Merge Fields, with selection and many2one types flagged for type mapping. Odoo's Lead status and source values migrate as Merge Fields or Tags. Odoo's Opportunities, Pipeline Stages, Activities, Sale Orders, Attachments, Lead Scoring, and Automation Rules have no Mailchimp equivalent and are not migrated; we deliver a written inventory of these records in CSV for the customer's admin to re-enter manually post-migration. Workflows, automations, and sequences do not migrate. Mailchimp's per-contact tier pricing contrasts with Odoo's per-user-plus-per-app stacking, making this migration attractive for marketing-focused teams consolidating on a dedicated email platform.
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.
Source platform
Odoo CRM platform overview
Scorecard, SWOT, gotchas, and pricing for Odoo CRM.
Destination platform
Mailchimp platform overview
Scorecard, SWOT, gotchas, and pricing for Mailchimp.
Data migration guide
The complete Mailchimp migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
Odoo CRM migration guide
Understand the data you're exporting from Odoo CRM before mapping it.
Destination checklist
Mailchimp migration checklist
Pre- and post-cutover tasks for moving onto Mailchimp.
Source checklist
Odoo CRM migration checklist
Exit checklist for unwinding your Odoo CRM setup cleanly.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Odoo CRM object lands in Mailchimp, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Odoo CRM
Contact / Partner (res.partner)
Mailchimp
Audience Member
1:1Odoo res.partner holds both individual contacts and company records. Standard fields (name, email, phone, street, city, state, zip, country, company_name) map directly to Mailchimp's corresponding contact fields. We use email as the dedupe key to prevent duplicate members on re-import. company_id on res.partner maps to the company_name field in Mailchimp. Contacts without an email address are flagged during extraction and held in a separate CSV for the customer's admin to enrich before Mailchimp import.
Odoo CRM
Custom Field (on res.partner)
Mailchimp
Merge Field
lossyCustom fields defined via Odoo Studio or custom addons on res.partner are stored as columns in the database. We export the field type (char, integer, float, selection, many2one, many2many, date, datetime) and create matching Mailchimp Merge Fields before contact import. Selection fields map to Mailchimp dropdown or radio merge fields; many2one references map to text fields containing the related record name; many2many fields map to text fields with pipe-separated values. Odoo field labels become Merge Field names; field definitions are preserved in the migration inventory.
Odoo CRM
Tag (crm.tag)
Mailchimp
Tag
1:1Odoo CRM Tags applied to crm.lead records via the crm_tag_rel many2many table are linked to res.partner via the contact_id field when the tag is applied to a contact. We extract tag names and map them to Mailchimp Tags using email as the linking key. Tag names are preserved verbatim. If the same tag name exists in multiple Odoo contexts (Lead vs Opportunity), we consolidate to a single Mailchimp Tag. Tags without a corresponding email in the contact extract are held for manual review.
Odoo CRM
Lead Status and Source (crm.lead)
Mailchimp
Merge Field or Tag
lossyOdoo Lead records (crm.lead with type='lead') carry stage_id, source_id, and priority fields. Mailchimp has no Lead object, so we migrate the lead status and source as Merge Fields (F_LD_STATUS, F_LD_SOURCE) or as Tags prefixed with LStatus_ or LSource_ at the customer's election during scoping. Probability, expected revenue, and AI lead score fields are flagged as non-migratable and included in the CRM inventory CSV.
Odoo CRM
Sales Team (crm.team)
Mailchimp
Segment or Tag
lossyOdoo Sales Teams group Opportunities and assign Leads to team members. Mailchimp has no team concept, so crm.team.name maps to either a Mailchimp Segment (if the customer wants filterable team grouping) or a Tag on each contact (if simple labeling is sufficient). Team membership via crm_team_member_rel is not migratable; only the team name per contact record transfers. This mapping requires the customer to choose the representation during scoping.
Odoo CRM
Pipeline Stage (crm.stage)
Mailchimp
No equivalent
1:1Odoo Pipeline Stages define the position of a Lead or Opportunity in the sales funnel. Mailchimp has no pipeline or stage concept. Stage names are not migratable and are included in the CRM inventory export as a CSV column for manual reference. If the customer elects to tag contacts by their last associated opportunity stage, we map stage names to Tags at additional scoping cost, but the CRM context is lost.
Odoo CRM
Activity (mail.activity)
Mailchimp
No equivalent
1:1Odoo Activities (calls, emails, meetings, tasks) linked to crm.lead records are stored in mail.activity with type, date_deadline, user_id, and note fields. Mailchimp tracks opens and clicks per email campaign, which is campaign-level activity data, not the per-contact CRM activity timeline. Activity history is not migratable. We export activity records as a CSV deliverable with contact email, activity type, date, user, and note for the customer's admin to review.
Odoo CRM
Quotation / Sale Order (sale.order)
Mailchimp
No equivalent
1:1Odoo Quotations and Sale Orders (sale.order with sale.order.line) linked to Opportunities carry line items, pricing, and taxes. Mailchimp has no Quote or Order object. Sale order data is not migratable. We export sale.order and sale.order.line records as a CSV deliverable keyed by the contact email, with order number, date, line item description, quantity, unit price, and total for manual re-entry or third-party order management integration.
| Odoo CRM | Mailchimp | Compatibility | |
|---|---|---|---|
| Contact / Partner (res.partner) | Audience Member1:1 | Fully supported | |
| Custom Field (on res.partner) | Merge Fieldlossy | Fully supported | |
| Tag (crm.tag) | Tag1:1 | Fully supported | |
| Lead Status and Source (crm.lead) | Merge Field or Taglossy | Fully supported | |
| Sales Team (crm.team) | Segment or Taglossy | Fully supported | |
| Pipeline Stage (crm.stage) | No equivalent1:1 | Fully supported | |
| Activity (mail.activity) | No equivalent1:1 | Fully supported | |
| Quotation / Sale Order (sale.order) | No equivalent1: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.
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
Mailchimp gotchas
Contact count includes unsubscribed and non-subscribed records
Automation workflows cannot be exported
Account suspensions trigger silently during migration
Template HTML is Mailchimp-specific and may not render in other platforms
E-commerce data requires active store connection
Pair-specific challenges
Migration approach
Discovery and data audit
We extract record counts from Odoo's PostgreSQL database: res.partner (total contacts, contacts with email, contacts without email), crm_lead (Lead count by stage), crm_tag (tag count and distribution), and sale_order (quotation and order count). We assess custom field definitions in ir.model.fields for res.partner, identify field types, and classify them as migratable to Mailchimp Merge Fields or flagged for type transformation. We also identify the Odoo edition (Community vs Online vs Odoo.sh) to confirm the extraction method. The discovery output is a written scope confirming record counts, merge field definitions, tag list, and extraction method.
Mailchimp Audience setup and Merge Field provisioning
We create the Mailchimp Audience with the base contact fields pre-configured (First Name, Last Name, Email Address, Phone, Address). We then create Merge Fields for each Odoo custom field, resolving the field type mapping during this step. Merge Field names follow Mailchimp naming conventions (uppercase with F_ prefix for disambiguation). Once the Audience is set up, we share the Audience ID and confirm the API key access before extracting Odoo data.
Odoo PostgreSQL extraction and deduplication
We run a read-only PostgreSQL query on the Odoo database to extract res.partner records with all standard and custom fields. For contacts with duplicate email addresses, we apply a dedupe rule (most recently modified record wins). We also extract crm_tag records and the crm_tag_rel mapping table to link tags to contact emails. For crm_lead records, we extract stage_id, source_id, and priority values for merge field or tag mapping. We produce a contact CSV, a tag CSV, and a CRM inventory CSV (Leads, Opportunities, Activities, Sale Orders) as separate deliverables.
Data transformation and field mapping
We transform the Odoo extract into Mailchimp-compatible format: Odoo selection field values map to Mailchimp dropdown values; many2one references resolve to the related record name; many2many values concatenate with pipe separators. Odoo Lead status and source values map to Merge Fields or Tags based on the customer's scoping election. We run a validation pass on the contact CSV to confirm all emails are well-formed, all required Merge Field values match the defined types, and no contact exceeds Mailchimp's field length limits before upload.
Mailchimp import and tag application
We upload contacts to Mailchimp via the Audience Members API, using batch operations with exponential backoff on rate limit responses. Mailchimp's implicit dedupe by email applies during import. After the contact batch completes, we apply Tags to each member by joining the tag CSV on email. We monitor the Mailchimp Audience Member count against the source Odoo contact count to confirm all email-bearing contacts arrived.
Cutover, validation, and CRM inventory delivery
We run a final reconciliation comparing Odoo contact count (with email) against Mailchimp Audience Member count. We spot-check 25-50 records for email accuracy, merge field completeness, and tag application. We disable the Odoo-Mailchimp connector and switch the customer to Mailchimp as the email contact system of record. We deliver the CRM inventory CSV (Leads, Opportunities, Activities, Sale Orders, Attachments) with column headers and a row-count summary, and we deliver the written automation and workflow inventory if Odoo Enterprise automations were in use. We do not migrate workflows or automations to Mailchimp; we document them for manual rebuild.
Platform deep dives
Odoo CRM
Source
Strengths
Weaknesses
Mailchimp
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Odoo CRM and Mailchimp.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Odoo CRM and Mailchimp.
Object compatibility
All 8 core objects map 1:1 between Odoo CRM and Mailchimp.
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
Odoo CRM: Not publicly documented; no published rate limit found in Odoo's official developer documentation.
Data volume sensitivity
Odoo 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 Odoo CRM to Mailchimp migration scoping. Not seeing yours? Book a call.
Walk through your Odoo CRM to Mailchimp migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Odoo CRM
Other ways to arrive at Mailchimp
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.