Skip to main content
Connect your own Odoo instance with an instance URL, database name, username and API key, so you can push leads there as crm.lead records.
Where
IntegrationsIntegrationsApps & CRM
Your role needs
Read access to Apps & CRM read-integrations. Admin, Member and Viewer have it by default.
To create or change
create-integrations to add one, update-integrations to change one, on top of the permission above.
If you cannot find this in your sidebar, your workspace may have a custom menu configuration. Contact support and we will check it for you.

Before you begin

  • An Odoo instance with the CRM app installed, and a user who can create CRM leads there. We check both before saving the connection.
  • Your instance URL, database name, username or email, and a personal API key from Odoo. Odoo has no shared app credentials at all, so this connects the same way on every workspace, including partner-branded ones.

Steps

1

Open the Odoo connect dialog

Go to , choose Add integration, then choose Odoo from the list. The dialog opens on a one-line description, a panel explaining how to create an Odoo API key, and the connection form underneath that.
2

Create an API key in Odoo

The panel’s three steps point at Odoo’s own settings:
  1. In Odoo, click your avatar (top-right) and open Preferences.
  2. Go to the Account Security tab and click New API Key.
  3. Copy the generated key and paste it below with your login email.
The panel also links to Odoo’s own external API documentation.
3

Fill in your Odoo details and choose the record type

Paste your Odoo Instance URL (it needs to start with http:// or https://), Database Name (usually your .odoo.com subdomain), Username / Email, and the API Key you just copied. Under Create pushed leads as, choose Opportunity or Lead: an opportunity always shows in the Odoo pipeline, while a lead needs the optional Leads feature turned on in Odoo’s own CRM settings first.
4

Connect

Choose Connect. The button stays disabled until all four fields have something in them. We authenticate against your Odoo instance with what you entered, then check that the account can create CRM leads there, before anything is saved. If both checks pass, the dialog switches to a success screen.
Odoo API keys don’t expire, so there’s nothing to refresh or reauthorize later. A workspace only ever holds one Odoo connection: reconnecting with a different URL, database, username, key or record type replaces it rather than adding a second one. Auto-push settings already saved on the card survive that.

What happens next

The dialog shows Odoo Connected! Choose Done, and the Odoo card on shows a Connected chip. The dialog itself doesn’t name the account it connected to. The account name on the card is whatever we read back from Odoo: your Odoo company name if it has one, otherwise your user’s name there, or plain Odoo if neither came back. The username you connected with sits under it.
Connecting Odoo does not push any leads by itself. Nothing moves until you turn on Auto-push analyzed leads on the card, choose Push to CRM on a lead’s own page, or add a Send to CRM step to a workflow. See Auto-push analyzed leads and stage filters and Push a lead to your CRM manually. Only one CRM ever owns a lead. If HubSpot, Salesforce, Kommo or HeyReach already created a record for it, the automatic push and a workflow’s Send to CRM step both skip it, the workflow step reporting it as sent while creating nothing. A Slack or webhook connector does not count as an owner, so those still fire. A manual push from the lead’s page carries no such check either, so it is the one CRM route that still goes through and can create a second record elsewhere. Once a lead is pushed, it lands in Odoo as a crm.lead record, an opportunity or a lead depending on what you picked when you connected. Its title is built from the lead’s name and its company’s name, falling back to the lead’s email address if it has no name. The record also carries the contact name, company name, most recently added email and phone number, job title, and the company’s website (its first saved link, if none is marked as a website), leaving out whichever of those the lead does not have. The description is built from the lead’s LinkedIn URL, the lead’s own description, its company’s description and summary, and its company’s saved links, again whichever of those exist. Each message in the lead’s email thread, aside from warm-up traffic, is then logged as an internal note on the record’s chatter. Field mapping reference per CRM has the complete, field-by-field version.

Troubleshooting

The full message reads Could not connect to Odoo. Check the URL, database name, username and API key. The same message shows no matter what actually went wrong: an unreachable instance, a wrong database name, or credentials Odoo rejected all produce it. Requests to your instance also time out after 30 seconds, so a slow or unresponsive server ends up with the same message. Nothing was saved.
The full message reads This Odoo user cannot create CRM leads. Ensure the CRM app is installed and the user has access. Your credentials worked, but the Odoo user you connected with cannot create crm.lead records. Install the CRM app in Odoo if it isn’t there, or reconnect with a user who has access to it.
Connecting only makes Odoo available as a destination. It doesn’t push anything on its own, whatever the success screen’s own line about leads being pushed to your Odoo CRM suggests. Check whether Auto-push analyzed leads is on for this card, and see Auto-push analyzed leads and stage filters for every reason a push can be silently skipped.

Field mapping reference per CRM

What object each connector creates, which lead fields land where, and what happens to your email history.

Auto-push analyzed leads and stage filters

What triggers an automatic push, which stages it fires on, and every reason a lead is silently skipped.