CRM migration

Migrate from Iterable to Odoo CRM

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

Iterable logo

Iterable

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

73%

11 of 15

objects map 1:1 between Iterable and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Iterable to Odoo CRM is a platform-class migration: Iterable is a cross-channel marketing automation system organized around User Profiles, Journeys, Campaigns, and behavioral event streams; Odoo CRM is a sales-focused CRM organized around Leads, Contacts, Opportunities, and activities on a Kanban pipeline. These are fundamentally different systems with incompatible automation models. We migrate the contact record layer (profiles, list memberships, subscription status, purchase history) into Odoo's Lead and Contact objects, and we log behavioral events as Activity records. We do not migrate Journey definitions, email templates, or campaign send configurations as code; we deliver a written inventory of every active Journey and Template with Odoo automation recommendations so your team can rebuild them post-migration. Odoo CRM does not send marketing email, SMS, or push messages natively, so teams relying on Iterable's outbound execution layer will need a separate marketing tool alongside Odoo CRM.

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

Iterable logo

Iterable

What's pushing teams away

  • Steep learning curve with unclear documentation forces teams to rely heavily on support for tasks that should be self-service.
  • SMS deliverability issues with accounts blocked without clear accountability or transparent root-cause communication from Iterable.
  • Contract pricing increases when usage is reduced, creating a billing model that punishes customers who downscale usage.
  • Cluttered UI requiring multiple clicks through nested menus to access common functions, slowing down campaign creation and editing.
  • Inconsistent conversion tracking and reporting makes it difficult to reliably measure campaign performance and optimize spend.

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

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

Iterable

User Profile

maps to

Odoo CRM

Lead and Contact (split required)

1:many
Fully supported

Iterable User Profiles map to Odoo CRM Lead for unqualified prospects and Contact for qualified buyers. We apply a lifecycle-based split during scoping: Iterable users with subscription or marketing-only signals map to Lead; users with a purchase event or assigned sales owner map to Contact. The original Iterable userId and email preserve as fields on the Odoo record for audit and deduplication.

Iterable

User Profile custom fields

maps to

Odoo CRM

Lead or Contact custom fields

1:1
Fully supported

Iterable profile-level custom fields map directly to custom fields on Odoo crm.lead or res.partner. We audit the full custom field schema during scoping, flag deprecated fields (which Iterabl cannot delete), and collapse redundant or unused fields to keep the Odoo schema clean. Field type mapping converts Iterables picklist, boolean, date, and number types to their Odoo equivalents.

Iterable

List

maps to

Odoo CRM

Tag

1:1
Fully supported

Iterable Lists are audience segments used for campaign targeting. We map each List to an Odoo Tag attached to the corresponding Lead or Contact. List membership is preserved as a Tag value so segmentation logic is recoverable in Odoo. Note that Tags in Odoo are a flat key-value structure and do not support the nested or dynamic audience logic that Iterable Lists offer; we document the original List definition for the admin to rebuild in Odoo.

Iterable

Custom Event

maps to

Odoo CRM

Activity (note or log note)

1:1
Fully supported

Iterable Custom Events capture behavioral data beyond profile updates (page views, feature usage, cart actions). We map these to Odoo Activity records logged against the corresponding Lead or Contact. Event metadata (event name, timestamp, payload) stores in the Activity note body. This preserves the behavioral signal for historical analysis but does not trigger Odoo automations natively. If behavioral triggers are required, we recommend a separate event-tracking integration post-migration.

Iterable

Purchase

maps to

Odoo CRM

Sale Order or Activity log

1:1
Fully supported

Iterable Purchase events record transaction data (orderId, total, items, userId). We map these to Odoo Sale Order lines attached to the customer Contact if Odoo Sales app is active, or to Activity log entries if only the CRM module is in scope. Total revenue and item count preserve as Activity note content. Note that Iterables revenue attribution does not map to Odoo Opportunity without additional configuration.

Iterable

Subscription

maps to

Odoo CRM

Contact field (opt-in status)

1:1
Fully supported

Iterable tracks channel-level opt-in and opt-out state per user (email, SMS, push). We map these to Odoo Contact fields: email opt-out to user_ids.opt_out, SMS opt-out to a custom field sms_opt_out__c. Suppression event history preserves as Activity log entries so the team can audit opt-out timestamps post-migration. Note that Odoo CRM does not have a native SMS opt-out field and requires a custom field or partner app for SMS compliance tracking.

Iterable

Campaign (metadata)

maps to

Odoo CRM

Opportunity or Activity

1:1
Fully supported

Iterable Campaign records contain metadata (name, channel, status, schedule). Campaign metadata migrates as Odoo Opportunity records with the campaign name as Opportunity name, or as Activity log entries if no Opportunity association is appropriate. Campaign metrics (sends, opens, clicks) do not have a native Odoo equivalent and are documented in a separate campaign audit spreadsheet for the admin.

Iterable

Template

maps to

Odoo CRM

Documentation only

lossy
Fully supported

Iterable Templates define email, SMS, and push message content with Handlebars personalization syntax. Odoo CRM does not have a message content template system; email templates are scoped to CRM mail templates and do not support the multi-channel dynamic content that Iterables templates provide. We export template metadata and content to a structured document during migration. The customer rebuilds templates in their chosen marketing execution tool (Odoo Email Marketing, a separate ESP, or the tool they adopt post-Iterable).

Iterable

Journey

maps to

Odoo CRM

Documentation only

lossy
Fully supported

Iterable Journeys define multi-step, multi-channel automation paths with branching logic, delays, and action triggers. Odoo CRM has Automated Tasks and Server Actions that cover basic trigger-response workflows but do not replicate Iterables Journey logic. We deliver a written Journey inventory during migration: each Journey documented with its trigger conditions, step sequence, channel actions, and recommended Odoo Automated Task equivalent. The admin rebuilds Journeys post-migration in Odoo or in a dedicated marketing automation tool.

Iterable

Catalog Item

maps to

Odoo CRM

Product (via Odoo Sales)

1:1
Fully supported

Iterable Catalog stores product data used for dynamic content insertion in messages. If the Odoo Sales app is active, we import Catalog schemas and items as Odoo Product records with relevant fields (name, SKU, price, description). If only Odoo CRM is in scope, Catalog items migrate as custom fields or a dedicated custom module. Note that Catalog-to-Journey associations do not migrate; these relationships are documented for the admin to reconfigure in Odoo.

Iterable

Engagement: Email

maps to

Odoo CRM

Activity log (note)

1:1
Fully supported

Iterable email engagement records (sends, opens, clicks, unsubscribes) migrate as Odoo Activity log entries attached to the corresponding Lead or Contact. Email content summary preserves in the Activity note body. Odoo CRM does not have a native engagement tracking layer; the activity log provides a historical record but does not update a live engagement dashboard. If ongoing email engagement tracking is required, a separate marketing integration is needed.

Iterable

Engagement: Call

maps to

Odoo CRM

Activity log (note)

1:1
Fully supported

Iterable call engagement records (call made, answered, duration, recording) migrate as Odoo Activity log entries. Duration and disposition data preserve in the Activity note. Call recordings do not migrate to Odoo natively; we document the original recording URL if the customer has an external storage policy.

Iterable

Engagement: Meeting

maps to

Odoo CRM

Activity log (note)

1:1
Fully supported

Iterable meeting engagements (name, date, attendee list) migrate as Odoo Activity log entries. Attendee associations map to additional Activity log entries or are documented in the Activity note body. Odoo CRM does not have a native meeting calendar sync without Odoo Calendar app; we flag this dependency during scoping.

Iterable

Owner

maps to

Odoo CRM

User

1:1
Fully supported

Iterable Owners map to Odoo Users. We resolve owners by email match against the destination Odoo User list. Any Iterabl Owner without a matching Odoo User goes to a reconciliation queue for the customer admin to provision before record import resumes.

Iterable

Data Sync Records

maps to

Odoo CRM

External stored records

lossy
Mapping required

Iterable Data Sync exports data to a warehouse and requires Customer Success coordination and IP allowlisting. If the customer uses Data Sync as a primary data source, we export the historical records to CSV or JSON and deliver them alongside the CRM migration. The customer is responsible for loading warehouse exports into their chosen analytics environment 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.

Iterable logo

Iterable gotchas

Medium

Iterable does not allow field deletion

High

Separate API endpoints for US and EU data centers

Medium

Soft limit of 8,000 unique fields per project

High

Enterprise pricing is opaque and contract-based

Low

Usage metrics lag by one calendar day

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

  • Iterable is a marketing platform, not a CRM

    Iterable organizes data around User Profiles, Journeys, Campaigns, and behavioral event streams. Odoo CRM organizes data around Leads, Contacts, Accounts, and Opportunities on a Kanban pipeline. There is no direct object-to-object equivalence for Journeys, Templates, or Campaigns. We migrate the contact layer and behavioral events, but Journey definitions, email templates, and campaign execution configurations do not migrate. We deliver written documentation for each Journey and Template so the admin can rebuild them post-migration.

  • Iterables field deletion limitation carries forward

    Iterable does not allow field deletion once a custom field is created. During migration scoping, we audit all active and deprecated fields in the Iterabl project. Deprecated fields marked as inactive in Iterabl are excluded from the migration export to avoid loading dead schema into Odoo. Active fields that are no longer needed are documented as candidates for deactivation in Odoo post-migration. If the Iterabl project is approaching the 8,000 field soft limit, we prioritize field cleanup before migration begins.

  • Iterables US vs EU data center scope must be confirmed

    Iterables API base URL differs by data center: api.iterable.com for USDC projects and api.eu.iterable.com for EDC projects. API keys are scoped to a single data center and are not interchangeable. We confirm the customers data center during scoping and use the correct base URL for all extraction operations. Mixing data centers results in authentication failures and cross-region data mismatches that would corrupt the Odoo import.

  • Odoo CRM does not send marketing messages natively

    Odoo CRM has integrated email marketing capabilities when the Email Marketing app is installed, but native SMS, push notifications, and in-app messaging require third-party apps. Teams relying on Iterables multi-channel sending infrastructure will need a separate marketing execution tool alongside Odoo CRM. We flag this gap during scoping and can scope a parallel migration to an ESP of the customers choosing if needed.

  • Usage metrics lag and validation timing

    Iterable usage and billing dashboards reflect data through yesterday, not the current day. For migrations that involve post-migration validation, we cannot confirm final contact counts and message volumes until at least 24 hours after migration cutover. We schedule validation reviews with this lag in mind and avoid drawing conclusions from same-day usage numbers. This does not affect record-level migration accuracy, only aggregate reconciliation timing.

Migration approach

Six steps for a successful Iterable to Odoo CRM data migration

  1. Discovery and data center confirmation

    We audit the Iterabl project across API key scope (USDC vs EDC), total User Profile count, active custom fields (including deprecated fields), List count and membership sizes, active Journeys, active Templates, Purchase event volume, and engagement history by type. We confirm the Iterabl data center and set the correct API base URL for extraction. The discovery output is a written migration scope including which objects migrate, which are documented for rebuild, and which are excluded with rationale.

  2. Schema audit and field mapping design

    We audit the full Iterabl custom field schema and map each field to an Odoo field type on crm.lead or res.partner. Deprecated Iterabl fields are flagged for exclusion. We design the Tag strategy for Iterabl Lists and the split rule for User Profile to Lead versus Contact mapping. If Odoo Sales app is active, we also design the Product mapping for Iterabl Catalog items. Schema design is validated in an Odoo staging environment before production migration begins.

  3. Staging migration and reconciliation

    We run a full migration into an Odoo staging environment using production-like data volume. The customer reconciles record counts (Leads in, Contacts in, Activities in, Products in), spot-checks 25-50 random records against the Iterabl source, and validates the Tag assignments and split rule correctness. Any mapping corrections happen in staging. The customer signs off the staging results before production migration begins.

  4. Owner and user reconciliation

    We extract every distinct Iterabl Owner referenced on User Profiles and map them by email to Odoo User records. Owners without a matching Odoo User go to a reconciliation queue. The customer provisions any missing Odoo Users (active or inactive based on whether the original Iterabl owner is still active in the organization). Migration cannot proceed past this step because Owner assignments are required on Odoo Lead and Contact records.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Odoo Users (validated), Leads and Contacts (with split rule applied and OwnerId resolved), Tags (assigned to the corresponding Lead or Contact), Activities (event history logged per type), Products (if Odoo Sales is active), Catalog items (mapped to Products), Purchase records (as Sale Orders or Activity logs), and Subscription status fields (opt-in and opt-out state per channel). Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze Iterabl 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 Journey inventory document, Template content export, and Campaign audit spreadsheet to the customers admin team. We support a one-week hypercare window where we resolve any reconciliation issues raised by the team. We do not rebuild Iterabl Journeys as Odoo Automated Tasks inside the migration scope; that work is handled by the admin using the provided documentation or a separate Odoo automation engagement.

Platform deep dives

Context on both ends of the pair

Iterable logo

Iterable

Source

Strengths

  • Cross-channel execution across email, SMS, push, and in-app from one unified platform interface.
  • Real-time AI decisioning using behavioral, contextual, and performance signals to optimize message delivery.
  • Enterprise-grade infrastructure with contracts supporting billions of messages and high deliverability standards.
  • Comprehensive API with documented endpoints for users, events, campaigns, and catalogs, plus an interactive API reference.
  • Helpful customer support with strong onboarding assistance cited across review sites.

Weaknesses

  • High total cost of ownership with opaque enterprise pricing starting at $20K+ annually.
  • Significant learning curve requiring extensive support and time investment to build competent workflows.
  • SMS deliverability reliability issues with account suspensions applied without clear explanation.
  • Cluttered UI requiring multiple navigation steps to complete common campaign management tasks.
  • Limited reporting consistency that complicates performance measurement and campaign optimization.
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 Iterable and Odoo CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between Iterable 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

    Iterable: Not publicly documented; returns RateLimitExceeded code on limit.

  • Data volume sensitivity

    A

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Migrations under 30,000 User Profiles with no custom event history and straightforward list-to-tag mapping land in three to five weeks. Migrations with large engagement histories (purchase events, subscription logs), multiple active Journeys requiring full documentation, Catalog items mapping to Odoo Products, and complex custom field schemas move to eight to fourteen weeks because of data cleansing, event-to-activity transformation, and Journey rebuild planning scope.

Adjacent paths

Related migrations to explore

Ready when you are

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