ferrify
Menu

HubSpot to Odoo migration: what moves, what doesn't, in what order

Which HubSpot records land where in Odoo, which ones stay behind, and the order that keeps your team selling until the switch day.

Updated

If you run sales on HubSpot and want your CRM, quotes, invoices and stock in one system, Odoo is one place to get there. The move is mostly mechanical for core CRM records. The hard parts are the things HubSpot does around the records: workflows, custom properties and call history. This guide lists what moves where, what does not move, the order we work in and how to check the result.

It is written for the ops or finance lead who owns the project, not for the person who clicks through the import screens. If you are moving from Salesforce instead, the Salesforce to Odoo guide covers the same ground for Salesforce objects.

What moves where

The table below is the mapping Ferrify uses for HubSpot. Each Odoo record keeps the ID of its HubSpot source.

In HubSpot In Odoo
Companies Contacts, as companies
Contacts Contacts, linked to their company
Deals CRM opportunities
Leads CRM leads
Products Sales products
Notes Notes in the record's Chatter
Tasks Activities; done tasks as Chatter entries
Meetings Calendar events
Owners Odoo users

Three points about this table need a closer look.

Companies and contacts share one place. Odoo keeps both in Contacts. A company is a contact marked as a company, and people link to it. If HubSpot holds the same person twice, both copies arrive in Odoo, so deduplicate in HubSpot first or agree on a rule with us before the load.

Deals become opportunities with their stage. Your HubSpot pipeline and its stages are rebuilt as an Odoo CRM pipeline before deals load. The deal keeps its value, owner and close date. Stages with no match get mapped on the call. Our Odoo CRM module page lists what we set up around the pipeline.

Tasks split in two. An open task becomes an Odoo activity assigned to a person with a due date. A completed task becomes a log entry in Chatter, because Odoo activities exist only while they are open. History is kept, but it sits in a different place.

If you also want quotes and invoices in Odoo, the products you load here feed the Sales and Accounting modules.

What does not move

Be clear about this before you commit to a date. These items stay in HubSpot or need separate work.

  • Calls and call recordings. Neither the call log nor the audio moves into Odoo.
  • Workflows. HubSpot automations do not translate to Odoo. We list the ones your team relies on and rebuild them as Odoo automations or activity rules.
  • HubSpot-specific properties. Odoo has no field for a property it does not know. Each custom property you want to keep needs a custom field in Odoo. Odoo lists Studio, its tool for adding fields without code, under its Custom plan on odoo.com/pricing, as of October 2026.
  • Marketing and service content. Marketing emails, forms, sequences, tickets, reports and dashboards are not on our mapping list. Tell us on the call if you use one, and we say whether it has an Odoo equivalent.

The practical rule: records move, behaviour does not. Anything your team does automatically in HubSpot, you describe, and we rebuild.

Decide before the load

Four decisions save most of the rework. Make them in the first week.

  1. Which properties earn a custom field. Open your HubSpot property list and sort by how many records have a value. Keep the ones your team filters or reports on. Drop the rest.
  2. Which records to leave behind. Contacts with no activity in years and closed deals nobody reads can stay in a HubSpot export. A smaller load is faster to check.
  3. Who owns what. Every HubSpot owner needs an Odoo user, or records land without an owner. Each user also needs an Odoo licence, so the user list is a cost decision as well. The cost guide shows how licences add up.
  4. Where Odoo lives. Odoo Online or Odoo.sh changes what you can customise. The hosting guide covers the choice.

Order of operations

We run a migration in this order. The order matters because later records point to earlier ones.

  1. Call. You tell us which tools you use and how the team sells. We draft the module list and send a fixed price.
  2. Access. You give us read access to HubSpot. We only read. Nothing in HubSpot changes or disappears.
  3. Structure. We create the pipeline, stages, activity types, custom fields and users in Odoo.
  4. Companies, then contacts. Contacts need companies to link to.
  5. Products. Deals and quotes reference them.
  6. Leads and deals. They link to companies, contacts, owners and stages that now exist.
  7. Notes, tasks and meetings. They attach to the records they belong to, so they load last.
  8. Review. Your team checks a sample (see the checklist below). We fix what they find.
  9. Training and runbook. We train the team and write the runbook, the written guide to how your team works in Odoo.
  10. Switch day. The team moves to Odoo. We load what changed in HubSpot since the first load.

Because every record stores its HubSpot ID, we can repeat steps 4 to 7 as many times as needed. Each run updates records that exist and adds only the new ones.

Validation checklist

Run these checks on the Odoo side before switch day. Pick records your team knows well, so a wrong value is obvious.

  • Counts match. Companies, contacts, open deals and leads in Odoo equal the HubSpot counts, minus the records you chose to leave behind. Write both numbers down.
  • Ten deals, line by line. Open each one next to its HubSpot twin. Check stage, value, owner, close date, company and contact.
  • Open pipeline value. The total of open opportunities in Odoo equals the open deal total in HubSpot, per stage.
  • Five companies with long histories. Notes, completed tasks and meetings show in Chatter in the right order.
  • Open tasks. Each person sees their own activities with the right due dates.
  • Custom fields. The values you kept show on the right records and filter correctly.
  • Duplicates. Search for the ten largest customers by name. Each appears once.
  • Owners. No record is unassigned unless it was unassigned in HubSpot.
  • Email addresses and phone numbers. Check a sample of twenty for formatting.
  • Users can log in. Every user opens Odoo and sees their pipeline.

If one check fails, the cause is usually in the mapping, not in the data. Fix the rule and re-run. Do not edit records by hand in Odoo, because the next run overwrites them.

Timeline

A Ferrify project takes 2 to 12 weeks, depending on how fast we get answers from your side: decisions about fields, answers about process and the team's review.

What stretches a HubSpot migration:

  • A long list of custom properties that need decisions.
  • Workflows to rebuild.
  • Several modules in the same project, such as CRM plus Sales plus Accounting.
  • Slow answers to our questions. We ask you to answer within 2 working days.

What shortens it: a clean HubSpot, one person who can decide, and a module list limited to what you will use in the first month.

What it costs

Ferrify projects start at $3,000. Each extra module adds to the price, and we fix the price on the call. Odoo licences come on top and go directly to Odoo. The implementation cost guide breaks down both.

For the service itself, see Ferrify's migration page and implementation page. If you already moved to Odoo and the team works around it, the tune-up is the fix. And if you fit the profile, the pilot offers a free implementation for two companies.

Questions and answers

Can we keep using HubSpot while the migration runs?

Yes. The migration only reads from HubSpot. Your team keeps working there until the switch day, and the changes made since the first load are moved on that day.

Do call recordings move to Odoo?

No. Calls and their recordings do not move. If you need them, export the recordings from HubSpot and store them in a shared drive. Link them from the Odoo record if your team looks them up often.

What happens to our HubSpot workflows?

They do not move. We rebuild the ones you still need as Odoo automations or activity rules, after you tell us which of them your team depends on.

Will running the migration twice create duplicate records?

No. Each Odoo record stores the ID of its HubSpot source, so a second run updates existing records instead of adding new ones.

How long does a HubSpot to Odoo migration take?

Ferrify projects take 2 to 12 weeks, depending on how fast answers come from your side and how many modules you add to the CRM.

Do we need to pay for Odoo before the migration starts?

You need an Odoo database to load data into. Licences are paid to Odoo directly, and Ferrify's price is separate. The cost guide explains both.

Related guides

Tell us what you run today

30 minutes. You get a module list and a price for your project.

Book a call