Skip to content
Integration · Odoo

If you use Odoo, your CRM talks to Odoo.

Account, product, order and invoice data stays in Odoo; your sales team sees the same data in the CRM. Because Odoo is open source and modular, the access question starts differently than it does with other ERPs, and that is where this page begins.

Rapitek CRM channels and integrations screen (Turkish interface): WhatsApp Bots, Email Accounts, Meta Pages, Instagram, CTI Adapters, Payment Providers cards
Channels and integrations screen: connection cards

Operations in Odoo, the pre-sales process in the CRM

At companies using Odoo, the product may have been customised either by an in-house developer or by an Odoo partner. This page describes the needs that companies who call us raise on the sales side, and how they work together with Odoo.

  • Everything before the order (the lead, the discovery, the quote revision, the reason for losing) builds up only if it is recorded.
  • The customer request arrives over WhatsApp, the quote goes out by email; both are outside the ERP and both get lost.
  • If the visit note is not entered on a phone in the field, it stays a note that never gets written up in the evening.
  • And there is the possibility nobody likes: two customer lists form in two places, and which one is correct becomes a matter of debate.

That last item is the real subject of this page. The job of an integration is not to produce a second list, but to set a rule for which system is the authority for which data.

How is the connection built?

There is no out-of-the-box module for Odoo on our side, and we will not claim there is. The connection is built as an integration project whose scope is determined in the discovery call, using the REST API, webhooks and import/export. Which interface will be used on the Odoo side, and with which permissions, we determine together during discovery.

Odoo differs from other ERPs in one way, and that makes our work easier: because the source code is open, what is possible on the other side is not guessed at, it is looked at. With a closed ERP, the answer to the access question is sought at the licence and version desk; with Odoo, we look at your own installation during the discovery call. This lets us determine the scope earlier and more precisely; but it is not the same thing as an out-of-the-box module. There is still a connection that has to be written.

Three tools are used on the Rapitek CRM side:

  • REST API: every record in the CRM, from lead to quote, from invoice to task, can be read and written through it; access is granted with permissions, without sharing passwords. The field structure can be read from outside, several operations can be sent in one request, and records can be transferred in bulk.
  • Outbound webhook: the external system is notified securely of CRM events; a notification that does not arrive is retried, and the target address is validated.
  • Import/export: a four-step wizard; we do the initial data migration ourselves during setup.

The limits of these three tools are measured, not estimated: the REST API gives the field structure of each record type, handles up to 200 records per bulk transfer request, and accepts up to 25 operations in a single request. The import wizard works on more than 75 objects, up to 100,000 rows per job and 25 MB per file. Our general approach is on the integrations page, and the same framework applied to a closed ERP is on the Netsis integration page.

A concrete scenario

Thursday, 15:10. The customer asks for a revision over WhatsApp, and the quote had been written in Odoo. Once the connection is in place, here is what changes:

  1. 1

    The request lands as a record, not as a message

    If your WhatsApp Business account is connected to the CRM, the message is written into the shared inbox and onto the relevant customer record. The revision request does not stay on one person's phone.

  2. 2

    The quote revision is tracked on the opportunity record

    Which revision number it is, what changed and who approved it stay in the CRM. The version that turns into an order is passed to Odoo through defined fields.

  3. 3

    The price stays the same as the list in the ERP

    Because the product catalogue and the price list are transferred from Odoo, the quote is written at the current price. The authority for the price stays in Odoo; the copy in the CRM is there for the sales screen.

  4. 4

    The authority for the customer record is set by a rule

    Which system the customer record is created in, and how it flows to the other, is written down during setup. The two lists do not drift apart, because one becomes the source and the other the mirror.

  5. 5

    The sales manager adds their own field themselves

    Adding custom objects and fields on the CRM side is done without writing code.

  6. 6

    A reporting screen, not a report request

    The pipeline, the source breakdown and the reasons for losing are prepared with the drag-and-drop dashboard designer. No appointment with the technical team is needed for a sales report.

Flows that can be built between Odoo and Rapitek CRM

Customer record matching and the authority rule

Which system is the authority for the customer record, and how it flows to the other, is defined in the written scope. Matching is set up on the tax number or on the identity key on the Odoo side.

Product catalogue and price list transfer

Product cards and the price list are transferred into the CRM; quotes are written at the current price. The transfer can be periodic, or it can be set up over the API.

Passing a won opportunity to Odoo

A webhook that passes the order data to the external system when an opportunity is won can be set up. Entering the same data by hand a second time is reduced.

Account balance and invoice visibility

Balance, due date and invoice header data are transferred onto the customer card. The authority for the document stays in Odoo; the CRM adds a visibility layer for the sales team.

Connecting messaging channels to records

Your own Meta WhatsApp Business account is connected to the CRM and the correspondence lands on the relevant record. You connect your own Gmail account by granting permission through Google; that connection covers email sending and calendar synchronisation; inbox reading is switched off. Outlook and Microsoft 365 connections are not live.

Adding fields and objects without writing code

The administrator defines the fields the sales side needs themselves.

Choosing a method

Which method, and when?

We choose the method together with your Odoo partner. All four use the same REST API surface; the difference is who moves the data, and how often.
MethodWhat it is forWhen it is preferred
REST APIThe external system reads and writes every record in the CRM; access is granted with permissions, the field structure is read from the API, and up to 25 operations can be sent in one requestWhen an external interface can be used on the Odoo side and the flow is meant to run automatically
Outbound webhookEvents in the CRM (e.g. opportunity won) are notified to the external system securely; a notification that does not arrive is retriedIn flows that need event notification in the CRM-to-Odoo direction
Import (Data Hub)Excel/CSV extracts are transferred with a four-step wizard: upload, map fields, preview, run. Export is done in the same moduleFor the initial data migration and one-off transitions; as a bridge until the API flow is in place
Your own developer or your Odoo partnerThe team that already knows the Odoo side can write the connection themselves using the same REST API; we give them the field structure, the access permissions and the field mapping tableIf customisation has accumulated in your Odoo and you will keep working with that team
What we can say

What we have verified

Read and write
Every CRM record through the open REST API
25 operations
Operations that can be sent in a single request
200 records
Records per bulk transfer request
every 6 hours
A database backup is taken; local copies kept 30 days, compression checked
Implementation

How is the Odoo connection put into service?

  1. 1

    Discovery

    We work out where you run Odoo, which modules you use and which customisations have been made. We recommend that the partner or developer who set up your Odoo joins this call.

  2. 2

    The authority rule and field mapping

    Which system is the authority for which data is decided here. This is the critical step in Odoo flows. The field mapping table, the direction of flow, the frequency and the cost, if any, are shared in writing.

  3. 3

    Configuration and test migration

    The objects, fields and permissions on the CRM side are set up; two-way verification is done with sample records. Duplicate record scenarios are tried out here.

  4. 4

    Training and go-live

    Training for the sales and field teams, then close follow-up during the first week. We do not commit to a duration before discovery; after the discovery call we give you a date, not a range. The duration of the API-based Odoo flow becomes clear according to the scope.

Scope and setup terms

Four questions come up whenever ERP integration is discussed. Here is how each one is handled:

  • Stock stays in Odoo. The authority for the stock record stays in Odoo; which stock data the CRM shows, and how often, is defined during discovery.
  • The order → invoice → collection chain is built into the product. It is not sold as an automated accounting flow.
  • Manufacturing and MRP: the bill of materials and the production line definition exist in the product. Work order execution is new; if your process depends on it, let's try it together in the demo.
  • e-Invoice and e-Archive documents stay with your current setup. Rapitek CRM is not a GİB private integrator; it does not produce official documents and does not track ETTN or GİB status. Your invoices continue to be issued under your current arrangement.

The reasons for the first three, and what can be done instead, are in one place, line by line: scope and setup terms.

Work on the Odoo side: if a module has to be installed or an interface has to be written on the Odoo side, that work sits with your developer or your Odoo partner, as do Odoo installation, upgrades and maintenance. We provide the CRM side, the field structure, the access permissions and the field mapping table.

Data location: your data is held in the European Union: the database in Helsinki (Finland), files in Frankfurt, backups in Falkenstein (Germany). We do not have a single component in Türkiye, and we do not have a region selection feature. This is a transfer abroad within the scope of KVKK art. 9. The details are on the security page and in the KVKK disclosure notice.

Certification: we do not have an ISO 27001 or SOC 2 certificate, and we will not claim one until we do.

If you see anything incorrect or out of date on this page, write to info@rapitek.com and we will review and correct it.

Plan prices are out in the open; scope comes out of discovery

The scope of the Odoo connection, and its cost if there is one, are worked out in the discovery call and shared in writing. Plan prices and separately priced items, on the other hand, we publish on a single page, with the figures.

Three plans, a scope table and separately priced items on a single page.

FAQ

Frequently asked questions about Odoo integration

Is CRM integration with Odoo possible?
Yes, but not with an out-of-the-box module; as an integration project with a defined scope. The connection is built with the REST API, webhooks and import/export. Which external interface will be used on the Odoo side, and with which permissions, is determined during discovery and shared as a written scope.
Is there a ready-made Odoo module in Rapitek CRM?
No. There is no out-of-the-box module specific to Odoo. What we do have is a documented interface: every record in the CRM can be read and written through the REST API, and you can read the field structure from outside; alongside it, permission-based access, webhooks and a four-step import wizard.
Odoo has its own CRM module. Why a separate CRM?
That is a legitimate question, and our answer is this: if Odoo's sales side does the job for you, do not change it. The need we hear at the companies who call us tends to be this: WhatsApp and email correspondence linked to the customer record, the field team entering records from the mobile app, and the setup delivered ready to use. What sets us apart is not a feature list: we do the setup, the data migration and the training in Turkish ourselves.
We run Odoo on our own server. Will access be a problem?
It does not have to be, because in an installation on your own server you define the permissions. What is decisive is this: can an access point with limited permissions be defined that lets the CRM and Odoo reach each other? We check that during discovery together with your IT lead. If it cannot be defined, the flow is built with periodic import/export.
We have a partner who has done customisation in Odoo. Can they write the connection?
Yes, this is a path we support. Your partner can write the connection themselves using Rapitek CRM's REST API; we give them the API documentation, the access permissions, the object definitions and the field mapping table. Who writes what, how the testing will be done and which field flows in which direction we set out separately, in writing, during discovery. We do not have a figure for how many Odoo installations have taken this path; since we have not measured it, we do not write a number either.
Does it matter which Odoo version we use?
It affects the scope, it does not change the answer. During discovery we work out your version, the modules you use and the customisations that have been made; what is decisive is whether an externally accessible interface can be defined. The Rapitek CRM side is the same in every case: every CRM record can be read and written through the REST API, with access granted by permissions rather than shared passwords.
Won't we end up with two customer lists in two systems?
This is a step that is expensive to skip in integrations, and it is where we start. During setup, an authority is determined for each data type: where the customer record is created, which field flows in which direction, and which one wins in a conflict. That rule sits in the written scope. In an integration built without the rule being written down, the two lists can drift apart over time; talking about it beforehand is the cheapest part of the job.
Does it replace Odoo?
No, and we do not recommend that it should. Odoo stays on the accounting, stock, order and official document side; Rapitek CRM takes the pre-sales process: the lead, the meeting history, quote revisions, messaging and sales reporting. The job of the integration is to connect these two sides with a defined flow.
Will our stock stay in sync with the CRM?
Real-time stock synchronisation is not part of the scope. The authority for the stock record stays in Odoo; the scope of the stock data to be carried over to the CRM side, its frequency and which fields it will include are defined during discovery. We wrote the reason, and what can be done instead, in the limits section of the integrations page.
Can we issue an e-invoice from the CRM?
No. Rapitek CRM does not issue e-Invoice or e-Archive documents and is not a GİB private integrator; fields such as ETTN or GİB status do not exist in the product. Your invoices continue to be issued under your current arrangement; the invoice number, date and amount can be carried onto the customer card as fields.
Will synchronisation be real-time?
It depends on the method. API- and webhook-based flows can run close to the event; import/export is periodic. Which flow runs at which frequency sits line by line in the written scope.
What does the Odoo integration cost?
We do not write a figure on this page, because the cost depends on the scope: which objects flow, in which direction and at what frequency, how deep the customisation goes, and who writes the connection. If your own partner writes the connection, the work item on our side gets smaller. After discovery we share the scope and the cost in writing.
How long does setup take?
We do not commit to a duration before discovery. After the discovery call we give you a date, not a range: the dates of the discovery, configuration, data migration, training and go-live steps sit in the written plan. An import/export-based start can be set up within that plan; the scope and the date of the API-based flow are clarified in the same plan.
Where is our data held?
In the European Union: the database in Helsinki (Finland), the files you upload in Frankfurt, the database backups in Falkenstein (Germany). We do not have a single component in Türkiye and we do not offer a region selection. This is a transfer abroad within the scope of KVKK art. 9; we establish its legal basis together during the contract process. Your CRM data is held in a separate database belonging to you.

Let's clarify your Odoo flow in 30 minutes

Invite the team that set up your Odoo to the call as well; let's decide together which system will be the authority for which data, and who will write the connection. Then we open your 7-day trial account; no credit card required.

Made with RapitekGO

We'd like to use optional measurement cookies; if you decline, the site works the same. Cookie policy