Skip to main content
AK Ankush Kaura

ERP vs CRM: Where the Line Falls and How Odoo Joins Them

ERP vs CRM explained for a small business: what each system records, where they meet, and how Odoo 19 links a won deal to an order.

Published on 26 Oct 2026 · 5 min read

Animated portrait of Ankush Kaura

Short answer: a CRM keeps track of people and deals: who enquired, what was promised, what happens next. An ERP keeps track of the work that follows once a deal is agreed: stock, purchasing, invoices and the books. In Odoo both live in one database and share one contact record, so for a small business the question is rarely “which system” and more often “which apps, and in what order”.

Applies to

  • Odoo version: 19. I also compared the CRM pages in the 20.0 documentation and found the same text, so nothing below changes on a 20.0 site as far as the docs show.
  • Edition: the crm and sale_crm modules are in the open-source odoo/odoo 19.0 repository, so the CRM and Sales link is not Enterprise-only. Other apps you may add later (Accounting, for example) differ by edition, so check the edition comparison on odoo.com before you plan around them.
  • Apps: CRM, Sales, Contacts. Inventory and Accounting come into the worked example only as the next step.

What question does each system answer?

A CRM answers “who might buy, and where are we with them?” Its records are leads, opportunities, activities and contacts. Its reports are about conversion, forecasts and lost deals.

An ERP answers “can we deliver this, and did we get paid?” Its records are products, stock moves, purchase orders, vendor bills, customer invoices and journal entries.

Neither is the more serious system. They fail in different places. A business with a bad CRM loses enquiries quietly. A business with a bad ERP ships the wrong thing, or ships it and forgets to invoice.

Where do the two meet in Odoo?

At the contact. The opportunity form in CRM and the quotation form in Sales both point at the same res.partner record, so the customer you chase and the customer you invoice are the same row.

Reading the 19.0 source, the link between a deal and an order is one field. The sale_crm module adds opportunity_id to sale.order, and order_ids on the lead going the other way. The opportunity then shows counts for quotations and orders and a sum of confirmed orders.

There is one small behaviour worth knowing about. When a linked order is confirmed, the code compares the opportunity’s Expected Revenue with the order’s untaxed total. If the expected revenue is lower, and the currencies match, it is raised to the order total and a note is logged. It is a nudge, not a full sync, so I would not treat that field as an accounting figure.

What changes if the CRM is a separate product?

The join becomes your job. Three things need a decision before anyone writes code:

  1. Which system owns the customer? Pick one. Two-way editing of names and addresses is where duplicates start.
  2. What is the shared key? Store the other system’s ID in a field you control, and look it up before you create anything. That makes a retried call harmless.
  3. What triggers the handover? Usually a deal moving to won. Decide whether that creates a quotation or a confirmed order on the ERP side.

Odoo 19 documents a JSON-2 endpoint at /json/2/<model>/<method>, authenticated with an API key. The page also says external API access is only available on Custom Odoo pricing plans, which matters if your plan was chosen before integration came up.

When it fits and when it doesn’t

One suite fits when the same few people quote, deliver and invoice, and you want one contact list. It saves you from writing and maintaining the join.

It fits less well when sales already runs happily in a tool the team likes and only the back office is the problem. Then I would start with the operations apps and integrate the CRM later, rather than force a migration nobody asked for.

Worked example: a small joinery workshop

A workshop that builds made-to-measure shelving gets enquiries by email and phone. Today they sit in inboxes and a shared spreadsheet, and orders are written on job sheets.

In Odoo, the first step is CRM alone: every enquiry becomes an opportunity, with a salesperson and a next activity. Once that habit holds, install Sales. Now New Quotation on the opportunity creates a draft order that already carries the customer, campaign and source. Confirming it later feeds Inventory and invoicing, which the workshop can switch on one at a time.

The order of work follows where the pain is, not the app list.

Common mistakes

  • Buying the whole suite and turning everything on in week one. Each app adds fields people must fill in.
  • Treating Expected Revenue as booked revenue.
  • Keeping a second customer spreadsheet “just in case”. It will drift.
  • Integrating two products before deciding which one owns the contact.

Pipeline stages and the day-to-day habits come next once the CRM question is settled. There is a longer plain-language comparison on sajjalbajaj.in, if you want a non-technical read to share with a colleague.

Official references

How this article was checked: I read the 19.0 documentation pages listed above, compared them with the 20.0 versions, and read the crm and sale_crm models in the 19.0 source. I did not run a live database for this post.

If you are deciding which side to start with, you can get in touch through my site and we can talk it through.

Frequently asked questions

What is the difference between ERP and CRM?

A CRM records people and deals: leads, contacts, the pipeline and follow-ups. An ERP records what the business does once a deal is agreed: stock, purchasing, invoicing and accounting.

Do I have to install both in Odoo?

No. The CRM app can be installed on its own. If you also install Sales, the sale_crm module adds a New Quotation button on the opportunity and links the order back to it.

How do I connect a separate CRM to Odoo?

Through Odoo's external API. Odoo 19 adds a JSON-2 endpoint at /json/2, and the documentation says external API access is only available on Custom Odoo pricing plans.