Connect Odoo: pull orders and customers in, check inventory
Create an API Key in Odoo under My Profile → Account Security, fill in the instance URL, database, username and API Key in Integration, test, map, activate — sales orders and customers come in and inventory can be checked.
The Odoo connector pulls sales orders and customers from your Odoo ERP into this system, and can check inventory quantities held in Odoo. It reads from Odoo: it does not push inventory changes back to Odoo, does not pull invoices, and does not send fulfillment back to Odoo. One connection per Odoo instance and database.
Prerequisites#
- An Odoo instance you can sign in to, and the login of an Odoo user for the integration.
- For Odoo Online: external API access requires the Custom plan. On any other Odoo Online plan, no set of values will connect — check the plan before you start.
- You know your instance address (for example https://mycompany.odoo.com; self-hosted: your own server address) and your database name — on the Odoo sign-in page database selector, and for Odoo Online usually the subdomain.
- Permission in Odoo to open My Profile and create an API Key under the Account Security tab.
Get your credentials#
- Sign in to Odoo with the user for the integration, click the avatar at the top right, and open My Profile.
- Open the Account Security tab and click New API Key.
- Copy the API Key that Odoo creates. In this connection the API Key is used in place of the password when signing in, so there is no separate password to find — the key itself fills the password role.
- Note the other three values at the same time: the instance address, the database name from the database selector on the Odoo sign-in page (for Odoo Online usually the subdomain), and the login name of that same user.
Fill it into Integration#
- Open Integration → Connector Marketplace → Odoo → New connection.
- base_url — required, Odoo instance URL: your instance address, for example https://mycompany.odoo.com. For a self-hosted instance, fill in your own server address. It must start with http:// or https://.
- database — required, Database name: the database name shown in the database selector on the Odoo sign-in page, for example mycompany. For Odoo Online it is usually the subdomain of your instance address.
- username — required, Username (login): the login name of the Odoo user for the integration, for example admin. Use the login of the same user who created the API Key — the exact form of the login depends on your instance.
- api_key — required, API key: paste the API Key you copied from My Profile → Account Security → New API Key. It is a password-type field, it is used in place of the password, and it is stored as a secret.
Test the connection#
Click Test connection. The test runs two real steps. First it asks the instance for its version, without signing in, to confirm the address answers and to read the server version. Then it actually signs in with your database, username and api_key — the key in the password role — and only a successful sign-in counts as a pass. That means a correct address with a wrong key does not pass: the address proves the instance is reachable, the sign-in proves the credentials. If base_url is missing or does not start with http:// or https://, the test stops with MISSING_BASE_URL; if database, username or api_key is missing, it stops with MISSING_CREDENTIALS, because all three are needed for the real sign-in.
Mapping / pick a template#
Pick the Odoo standard mapping. It works with the standard Odoo models: sales orders come from sale.order, customers from res.partner, and inventory checks read product.product. After the test passes, run one pull and check a real order side by side — order number, customer, lines and quantities — and check one product quantity against what Odoo shows, before activating. If a field on your instance differs from the standard model, adjust that field in the mapping instead of renaming anything in Odoo.
Activate#
After activation, the connection pulls sales orders and customers from Odoo into this system on the schedule you set, and inventory checks read the current quantities from Odoo. Watch the first pulls in Runs / Logs and compare them with Odoo before leaving the connection unattended.
What this connection does not do: it does not push inventory changes back to Odoo, it does not pull invoices from Odoo, and it does not send fulfillment or shipping results back to Odoo. Keep handling those in Odoo itself, or through the other systems where the work actually happens.
FAQ#
The address opens fine, but the test fails with AUTH_FAILED
The instance is reachable — the version step answered — but the real sign-in was refused. That means database, username or api_key does not match: the three values must belong together, and the key must be the one from the same user as the username. A correct address on its own never passes this test.
Create a fresh API Key for the integration user (top-right avatar → My Profile → Account Security tab → New API Key), copy it exactly into the api_key field, then re-check database in the database selector on the Odoo sign-in page and username as that user login, and test again.
Test stops with MISSING_CREDENTIALS or MISSING_BASE_URL
One of the four fields is empty, or the address is not usable. MISSING_BASE_URL means base_url is missing or does not start with http:// or https://. MISSING_CREDENTIALS means database, username or api_key is missing — and the test cannot sign in for real without all three.
Fill in all four fields from the fill-in step: base_url with the full instance address including http:// or https://, database, username, and api_key pasted in full with nothing trimmed. Save, then test again.
Every value looks right, but Odoo Online still will not connect
Your Odoo Online plan does not include external API access. Only the Custom plan opens the external API on Odoo Online, so on another plan the instance answers in the browser while API calls from outside are not available — the values are not the problem.
Check the plan of the Odoo Online instance first. Move the instance to the Custom plan, then test the same connection again with the same four values — do not keep changing the values in the meantime.
Connected, but no sales orders are pulled in
The connection is working — the test signed in for real — but there is nothing new to pull: the Odoo database has no new sales orders in the pull range, or the orders there are not sales orders on sale.order.
Create or confirm one sales order in Odoo, check that it belongs to the same database the connection uses, then run a manual pull and confirm the order appears in the preview or in Runs / Logs.