CRM migration

Migrate from SalesNexus to Odoo CRM

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

SalesNexus logo

SalesNexus

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

81%

13 of 16

objects map 1:1 between SalesNexus and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Migrating from SalesNexus to Odoo CRM is a structural migration that also marks a shift from a bundled CRM-email-marketing platform to a modular open-source ERP where CRM is one of many apps. SalesNexus Contacts map to Odoo Partners, Companies map to Odoo Companies, and SalesNexus Pipelines with ordered Stages map to Odoo crm.lead stage definitions. SalesNexus does not expose drip automation logic over its public API, and Nexi AI features produce no exportable artifact; we deliver written inventories of active sequences and Nexi configurations for manual rebuild in Odoo. The Odoo CRM app is free in the Community edition but requires per-app subscription in Odoo Online and Odoo.sh, with the Studio app needed for custom field creation on lower tiers. We handle parent-record lookup resolution, contact deduplication by email, and user mapping by email during migration, and we preserve call transcription URLs and email archival records as Odoo attachments.

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

SalesNexus logo

SalesNexus

What's pushing teams away

  • The legacy version and the 2026 Nexi-powered version are distinct products requiring an explicit migration path, creating confusion and data duplication for long-time users.
  • Automation and enrichment limits on lower tiers are restrictive, pushing growing teams toward platforms like HubSpot or Salesforce with higher per-seat quotas.
  • The learning curve is steeper than expected; some actions lack intuitiveness and require consulting the training library, per multiple Capterra and G2 reviews.
  • Contact tier caps (1000 on free, 5000 on Starter) force mid-sized teams into paid upgrades or migration, with no transparent path to unlimited contacts.
  • Exporting drip automation sequences and Nexi AI configurations is not supported by the public API, requiring manual rebuilding in the destination system.

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

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

SalesNexus

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

SalesNexus Contact maps to Odoo res.partner with is_company=False. The SalesNexus contact email becomes the partner email field and serves as the deduplication key during import. Custom fields on the Contact object migrate as custom fields on res.partner, which requires the Odoo Studio app on Standard and above plans; Community users with technical access can add fields directly via Python model inheritance. We resolve the linked Company record to a partner_id lookup on the Contact record at import time.

SalesNexus

Company

maps to

Odoo CRM

res.partner

1:1
Fully supported

SalesNexus Company records map to Odoo res.partner with is_company=True. The Company name becomes the partner name, domain becomes the website field, and industry or category maps to a res.partner.category tag assignment. Company is imported before Contact so the company_id foreign key resolves correctly on each Contact row during batch import via Odoo's CSV or XML-RPC interface.

SalesNexus

Pipeline

maps to

Odoo CRM

crm.team

1:1
Fully supported

SalesNexus named Pipelines map to Odoo crm.team records. We extract the pipeline name and description and create an equivalent crm.team in Odoo with team_member assignments populated from the mapped SalesNexus user list. On Free and Starter plans, SalesNexus limits pipeline count to 3 and 10 respectively; Odoo imposes no equivalent limit.

SalesNexus

Pipeline Stage

maps to

Odoo CRM

crm.lead stage

lossy
Fully supported

SalesNexus Pipeline Stages are ordered integers with name and probability defaults that map to Odoo crm.lead stage_id with sequence order, probability percentage, and legend color (grey=new, blue=qualified, green=won, red=lost). We preserve the stage order and probability values. SalesNexus stage IDs are integer sequential values; Odoo uses many2one stage_id references that we resolve after creating the stage records. Closed-Lost and Closed-Won stage handling is preserved with Odoo's on_change probability auto-update rules adjusted accordingly.

SalesNexus

Task

maps to

Odoo CRM

project.task

1:1
Fully supported

SalesNexus Tasks map to Odoo project.task records attached to an Odoo Project created for the CRM context or to a dedicated Tasks project. Task fields (name, date_deadline, user_id, stage_id, priority, description) migrate directly. The SalesNexus task owner maps via email to an Odoo res.users record; unresolved owners are assigned to a default migration user and flagged for admin review. Completed status maps from SalesNexus kanban state to Odoo stage_id.

SalesNexus

Email Template

maps to

Odoo CRM

mail.template

1:1
Fully supported

SalesNexus email templates with merge fields and HTML content map to Odoo mail.template records in the CRM app. Merge field syntax differs: SalesNexus uses {{contact.first_name}} patterns while Odoo uses {{object.partner_id.name}} Jinja2-style substitution. We convert common patterns (first_name, last_name, email, company_name) during the template body transform and flag any unrecognized merge field tokens in a template audit report for manual review in Odoo Studio.

SalesNexus

User/Owner

maps to

Odoo CRM

res.users

1:1
Fully supported

SalesNexus Users referenced on Contacts, Companies, and Tasks map to Odoo res.users by email address match. We export the full user list from SalesNexus and cross-reference against the destination Odoo instance user table. Any SalesNexus owner without a matching Odoo user is placed in a reconciliation queue; the customer's Odoo admin provisions missing users before record import resumes to prevent orphaned owner_id references.

SalesNexus

Call Transcription

maps to

Odoo CRM

ir.attachment (linked to crm.lead)

1:1
Fully supported

SalesNexus stores call recordings and transcription text linked to Contact Activity records. We export the transcription text as plain text and a URL reference to the recording. Binary audio files are not downloadable via the SalesNexus API, so we create an Odoo ir.attachment record with the transcription text as the file content and the recording URL as an external URL field on the associated crm.lead activity. The activity record is created as a note or log note on the lead.

SalesNexus

Email Archival

maps to

Odoo CRM

mail.message (on crm.lead)

1:1
Mapping required

SalesNexus email archival records (subject, body as HTML, date, direction sent/received) migrate to Odoo mail.message records linked to the corresponding crm.lead via model= crm.lead and res_id pointing to the lead ID. HTML email bodies are converted to plain text or kept as HTML depending on the Odoo version rendering capability. Email thread continuity is preserved by grouping messages with the same thread_id or subject pattern.

SalesNexus

Custom Field (Contact/Company)

maps to

Odoo CRM

ir.model.fields (custom)

lossy
Fully supported

SalesNexus custom fields on Contacts and Companies identified by integer field IDs are exported via get-all-fields with field labels, types, and options. We create equivalent custom fields in Odoo via Settings > Technical > Database Structure > Models using the field type mapping (text to char, number to float or integer, dropdown to selection, checkbox to boolean). On Standard and above Odoo plans, the Studio app provides a UI for custom field creation; Community users require technical access or a developer to write the field definitions to the database.

SalesNexus

Drip Automation Sequence (enrollment audit)

maps to

Odoo CRM

crm.lead tag + note

1:1
Fully supported

SalesNexus drip automation workflow logic is not accessible via the public API. We export active contacts enrolled in each sequence with enrollment date, sequence name, and step number, then create Odoo crm.lead.tag records for each sequence name and assign the tag to the enrolled contacts. A note is appended to each contact documenting the sequence name and last enrollment date. The trigger logic, delay rules, and conditional branches must be manually rebuilt in Odoo using Automated Actions or Studio workflows; we deliver a sequence audit report listing all active automations with their enrollments for the customer's admin.

SalesNexus

Marketing Form

maps to

Odoo CRM

crm.lead (via website form submissions)

1:1
Fully supported

SalesNexus forms with field configurations and webhook/post URLs map to Odoo Website form definitions in the Website app. We export the form schema (field names, types, required flags) and recreate the form in Odoo Website > Contact Form. Form submission history migrates as crm.lead records created from the form, preserving submission date and field values. The iframe embed code is platform-specific and must be replaced with the Odoo Website form snippet in the customer's web properties.

SalesNexus

Dashboard and Report

maps to

Odoo CRM

ir.ui.view (custom report)

1:1
Fully supported

SalesNexus personalized boards and dashboards (up to 10 boards and 20 dashboards depending on plan) export as metadata describing the chart type, data source object, and filter configuration. Odoo uses a different reporting model (action reports, Excel exports, and BI dashboard apps). We deliver a written report inventory document mapping each SalesNexus report to an equivalent Odoo approach: either a native Excel export definition, a custom Odoo BI view, or a documented rebuild step in Odoo Studio.

SalesNexus

Nexi AI Suggestions (ephemeral)

maps to

Odoo CRM

None (documented loss)

1:1
Fully supported

Nexi AI features (AI Email Assistant suggestions, AI Meeting Notes outputs, Smart Recommendations) are stored ephemerally in SalesNexus's AI inference layer and are not exposed via the public API. We export any suggestions stored as contact notes or activity notes that are persistent, but the AI model state and live inference outputs cannot be migrated. We document which Nexi features are active in the source account in a gap analysis report so the customer understands what will be unavailable post-migration and can evaluate Odoo AI add-on apps as replacements.

SalesNexus

Nexi AI Configuration

maps to

Odoo CRM

None (manual rebuild)

lossy
Fully supported

SalesNexus Nexi AI settings (AI Email Assistant tone and template preferences, AI Meeting Notes configuration, Smart Recommendation thresholds) are account-level configurations not exposed via API. We export the list of active Nexi features and their high-level configuration state as a written document. Rebuilding these settings in Odoo requires selecting an equivalent Odoo AI app or a third-party AI integration; we do not configure these as part of the data migration scope.

SalesNexus

Opportunity/Deal

maps to

Odoo CRM

crm.lead

1:1
Fully supported

SalesNexus Deals within Pipelines map to Odoo crm.lead records with type=opportunity. The SalesNexus deal amount, close date, and probability map to Odoo planned_revenue, date_deadline, and probability fields. The SalesNexus pipeline and stage assignment maps to crm.lead.team_id and stage_id. We preserve the SalesNexus deal name as the Odoo lead name and any deal-level custom fields as custom fields on the crm.lead model. Lost deal reasons from SalesNexus custom fields map to Odoo's lost_reason field on the lead.

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.

SalesNexus logo

SalesNexus gotchas

High

Dual-platform account confusion blocks clean exports

High

Contact tier limits are enforced at migration time

Medium

Drip automation sequences are not exportable via API

Medium

API rate limits restrict export throughput on Free and Starter plans

Low

Nexi AI suggestions and automations produce no exportable artifact

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

  • SalesNexus dual-platform account detection

    SalesNexus now operates two distinct platforms: the current 2026 version (app.salesnex.us) and a Legacy version (salesnexus.com/login.html). Long-time customers sometimes hold active data in both systems simultaneously. We detect which platform each account instance uses during scoping and confirm with the customer whether data in the legacy system is in scope. Failing to identify the active platform before export results in exporting stale or incomplete data into Odoo CRM. This gotcha is specific to this migration pair because it arises from SalesNexus's platform divergence, not from any inherent Odoo limitation.

  • Contact tier limits enforced at export time

    The SalesNexus Free plan caps contacts at 1,000 and Starter at 5,000. When we export from a paying tier, the raw export may contain more contacts than the destination Odoo plan accommodates or the customer intends to import on day one. We validate the contact count against the target plan's storage expectations and flag any overflow contacts for deferred migration, plan upgrade, or manual cleanup before proceeding. Odoo Community has no per-plan record cap, but the export-side constraint remains a pair-specific risk.

  • Drip automation sequences are not exportable via API

    SalesNexus does not expose drip workflow definitions over its public API. We can export contacts currently enrolled in each sequence with enrollment dates and sequence names, then apply tags and notes in Odoo, but the trigger logic, delay rules, conditional branches, and action steps cannot be extracted. We provide a sequence audit report listing all active automations and their enrollments so the customer's admin can reconstruct them in Odoo Automated Actions or Studio. This limitation applies to all destinations but is documented here as a pair-specific gap.

  • Odoo custom fields require Studio app on paid tiers

    Odoo Studio (needed for UI-based custom field creation on the res.partner and crm.lead models) is a paid app on Standard and above Odoo Online plans at approximately $20 per user per month. Community edition users with direct database access can add fields via Python model inheritance without a paid app. We confirm the destination Odoo plan during scoping and either use the Studio UI or direct model writes accordingly. This affects the custom field migration workflow and timeline if Studio is not yet enabled.

  • API rate limits restrict export throughput on lower SalesNexus tiers

    The SalesNexus Free plan limits API calls to 50 per month and Starter to 500 (with no publicly documented ceiling table). We implement exponential backoff, request chunking, and pagination handling to stay within limits. For large datasets on Free or Starter plans, we advise upgrading to Enterprise before migration or using SalesNexus's manual CSV export for bulk record extraction before triggering an API-based migration. Odoo's XML-RPC import interface is not rate-limited in the same way, so the destination side does not impose equivalent constraints.

Migration approach

Six steps for a successful SalesNexus to Odoo CRM data migration

  1. Discovery and platform identification

    We audit the source SalesNexus account across all active users, pipelines, stages, contacts, companies, tasks, drip sequences, email templates, custom fields, and Nexi AI feature usage. We confirm whether the account uses the 2026 Nexi platform (app.salesnex.us), the legacy version (salesnexus.com), or both simultaneously. We validate contact and record counts against the current SalesNexus plan tier and identify any records approaching or exceeding tier limits. The discovery output is a written migration scope document covering record counts per object, active automation list, and a confirmed or pending Odoo plan recommendation.

  2. Odoo plan and schema design

    We confirm the destination Odoo plan (Community, Online Standard, or Online Enterprise) and verify whether Odoo Studio is available for custom field creation. We design the destination schema in Odoo: crm.team records for each SalesNexus pipeline, crm.lead stage definitions with probability and color mapping, custom fields on res.partner and crm.lead matching the SalesNexus field schema, and user provisioning by email. Schema is validated in an Odoo test database before production migration begins.

  3. Data extraction and cleansing

    We extract data from SalesNexus via paginated REST API calls using exponential backoff to respect plan-level rate limits. We deduplicate contacts by email address before import, merge duplicate company records, and standardize date formats and field types. We generate the sequence audit report documenting all active drip automations and their enrollment counts, and the Nexi AI gap analysis report documenting active AI features. Data cleansing corrects malformed email addresses, resolves orphaned company links, and flags records with missing required fields for Odoo import compatibility.

  4. Staging migration and reconciliation

    We run a full migration into the Odoo staging environment using production-equivalent data volume. The customer's admin reconciles record counts (Partners from Contacts and Companies, Leads from Deals, Tasks, email archives), spot-checks 25-50 random records against the SalesNexus source, and validates stage ordering and probability values. Any mapping corrections are made before production migration begins. We also confirm Odoo Studio is correctly configured for custom field display on form views.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Odoo crm.teams (from SalesNexus Pipelines), crm.lead stages (configured per pipeline), res.partner company records (from SalesNexus Companies with is_company=True), res.partner contact records (from SalesNexus Contacts with company_id resolved), crm.lead opportunity records (from SalesNexus Deals with team_id, stage_id, and user_id resolved), project.task records (from SalesNexus Tasks), mail.message records (from SalesNexus email archives), ir.attachment records (from call transcription texts), mail.template records (from email templates), and crm.lead tags (from drip automation enrollment audit). Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze SalesNexus 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 sequence audit report and Nexi AI gap analysis to the customer's admin team with recommendations for rebuilding drip automations as Odoo Automated Actions and evaluating Odoo AI add-on apps for Nexi feature replacement. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team. We do not rebuild SalesNexus drip automations as Odoo workflows inside the migration scope; that is a separate configuration engagement.

Platform deep dives

Context on both ends of the pair

SalesNexus logo

SalesNexus

Source

Strengths

  • Bundles CRM, email marketing, and automation in a single subscription without per-feature add-ons.
  • Weekly live training and responsive support are consistently praised on G2 and Capterra.
  • Contact enrichment, drip emails, and call transcription are included on all paid plans.
  • Unlimited email archival on all tiers preserves full customer communication history.
  • API access is available across all plans, though rate limits scale with the plan tier.

Weaknesses

  • The 2026 Nexi platform and legacy version are two distinct products, complicating in-platform upgrades.
  • Drip automation workflow logic is not exposed via API and must be rebuilt manually at the destination.
  • Contact tier caps on free and Starter plans create artificial ceilings that force upgrades or migration.
  • Nexi AI features produce outputs that cannot be exported, only referenced in notes.
  • No publicly documented bulk API; data export relies on paginated REST calls, which is slow for large datasets.
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. 1 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 SalesNexus and Odoo CRM.

  • Object compatibility

    B

    1 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

    SalesNexus: Not publicly documented in a rate-limit table; Free plan limits are 50 API calls/month, Starter increases to 500+.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your SalesNexus 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 15,000 Contacts, 3,000 Companies, a single pipeline, and no complex custom field schemas. Migrations with multiple pipelines, custom fields requiring Odoo Studio configuration, large engagement histories (over 200,000 email or activity records), or a dual-account (legacy and 2026 platform) scenario move to six to ten weeks because of data auditing across two platforms, stage probability remapping, Nexi AI audit documentation, and Odoo Studio custom field configuration on paid plans.

Adjacent paths

Related migrations to explore

Ready when you are

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