CRM migration

Migrate from Close to Odoo CRM

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

Close logo

Close

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

69%

9 of 13

objects map 1:1 between Close and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Close to Odoo CRM is a migration from a sales-first, communication-centric CRM into a unified ERP ecosystem where CRM is one module among many. Close uses three distinct record types — Leads, Contacts, and Opportunities — each with its own activity stream. Odoo CRM collapses the first two into a single Lead object that converts to a Contact and Opportunity at the point of sale qualification, with the conversion action creating the Contact and linking it to the Opportunity in one step. We map each Close record type against this design, preserve the full activity history through JSON export (CSV export drops activity data silently in Close), and configure Odoo pipeline stages with probability weights matching the source. Close Workflows — only available on Growth and Scale plans — do not migrate to Odoo server actions; we deliver a written inventory of every active Workflow with its trigger logic and recommended Odoo automated-activity equivalent. Teams moving to Odoo for its ERP breadth should note that inventory, accounting, and project modules expand the destination scope and require separate Odoo implementation work outside the CRM migration.

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

Close logo

Close

What's pushing teams away

  • The feature set is deliberately narrower than enterprise CRMs — advanced reporting, deep customisation, and workflow complexity lag behind Salesforce and HubSpot.
  • Mobile app navigation receives consistent complaints; users report missed call notifications and the need to reopen the app frequently to stay current.
  • Teams needing native Slack integration without a Zapier workaround find the gap frustrating, especially at the lower pricing tiers.
  • Some users report that Close lacks Serbian number support and has limited inbox management compared to dedicated helpdesk tools.

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

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

Close

Lead

maps to

Odoo CRM

Lead

1:1
Fully supported

Close Leads map directly to Odoo CRM crm.lead records. Standard fields — name, email, phone, company name, status, owner — migrate 1:1. Close lead status labels (e.g. Potential, Contacted) map to Odoo stage names that we configure to match the source labels. The Odoo lead ID is generated at insert and is used as a parent reference for activity logs. Note that Odoo has no separate Contact object until a Lead is converted; contacts remain as partner_id fields on the Lead until the convert action is taken.

Close

Contact

maps to

Odoo CRM

Contact (created on Lead convert)

1:many
Fully supported

Close Contacts attached to a Company map to Odoo CRM Contacts (res.partner records with customer_rank set). Because Odoo does not maintain separate Contact and Lead records simultaneously, we stage Contacts as Lead records with a flag (e.g., is_contact__c) and convert them at migration time or post-migration using Odoo's lead-convert action, which creates the linked Contact and Opportunity. This approach preserves the relationship between Contact and Company that Close maintains explicitly.

Close

Opportunity

maps to

Odoo CRM

Opportunity

1:1
Fully supported

Close Opportunities map to Odoo CRM Opportunities (crm.lead records with type='opportunity'). The Close opportunity value, expected close date, stage, and probability migrate to Odoo expected_revenue, date_deadline, stage_id, and probability fields. Each Close Pipeline becomes an Odoo CRM Pipeline (crm.team), and pipeline stages map to Odoo stage records with probability weights preserved from the source.

Close

Pipeline

maps to

Odoo CRM

Pipeline (crm.team)

1:1
Fully supported

Close Pipelines map to Odoo CRM Teams. We create the Odoo team record first, then map each pipeline stage as an Odoo stage within that team's pipeline. Stage names and display order are preserved. Close pipeline custom columns carrying Opportunity-level data migrate as Opportunity custom fields in Odoo.

Close

Pipeline Stage

maps to

Odoo CRM

Stage

lossy
Fully supported

Close pipeline stages map to Odoo CRM stage records. Each stage carries a name, sequence order, and probability percentage. We create these in Odoo during schema setup using the Odoo RPC API, setting the probability to match the Close stage probability value. Stage loss and won flags map from Close pipeline stage behaviour.

Close

Activities (Call, Email, SMS, Task)

maps to

Odoo CRM

Log activities on Lead/Opportunity

1:1
Fully supported

Close activity records (calls, emails, SMS, tasks) migrate as Odoo mail.message and mail.tracking.value records attached to the corresponding Odoo crm.lead. Odoo stores these as Log a Note or Log an Activity on the lead. We map the Close activity type to Odoo's mail.message subtype (comment, email, call, sms) and set create_date to the original Close timestamp to preserve timeline ordering. This requires JSON export from Close because CSV exports silently omit activity data.

Close

Custom Fields (Lead, Contact, Opportunity)

maps to

Odoo CRM

Custom fields (ir.model.fields)

lossy
Fully supported

Close Custom Fields on Lead, Contact, and Opportunity map to Odoo custom fields created via Odoo Studio or the res.config.settings API. We read the Close field definition (type, choices, required flag) via the Close API and create matching Odoo fields of equivalent type before importing any records. Picklist choices become selection fields or many2one relations depending on cardinality. Required flags are set on the Odoo field definition.

Close

Custom Activities

maps to

Odoo CRM

Custom activity subtype (mail.message subtype)

lossy
Mapping required

Close Custom Activities require a three-phase migration: first we create the Odoo mail.message subtype that represents the custom activity type, then we create any type-scoped custom fields in Odoo, then we import activity instances linked to the subtype. The parent type must exist before any custom field scoped to it, and both must exist before activity records can be inserted. We sequence this as a dependency chain during the schema phase.

Close

Custom Objects

maps to

Odoo CRM

Custom model (ir.model)

1:1
Mapping required

Close Custom Objects migrate to Odoo custom models created via the Odoo ORM. We pre-create the custom model with the matching API name (e.g., x_close_custom_object), add all custom fields with their types, create any many2one lookup relationships to standard Odoo models (crm.lead, res.partner), and then import the data. Custom object records are migrated last in the import sequence because they often reference Leads, Contacts, and Opportunities.

Close

Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Attachments on Close Leads and Contacts are downloaded via the Close API as binary files and uploaded to Odoo as ir.attachment records linked to the corresponding crm.lead or res.partner record. The original filename, MIME type, and file content are preserved. Any attachment metadata (description, tags) migrates as attachment description fields.

Close

Call Recording

maps to

Odoo CRM

ir.attachment (linked to call log)

1:1
Fully supported

Close call recordings are retrieved as audio files via the Close API and uploaded to Odoo as ir.attachment records attached to the matching call log (mail.message) on the crm.lead. The audio file format (typically MP3 or WAV) is preserved. Retention metadata from Close migrates to the attachment description.

Close

Smart Views

maps to

Odoo CRM

Filters and saved searches

1:1
Mapping required

Close Smart Views are named saved searches scoped to the Leads tab. We export the filter configuration (field conditions, operators, values) from the Close API and deliver it as a written inventory of saved search definitions for the customer's Odoo admin to recreate as Odoo Filters. Smart Views cannot be exported and re-imported into Odoo; manual recreation in the Odoo UI is required. The Contacts-tab-only limitation in Close means we validate all Smart Views via API before planning the export.

Close

User / Team Member

maps to

Odoo CRM

User (res.users)

1:1
Fully supported

Close Users map to Odoo res.users records. We resolve by email match. Any Close User without a matching Odoo User goes to a reconciliation queue for the customer's Odoo admin to provision before record import proceeds. Permissions, role-based access control, and team membership do not migrate; Odoo admin configures these post-migration in Settings > Users.

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.

Close logo

Close gotchas

High

CSV exports drop all activity history silently

Medium

Smart Views can only export from the Leads tab

Medium

Workflows gatekept behind Growth and Scale plans

Medium

Custom Activities require strict dependency ordering

Low

Rate limits enforced per endpoint group

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

  • CSV exports silently drop activity history

    Close's CSV export intentionally omits all activity data — calls, emails, SMS, and tasks are absent from the downloaded file regardless of how many records are exported. Any migration scoped from CSV exports will arrive in Odoo with no activity timeline on any record. We always request JSON export from Close for activity-bearing records. If a customer has only used CSV exports, we flag this during discovery and request a re-export via the Close API before migration scoping is finalised. Skipping this step results in a materially incomplete migration that is only discovered post-cutover when sales reps open records and find empty timelines.

  • Odoo Workflows are not Close Workflows

    Close automated Workflows — available on Growth and Scale plans — use a trigger-step-goal model tightly coupled to Close's event system. Odoo uses server actions and automated activities triggered by write events on models. These are not equivalent automation paradigms. We do not migrate Close Workflows as Odoo server actions. We deliver a written inventory of every active Close Workflow with its trigger, conditions, steps, and a recommended Odoo automated-activity equivalent. The customer's Odoo admin or an Odoo implementation partner rebuilds them post-migration. Workflows on the Essentials plan cannot be migrated because they do not exist.

  • Odoo version and starting-point data

    Odoo enforces a support window requiring customers to be on the latest three versions or face upgrade charges. The Odoo version the customer starts on determines the schema structure, available API endpoints, and whether Odoo Studio is included. We audit the target Odoo version during discovery and confirm it is supported before migration begins. If the customer is on an unsupported Odoo version, the Odoo implementation partner handles the version upgrade before we begin CRM data migration, as the schema differs between major Odoo releases.

  • No native VoIP in Odoo CRM by default

    Close's built-in Power Dialer and Predictive Dialer (Growth and Scale) have no Odoo CRM equivalent without additional configuration. Call logs migrate as activity records, but the VoIP infrastructure does not. Teams planning to keep a third-party VoIP system (Twilio, Asterisk, a VoIP provider with an Odoo connector) need to configure the integration separately. We document the call log schema in Odoo so that the VoIP partner knows where to route call records, but the VoIP setup itself is outside migration scope.

  • Lead-to-Contact conversion changes record identity

    In Close, Leads and Contacts are distinct record types that can coexist and share a Contact. In Odoo CRM, a Lead converts to a Contact and optionally an Opportunity via the Convert action, which creates a new res.partner record and links it to the opportunity. The original Odoo Lead record changes type and may retain a different internal ID after conversion. Our mapping accounts for this by staging Contact records as Lead records in Odoo and deferring the convert action to post-migration, preserving the relationship structure from Close without creating orphaned Contact records.

Migration approach

Six steps for a successful Close to Odoo CRM data migration

  1. Discovery and Odoo instance audit

    We audit the source Close account across plan tier (Solo, Essentials, Growth, Scale), active pipelines and stages, Custom Activity and Custom Object definitions, Custom Field schemas per object, engagement volume by activity type, active Workflows, and Smart View configurations. In parallel we audit the destination Odoo instance: version, installed apps (CRM, Project, Inventory), existing custom fields, existing pipeline configurations, and Odoo user count. We identify the Close plan tier to confirm whether Workflows are in scope. The discovery output is a written migration scope document with object counts, a field-level mapping draft, and an Odoo configuration checklist.

  2. Schema design and Odoo pipeline configuration

    We design the destination schema in Odoo before any records are touched. This includes creating custom fields via Odoo Studio or the XML-RPC API, defining pipeline stages with probability weights matching Close, creating CRM Teams for each Close Pipeline, and designing the Custom Activity subtypes and Custom Object models. Schema design is validated in an Odoo test database before production migration begins. Any Odoo Enterprise dependencies (Odoo Studio access, custom model limits on lower tiers) are flagged during scoping.

  3. Sandbox migration and reconciliation

    We run a full migration into an Odoo test environment using a representative data sample (at minimum 100 records per object). The customer's project lead reviews record counts, spot-checks field mappings against the source Close data, and validates that pipeline stages display correctly. Any mapping corrections — field type mismatches, missing picklist values, required field gaps — are resolved in this phase. Sandbox sign-off gates the production migration start date.

  4. User reconciliation and Odoo provisioning

    We extract every distinct Close User referenced on Leads, Contacts, Opportunities, and activity records and match by email against the Odoo destination's res.users table. Any Close User without a matching Odoo User goes to a reconciliation queue. The customer's Odoo admin provisions missing users and assigns appropriate access rights before record migration begins. Owner assignment on Leads and Opportunities cannot proceed without resolved user references.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Odoo custom models first (to receive lookups from standard objects), then CRM Teams and pipeline stages, then Leads (from Close Leads and staged Contacts), then Opportunities with resolved Lead and Contact references, then activity history (calls, emails, SMS, tasks via Odoo mail.message API), then Custom Activities, then attachments and call recordings, then Smart View inventory delivery. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC API with batch chunking and exponential backoff on rate-limit responses.

  6. Cutover, validation, and Workflow rebuild handoff

    We freeze Close writes during cutover, run a final delta migration of records modified during the migration window, then enable Odoo CRM as the system of record. We deliver the Close Smart View inventory (as written filter definitions for Odoo recreation) and the Workflow inventory (as a rebuild guide with Odoo automated-activity equivalents). We support a one-week post-cutover window to resolve data quality issues raised by the customer's team. We do not rebuild Close Workflows as Odoo server actions, configure VoIP integrations, or set up Odoo ERP modules beyond CRM within the migration scope; these are separate engagements.

Platform deep dives

Context on both ends of the pair

Close logo

Close

Source

Strengths

  • Unified inbox combining email, SMS, and call history in a single thread per Lead or Contact.
  • Built-in dialer stack — Power Dialer and Predictive Dialer — without requiring a third-party VoIP integration.
  • Per-seat pricing with no separate marketing-contact billing model, making cost predictable as teams grow.
  • Clean API with structured endpoints for Leads, Contacts, Opportunities, and Custom Activities using API-key authentication.
  • Strong G2 rating (4.7/5 from 2,030 reviews) with consistent praise for ease of use and onboarding speed.

Weaknesses

  • Mobile app is widely criticised for navigation friction, missed notifications, and the need to reopen to refresh call status.
  • Feature set is intentionally lean — advanced custom reporting, deep customisation, and complex workflow logic are more limited than Salesforce or HubSpot.
  • Native Slack integration is absent without a Zapier or API workaround, frustrating teams that rely on Slack for sales team communication.
  • Custom Objects and Custom Activities are powerful but add migration complexity due to their dependency ordering requirements.
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 Close 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

    Close: Per endpoint group with a lower limit on write operations; 429 response includes rate_reset value; limits enforced at the organisation level across all API keys.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Close 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 Leads and Contacts with a single pipeline and no Custom Activities or Custom Objects. Migrations with multiple pipelines, Custom Activity types, large engagement histories (over 200,000 activity records), or parallel Odoo ERP module scope (Project, Inventory) move to eight to twelve weeks because of schema sequencing, Odoo API time, and reconciliation review cycles. Odoo version upgrades preceding migration add additional time if the customer is on an unsupported Odoo version.

Adjacent paths

Related migrations to explore

Ready when you are

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