CRM migration

Migrate from Brevo Marketing Platform to Odoo CRM

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

Brevo Marketing Platform logo

Brevo Marketing Platform

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

62%

8 of 13

objects map 1:1 between Brevo Marketing Platform and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Brevo Marketing Platform to Odoo CRM is a shift from a multi-channel marketing SaaS tool to an open-source ERP with a built-in CRM module. Brevo organizes data around Contacts, Companies, and Deals with pipeline and stage support; Odoo uses Contacts, Companies, and Opportunities with a pipeline kanban view, activity log, and Server Action automations. We map Deals to Opportunities, preserve stage assignments in the Odoo pipeline configuration, and transfer tag assignments as Odoo tags against each Contact. Brevo's automation workflows (Journeys) do not migrate as code — they require rebuilding in Odoo Studio or via server-side Python actions, and we deliver a written inventory documenting every active workflow for your admin. Brevo's daily export feature was deprecated on May 30th, 2025, which means non-Enterprise accounts must use the Contacts API with pagination or one-off UI exports for data extraction. Custom object records from Enterprise and Pro Brevo accounts map to Odoo custom fields on the Contact or an Odoo custom model created during schema setup.

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

Brevo Marketing Platform logo

Brevo Marketing Platform

What's pushing teams away

  • Advanced analytics and attribution reporting are described as limited compared to enterprise tools, frustrating data-driven marketers.
  • Template customization is minimal; users wanting highly branded or complex email layouts frequently outgrow what Brevo offers.
  • Customer support response times are cited as slow by multiple reviewers, particularly on lower tiers.
  • The learning curve for complex automation workflows is steep, and in-app guidance for advanced setups is minimal.

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

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

Brevo Marketing Platform

Contact

maps to

Odoo CRM

Contact (res.partner)

1:1
Fully supported

Brevo Contact records map directly to Odoo res.partner records with partner_type set to 'contact'. The contact email is the dedupe key. Standard Brevo attributes (first name, last name, phone, mobile, city, country, birthday) map to the corresponding Odoo contact fields. Brevo custom attributes (attributes array) migrate as Odoo custom fields on res.partner created in Odoo Studio before migration. Brevo tag assignments migrate as Odoo tags (mail.message.subtype) linked to the Contact via mail.followers. Any Brevo contact with no email address is held in a reconciliation queue because Odoo requires an email for partner deduplication.

Brevo Marketing Platform

Company

maps to

Odoo CRM

Company (res.partner with partner_type = 'company')

1:1
Fully supported

Brevo Company records map to Odoo res.partner with partner_type = 'company' and is_company = True. The company name maps to name, domain maps to website, and Brevo address fields map to Odoo address fields on the related partner record. Odoo allows multiple contacts (employees) to be linked to a single company partner, matching Brevo's contact-to-company relationship. Company is created before any contact import so that the child contact can reference the parent company via parent_id.

Brevo Marketing Platform

Deal

maps to

Odoo CRM

Opportunity (crm.lead)

1:1
Fully supported

Brevo Deal records map to Odoo crm.lead (Opportunity). The deal name becomes the Opportunity name, amount becomes expected_revenue, expected_close_date maps to date_deadline, and the Brevo pipeline and stage map to the Odoo pipeline and stage in the crm.lead record. Brevo deal contacts and companies link to the crm.lead's partner_id (primary contact) and partner_ids (multi-contact link) fields. Lost Deals migrate with the lost reason preserved as a note.

Brevo Marketing Platform

Pipeline

maps to

Odoo CRM

Team Pipeline

lossy
Fully supported

Brevo pipelines map to Odoo Sales Teams (crm.team), each with its own pipeline kanban view. We create Odoo Teams during schema setup, naming them to match the Brevo pipeline labels. Each Team's crm.lead.pipeline records get the corresponding stage columns created in Odoo's pipeline view. The Odoo team_id field on crm.lead is populated from the Brevo pipeline assignment.

Brevo Marketing Platform

Stage

maps to

Odoo CRM

Stage (crm.stage)

lossy
Fully supported

Brevo stage names migrate as Odoo crm.stage records attached to each Odoo team. Stage probability percentages map from Brevo to Odoo's probability field, rounded to the nearest integer. Stage sequence order is preserved for kanban column ordering. Custom stage colors in Brevo do not transfer; Odoo stage colors are configured by the admin post-migration.

Brevo Marketing Platform

Automation Workflow

maps to

Odoo CRM

Server Action / Automated Action (Studio)

1:1
Fully supported

Brevo automation workflows (Journeys) do not migrate as code because the trigger-action model differs fundamentally from Odoo's Server Actions and Automated Actions. We deliver a written inventory of every active Brevo automation with its trigger type, conditions, actions, and a recommended Odoo Studio equivalent. Odoo's Studio Automated Actions support record-triggered, time-based, and cron-triggered automations, but Python-level Server Actions require developer involvement. Brevo workflow steps that cannot be represented in Odoo Studio are explicitly flagged in the inventory.

Brevo Marketing Platform

Custom Object

maps to

Odoo CRM

Custom Model or Custom Fields on Contact

lossy
Fully supported

Brevo Custom Objects (Enterprise and Pro only) require pre-migration schema design in Odoo. If the destination Odoo instance uses the same custom object concept, we create a matching Odoo model via Studio or Python and populate it with Brevo's Custom Object records via the Odoo XML-RPC API. If the destination Odoo does not have custom model support enabled, we map the custom object attributes to custom fields on the Odoo res.partner record. All custom fields are created before data import begins.

Brevo Marketing Platform

Email Campaign

maps to

Odoo CRM

Mail Message / Mass Mailing Campaign

1:1
Fully supported

Brevo email campaign metadata (name, subject, sender name, sender email, send date, status) migrate as Odoo mass.mailings records within a corresponding Odoo crm.tag or utm.campaign record for tracking. Campaign HTML content migrates as a template in Odoo's email template system. We do not migrate Brevo campaign delivery statistics (open rate, click rate) as Odoo does not store these natively — we deliver them as a CSV alongside the migration for the customer to import into a BI tool or spreadsheet.

Brevo Marketing Platform

SMS Campaign

maps to

Odoo CRM

SMS Message records

1:1
Fully supported

Brevo SMS campaign metadata migrates to Odoo sms.sms records. SMS credits are not migratable — the destination Odoo instance must have its own SMS provider (Odoo's SMS module requires a Twilio or OVH integration). Sender ID and phone number formats are validated against the destination SMS provider's requirements during mapping. Brevo SMS content migrates as Odoo sms.sms body text.

Brevo Marketing Platform

Tag

maps to

Odoo CRM

Tag (mail.followers subtype or crm.tag)

lossy
Fully supported

Brevo tags stored as flat key-value labels on Contacts migrate as Odoo tags. We create the tag records in Odoo first (via the tag model's create API), then link them to the corresponding Contact records via mail.followers. The tag name is the dedupe key; tags with the same name across different Brevo lists are merged in Odoo. Tags with no contact assignments are still created but flagged in the reconciliation report.

Brevo Marketing Platform

Segment

maps to

Odoo CRM

UTM Campaign or CRM Tag Group

lossy
Fully supported

Brevo dynamic segments defined by filter conditions (e.g., 'contacts with city = London AND opened email in last 30 days') do not have a direct Odoo equivalent because Odoo segments are static groups updated manually or via a scheduled action. We export the segment filter logic as a written definition and recommend recreating it as an Odoo Automated Action that runs a search on the same criteria on a daily schedule. The segment name becomes an Odoo crm.tag group label.

Brevo Marketing Platform

Transactional Email Event

maps to

Odoo CRM

Mail Message / Note on Contact

1:1
Fully supported

Brevo transactional email event logs (delivered, bounced, complaint, deferred) are exported as a CSV with contact reference. In Odoo, these events are stored as mail.message records linked to the Contact partner record, with the event type in the message body and the timestamp preserved. We do not migrate webhook event data into Odoo's native tracking tables because Odoo does not expose a transactional email event API equivalent; the CSV is the system of record for delivery metrics post-migration.

Brevo Marketing Platform

User

maps to

Odoo CRM

User

1:1
Fully supported

Brevo user records (name, email, role) export for administrative reference. User provisioning in Odoo is a separate step — the customer creates Odoo users with matching email addresses before migration, and we match Brevo owner assignments by email. Any Brevo user without a matching Odoo User is flagged in the reconciliation report. Brevo marketing seat billing ($9/month) does not map to Odoo user records; Odoo CRM users are provisioned based on the customer's Odoo subscription tier.

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.

Brevo Marketing Platform logo

Brevo Marketing Platform gotchas

High

Daily exports deprecated since May 30th, 2025

High

Contact storage limits tied to email volume tier, not plan name

High

Custom Objects only available on Enterprise or Pro plans

Medium

Automation workflow migration marks unsupported steps inactive

Medium

List IDs can change unexpectedly on Brevo's side

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

  • Brevo daily exports deprecated May 30th 2025

    Brevo removed the daily export feature in May 2025. Non-Enterprise accounts must use the Contacts API (GET /contacts) with offset pagination, or trigger one-off CSV exports from the Brevo UI, to extract contact data. For large contact lists (over 50,000), API pagination can require hundreds of paginated requests. We confirm the export method during scoping based on account tier and account for the additional API call time in the migration timeline. Enterprise accounts have access to Brevo's Customer Data Platform as an alternative export path.

  • Brevo automation workflows do not rebuild in Odoo Studio

    Brevo automation Journeys use a trigger-condition-action model with channel-specific actions (send email, send SMS, add tag, wait for duration) that does not map to Odoo Studio's Automated Actions or Server Actions without a developer. We document every active Brevo automation in a written inventory with its trigger, filter conditions, action list, and a recommended Odoo equivalent. Any Brevo action that cannot be replicated in Studio (custom code actions, Brevo-specific channel actions) is explicitly flagged. The customer's Odoo developer or implementation partner rebuilds the automations post-migration.

  • Odoo contact deduplication uses email as the unique key

    Odoo res.partner uses email as the deduplication key. Brevo contacts without an email address cannot be upserted deterministically in Odoo and are held in a reconciliation queue. Brevo contacts with duplicate emails are upserted as a single Odoo partner, with the duplicate Brevo contact records merged into notes on the Odoo contact. Brevo companies without an email (legal entity records) are created as partner_type=company records with no email, which Odoo permits, but the customer must confirm the deduplication strategy during scoping.

  • Brevo SMS and WhatsApp campaigns require a separate Odoo connector

    Brevo's native SMS and WhatsApp channels do not have a direct Odoo equivalent. Odoo's SMS module requires integration with a third-party SMS provider (Twilio, MessageBird, OVH) configured separately. We migrate the SMS campaign metadata and content but cannot migrate SMS delivery credits or phone number validity status. WhatsApp requires a separate Odoo WhatsApp connector app from the Odoo Apps store or a custom integration. We flag this gap in the migration scope and recommend provisioning an SMS provider before cutover if the team relies on transactional SMS.

  • Odoo Studio custom fields require the right edition

    Odoo Studio (for creating custom fields and models without code) is available on Odoo Online and Odoo.sh Starter, Basic, and Standard plans, but some advanced field types (computed fields, relational fields across models) require Odoo Studio on the Standard plan or higher. Brevo custom object schemas from Enterprise/Pro accounts may require Odoo Standard or higher to replicate faithfully. We confirm the destination Odoo edition during scoping and adjust the custom field creation strategy accordingly.

Migration approach

Six steps for a successful Brevo Marketing Platform to Odoo CRM data migration

  1. Discovery and export method confirmation

    We audit the source Brevo account across plan tier, contact count, company count, deal count, pipeline count, active automation workflows, custom object schemas (if Enterprise/Pro), tag count, and segment definitions. We confirm the export method: Enterprise accounts use the Customer Data Platform or API; Starter and Standard accounts use the Contacts API with pagination. We also confirm the destination Odoo edition, installed apps, and existing custom fields so we can design the Odoo schema before any data moves.

  2. Odoo schema design and pipeline configuration

    We design the destination schema in Odoo. This includes creating custom fields on res.partner and crm.lead to match Brevo custom attributes, creating Odoo Teams (crm.team) to match Brevo pipelines, creating crm.stage records to match Brevo stage names with correct probabilities, and creating custom models for Brevo Custom Objects if the destination Odoo edition supports them. Tags are pre-created in Odoo. Schema changes are deployed in a test Odoo database first.

  3. Sandbox migration and reconciliation

    We run a full migration into an Odoo test database using a representative data sample (typically 10-20% of production volume). The customer's Odoo admin reviews record counts, spot-checks 25-50 records against the Brevo source, verifies pipeline and stage assignments, and confirms tag mappings. The sign-off on the sandbox migration is required before the production migration begins. Any field mapping corrections happen in this phase.

  4. Owner and user reconciliation

    We extract every distinct Brevo Owner referenced on Deals, Contacts, and Companies and match them by email against the destination Odoo User list. Brevo users without matching Odoo users are held in a reconciliation queue. The customer's Odoo admin provisions any missing users (active status matching whether the original Brevo user is still active). Migration cannot proceed past this step because Odoo's crm.lead requires an assigned user_id.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Companies (as company-type partners), Contacts (with parent_id resolved to the company partner), Deals (as crm.lead with partner_id, team_id, and stage_id resolved), Tags (linked via mail.followers to each Contact), Custom Objects (last, with lookups to the parent Contact), Email and SMS campaign metadata (as Odoo mass.mailings and sms.sms records). Each phase emits a row-count reconciliation report before the next phase begins. Brevo automation workflows are not migrated — they are delivered as a written inventory after the data migration is complete.

  6. Cutover, validation, and automation rebuild handoff

    We freeze Brevo writes during the cutover window, run a final delta migration of any records modified during migration, then enable Odoo as the system of record. We deliver the automation rebuild inventory document to the customer's admin team. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Brevo automations in Odoo Studio as part of the standard migration scope — that is a separate engagement or an internal Odoo developer task.

Platform deep dives

Context on both ends of the pair

Brevo Marketing Platform logo

Brevo Marketing Platform

Source

Strengths

  • Free plan with 300 emails/day and full transactional API access — best-in-class for low-volume use cases.
  • Per-email-volume pricing model instead of per-contact, protecting costs for large lists.
  • Includes CRM (Contacts, Companies, Deals) in all paid tiers at no extra charge.
  • Multi-channel delivery (email, SMS, WhatsApp, chat) from a single platform with shared contact records.
  • Bulk upsert API for Contacts and Custom Objects supports asynchronous batch processing.

Weaknesses

  • Daily export feature deprecated as of May 2025, limiting programmatic data pull options for non-Enterprise accounts.
  • Custom Objects require Enterprise or Pro plan — a common blocker for teams that outgrow Starter/Standard but have custom data.
  • Automation workflows have a separate migration path with potential for unsupported steps to become inactive.
  • Contact storage limits are tied to email volume tier, not plan name — easy to hit limits unexpectedly when importing large lists.
  • Limited email template variety and advanced template customization compared to dedicated email design tools.
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. 2 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 Brevo Marketing Platform and Odoo CRM.

  • Object compatibility

    B

    2 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

    Brevo Marketing Platform: Documented per-endpoint quotas; general rate limits apply per org.

  • Data volume sensitivity

    A

    Brevo Marketing Platform exposes a bulk API — large-volume migrations stream efficiently.

Estimator

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

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

Can't find your answer?

Walk through your Brevo Marketing Platform 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 three and five weeks for accounts under 20,000 Contacts and 3,000 Deals with no custom objects. Migrations with Enterprise-tier custom objects, large tag/segment sets, multi-pipeline Deal structures, or large engagement histories move to seven to twelve weeks because of Brevo API pagination time, Odoo Studio schema design, and the automation rebuild inventory process.

Adjacent paths

Related migrations to explore

Ready when you are

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