CRM migration

Migrate from Highrise to Odoo CRM

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

Highrise logo

Highrise

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between Highrise and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Highrise to Odoo CRM is a structural migration that remodels Highrise's flat contact and deal objects against Odoo's Lead-Contact-Account-Opportunity lifecycle. Highrise exports Deals, Cases, Notes, and Emails only as .txt files rather than CSV, so we parse the text output to extract field values (deal name, stage, value, linked contact, responsible user) and reconstruct them as Odoo CRM Lead or crm.lead records with pipeline stage assignments. Companies map to Odoo Account, and the flat People object must be split into Odoo Lead (unqualified prospects) and Contact (qualified relationships) based on deal association and tagging patterns discovered during scoping. Tags transfer as Odoo Tags or custom many-to-many fields, and activity history migrates as Note records linked via mail.message to the parent Lead or Contact. Highrise has no native automation engine, so we deliver a written inventory of any Zapier or Make integrations the customer used so they can rebuild them as Odoo Automated Actions or Studio Workflows post-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

Highrise logo

Highrise

What's pushing teams away

  • Highrise is perceived as stagnant or abandoned—reviews describe it as "dead" with minimal development, leaving customers stuck on an aging platform while competitors add features continuously.
  • The iOS app historically shipped without Deals functionality, forcing users to the web interface for deal management and exposing inconsistent feature parity across platforms.
  • Advanced CRM features common in competitors—robust reporting, automation engines, advanced pipeline customization—are absent or extremely limited in Highrise, pushing growth-stage teams to migrate.
  • Contact syncing with iPhone has been reported as unreliable, causing duplicated effort and frustration for mobile-first sales teams trying to stay current.
  • The platform lacks native integrations modern teams expect, and while Zapier fills some gaps, the workaround feels inadequate compared to natively integrated CRMs.

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

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

Highrise

People

maps to

Odoo CRM

Lead (crm.lead) or Contact (res.partner)

1:many
Fully supported

Highrise's flat People object must be split against Odoo's lifecycle model. People with active Deals attached, or tagged with qualification markers (e.g., customer, client, active), map to Odoo res.partner Contact records linked to an Account. All remaining People map to Odoo crm.lead records. We determine the split rule during scoping by analyzing deal association, tag patterns, and the customer's business definition of a qualified contact. The original Highrise contact name, email, phone, address, and social links migrate directly. Notes and email history attached to each People record migrate as mail.message records via Odoo's mail.thread interface on the target record.

Highrise

Company (Party)

maps to

Odoo CRM

Account (res.partner, company_type=company)

1:1
Fully supported

Highrise Companies (Parties with company_type=company) map directly to Odoo res.partner records with company_type=company. We resolve the party-contact association using Highrise's partymember relationship and create the Odoo Account before any linked Contact records insert, satisfying the contact_id foreign key. Company address, domain (for Website field), and any custom fields migrate as Odoo partner fields or custom fields via Odoo Studio.

Highrise

Deals

maps to

Odoo CRM

Opportunity (crm.lead with type=opportunity)

1:1
Mapping required

Highrise Deals migrate to Odoo crm.lead records with type=opportunity and the pipeline_stage mapped to Odoo's stage_id. The TXT export parsing extracts deal name, stage label, monetary value, responsible user, and linked party. Value transfers to Odoo's expected_revenue field. Odoo's crm.lead team_id maps from the Highrise deal owner. If the customer uses Odoo multiple pipelines (crm.team), the deal's pipeline determines the team assignment. Closed-Lost and Closed-Won status from Highrise map to Odoo's probability=0 and probability=100 with stage_id set to the corresponding Lost/Won stage.

Highrise

Cases

maps to

Odoo CRM

Project Task (project.task)

1:many
Mapping required

Highrise Cases map to Odoo project.task records. Cases linked to a Highrise Deal can optionally migrate as task records within a project created from the Deal, preserving the deal-task hierarchy. Cases without a deal link migrate as standalone tasks in a generic Support project. Case status (open, resolved, archived) maps to Odoo task stage_id. We parse the TXT Case export to extract title, description, status, and linked party, and migrate any embedded task assignments to Odoo user_ids on the task.

Highrise

Tasks

maps to

Odoo CRM

Calendar Event (calendar.event) or Task (project.task)

1:1
Fully supported

Highrise Tasks with a due date, assignee, and linked party migrate to Odoo calendar.event records (for time-bound meetings or calls) or project.task records (for to-do items). Completed status maps to Odoo stage_id completion. Tasks without a linked party migrate to a generic internal project. We preserve the original due date as Odoo's date_deadline and assignee as user_ids by resolving the Highrise owner email against Odoo res.users.

Highrise

Notes and Emails (Recordings)

maps to

Odoo CRM

mail.message on crm.lead or res.partner

1:1
Mapping required

Highrise Recordings (notes and emails) link to People or Companies. We migrate them as Odoo mail.message records attached via mail.thread to the target crm.lead or res.partner record. HTML formatting is stripped from emails during TXT parsing, so plain-text body migrates as mail.message body. Author (Highrise user) resolves to Odoo res.users by email match. The original recording date becomes mail.message date. Attachments (if any exist in Highrise's 5-100 GB storage cap) migrate as ir.attachment records linked to the same mail.message.

Highrise

Tags

maps to

Odoo CRM

mail.message.tag or res.partner.category

lossy
Fully supported

Highrise's flat tag system (applied to People, Companies, Deals, and Cases) maps to Odoo's res.partner.category (for contact tags), crm.tag (for lead/opportunity tags), or mail.message.tag (for activity-level tags). We detect all unique tag values during scoping and create the corresponding Odoo tag records before migration. The many-to-many relationship is preserved via Odoo's standard tag_ids fields on res.partner and crm.lead. Customers choose tag strategy during scoping based on whether they prefer a flat tag namespace or scoped per object type.

Highrise

Custom Fields

maps to

Odoo CRM

Custom Fields via Odoo Studio

1:1
Mapping required

Highrise custom fields on People, Companies, and Deals export via the custom_field_subjects API endpoints. We detect all custom field definitions (name, type, applicable object) during scoping, then provision matching custom fields in Odoo via Odoo Studio before migration. Field types map to Odoo field types (char, selection, relational, date, float). For custom fields on Deals that hold structured values like dropdown selections, we create Odoo selection fields with the same option set.

Highrise

Users (Owners)

maps to

Odoo CRM

User (res.users)

1:1
Fully supported

Highrise Users export with name and email. We resolve each Highrise owner by email against the Odoo res.users table in the destination instance. Any Highrise Owner without a matching Odoo User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Owner-based Deal assignments (Highrise responsible_user) map to Odoo user_id on crm.lead.

Highrise

Pipeline Stages

maps to

Odoo CRM

crm.stage within crm.team

lossy
Mapping required

Highrise's deal pipeline stages (typically New, Contacted, Qualified, Won, Lost) map to Odoo crm.stage records within the destination crm.team pipeline. We extract the full stage configuration during scoping and create Odoo stages with matching names, probability percentages, and sequence order. Stage probability maps to Odoo's stage_id probability field. The pipeline kanban layout is configurable in Odoo Studio post-migration.

Highrise

Text Messages

maps to

Odoo CRM

mail.message (subtype comment)

1:1
Mapping required

Highrise SMS conversations linked to contacts retrieve via the contact recording history API. We capture message text and timestamp and insert as Odoo mail.message records on the target res.partner, with subtype comment to distinguish from email. Odoo's SMS gateway integration is outside migration scope; the messages appear as a plain activity log in the partner's chatter.

Highrise

Products (if applicable)

maps to

Odoo CRM

product.product

1:1
Fully supported

If the customer uses Highrise Products linked to Deals (product name and price associated with a deal line item), we migrate product.product records into Odoo with name, list_price, and standard_cost. Price Book entries are not applicable in Odoo's base CRM; product pricing is set directly on the product record and referenced in crm.lead.quote_ids if the customer enables Odoo Sale Quotation workflow.

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.

Highrise logo

Highrise gotchas

High

API rate limits are endpoint-specific and aggressive

High

Deals, Cases, Notes, and Emails export as plain text only

Medium

No workflow or automation engine to migrate

Medium

Atom feeds are the best source for recording history

Low

Free and Solo tiers have hard contact and storage caps

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

  • Deals and Cases export as plain-text only

    Highrise's built-in export outputs Deals, Cases, Notes, and Emails as .txt files rather than structured CSV or JSON. We parse the TXT output to extract field values (deal name, stage, value, responsible user, linked party), but HTML formatting is stripped from emails, inline image references are lost, and there is no structured column mapping. We flag any Deals or Cases with complex nested data for manual review before the final migration step and warn customers that rich email content arrives as plain text in Odoo CRM. This is a source-platform limitation, not a destination limitation, and it applies regardless of which CRM you migrate to.

  • People-to-Lead-Contact split requires a business rule

    Highrise's single People object has no built-in qualification status, so there is no automatic answer for which People become Odoo Leads (unqualified prospects in a pipeline) versus Contacts (qualified relationships attached to Accounts). We derive the split rule during scoping by analyzing deal association, tag patterns, and deal-stage history. People with active Deals in later stages (Qualified, Won) become Odoo Contacts under an Account; all others become Leads. If the customer has an explicit definition of a qualified contact, we encode that rule. Migrations that skip this step end up with orphaned Leads or flat Contacts with no Account linkage.

  • Odoo Community has no native email marketing or sequences

    Odoo Community ships with the base CRM module but not email marketing, marketing automation, or sales engagement sequences. If the customer used Highrise's bulk email capability and is moving to Odoo Community, those features require the Odoo Email Marketing app (Enterprise or Odoo.sh add-on) or a third-party tool. We document the customer's current email usage during scoping and flag whether Odoo Community covers the need or whether Odoo Enterprise or an external tool (Mailchimp, HubSpot Marketing) is required. This is a destination-edition constraint, not a migration failure.

  • Odoo field and view customizations can conflict with data load

    Odoo instances with existing custom fields, Studio modifications, or inherited views can have field-level constraints (required fields, selection whitelists, computed fields) that block record insertion during data load. We audit the destination Odoo schema before migration, temporarily disable Odoo Studio field requirements and computed field triggers during the bulk insert window, then re-enable them post-migration. We also check for existing crm.lead records that might create duplicate detection conflicts. This step is scoped and priced separately if the destination Odoo has significant existing customization.

  • Highrise has no automation engine to migrate

    Highrise has no native automation, workflow, or sequence engine. Any business logic the customer built exists in Zapier, Make, or email filtering rules outside Highrise. We do not attempt to migrate Zapier Zaps because they require OAuth re-authentication and cannot be exported as transferable configuration. We deliver a written inventory of every external automation trigger and action the customer identifies during discovery, including which Odoo Automated Actions or Studio Workflow Triggers are appropriate replacements for each Zap. Rebuilding automations in Odoo is outside migration scope and is a separate engagement for the customer's admin or an Odoo implementation partner.

Migration approach

Six steps for a successful Highrise to Odoo CRM data migration

  1. Discovery and data audit

    We audit the source Highrise account across tier (Free/Solo/Starter/Professional/Enterprise), total People count, Company count, Deal volume and stage distribution, Case count, Tasks (open and completed), Notes and Email history volume, Tags inventory, custom field definitions via custom_field_subjects API, and any Zapier or Make integrations the customer has configured. We extract a representative sample of TXT Deal and Case exports to validate parsing quality. We also assess the destination Odoo instance: edition (Community, Online, or Odoo.sh), installed apps, existing custom fields, and Odoo user roster. The discovery output is a written migration scope with record counts per object, a proposed People-to-Lead-Contact split rule, and a mapping matrix for all fields.

  2. TXT export parsing and field extraction

    Highrise's Deals, Cases, Notes, and Emails export only as .txt files. We build a custom parser for the customer's specific TXT format that extracts structured field values: deal name, stage label, value, owner email, linked party name, case title, status, description. We run the parser against a full export and generate a structured CSV for each object type. Any records with ambiguous or missing values are flagged for customer review before migration. This step is the most time-sensitive because TXT parsing quality directly determines Deal and Case field completeness in Odoo.

  3. Odoo schema provisioning

    We provision the destination Odoo schema before any data loads. This includes creating custom fields on res.partner (Contact) and crm.lead via Odoo Studio or direct model inheritance, configuring crm.team pipelines with stage definitions mapped from Highrise pipeline stages, setting tag categories (res.partner.category, crm.tag), and enabling the mail module if not already active for mail.message insertion. Odoo schema changes deploy via the Odoo interface or XML-RPC API. If the destination is Odoo.sh or Odoo Online, we use the XML-RPC web service to create fields and configure pipelines programmatically.

  4. Owner reconciliation and User provisioning

    We extract every distinct Highrise owner referenced on People, Company, Deal, Case, and Task records and match by email against the Odoo res.users table. Any Highrise owner without a matching Odoo user goes to a reconciliation queue. The customer's Odoo admin provisions missing users (active or inactive) before record import resumes. OwnerId resolution is required before Deal and Case migration because Odoo crm.lead.user_id is a required field for pipeline assignment. This step gates the start of production migration.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Odoo Users (validated), Accounts (from Highrise Companies), Contacts (with contact_id resolved to Account), Leads (with the People-to-Lead split applied), Opportunities (with team_id, stage_id, user_id, and expected_revenue resolved), Cases (as project.task), Tasks (as calendar.event or project.task), activity history (mail.message via Odoo mail.thread API), and Tags (res.partner.category and crm.tag creation before record insert). Each phase emits a row-count reconciliation report. TXT-parsed Deals and Cases are inserted last, after all structured data is validated, to ensure the linked party lookups are satisfied.

  6. Cutover, validation, and automation handoff

    We freeze Highrise writes during cutover, run a final delta migration of any records added during the migration window, then enable Odoo CRM as the system of record. We deliver a written automation inventory documenting every Zapier or Make trigger and action the customer used in Highrise, with recommended Odoo Automated Actions or Studio Workflow equivalents. We validate record counts, spot-check 25-50 random records against the Highrise source, and confirm that Deal and Case text content populated correctly. We support a one-week post-migration window for reconciliation issues. We do not rebuild Zapier Zaps or Odoo Workflows inside the migration scope; that is a separate engagement.

Platform deep dives

Context on both ends of the pair

Highrise logo

Highrise

Source

Strengths

  • Flat-rate pricing model makes cost predictable for teams adding users without per-seat billing surprises.
  • Minimalist interface is easy to learn and deploy in days rather than weeks, especially for small teams without a dedicated admin.
  • Core contact and deal tracking is solid and reliable, covering the fundamental CRM needs without feature bloat.
  • Native account-to-account transfer tool exists within Highrise for moving data between two Highrise accounts.
  • Zapier integration extends the platform to thousands of other tools without requiring custom API work.

Weaknesses

  • The product is widely described as stagnant with minimal ongoing development, leaving users on an aging platform.
  • No automation or workflow engine means teams must rebuild processes manually or rely entirely on Zapier.
  • Feature parity between the web app and mobile app is inconsistent, with the iOS app historically missing deal management.
  • Advanced reporting, forecasting, and pipeline analytics are absent or extremely limited.
  • The API lacks a true bulk write endpoint, making high-volume migrations slower and more complex.
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 Highrise 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

    Highrise: 150 req/5s general; 2 req/10s for email search; 10 req/10s for recordings.xml. Returns 503 with Retry-After header on exceeded limits..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Migrations under 15,000 People, 3,000 Deals, and 2,000 Cases with no custom Odoo modules land between three and five weeks. Migrations with large engagement histories, complex TXT parsing requirements, or multi-team pipeline configurations move to seven to twelve weeks because of TXT parsing validation, Odoo schema provisioning, and bulk mail.message insertion. Discovery and scoping run one to two weeks before migration begins. Odoo Community instances without existing customization can be provisioned faster than Odoo.sh or Odoo Online instances requiring API-based schema changes.

Adjacent paths

Related migrations to explore

Ready when you are

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