Skip to navigation

Odoo

Find callers among your Odoo contacts and add new callers as CRM leads.

Your receptionist can check whether a caller is already one of your Odoo contacts and add new callers to Odoo CRM as leads, with what they need, so your sales team can follow up. There are two ways to connect:

  • Webhook tools call Odoo’s JSON-2 API directly, with no Zapier account and no Zapier task usage. They need Odoo 19 or later, Community or Enterprise, hosted on odoo.com, on Odoo.sh, or on your own server.
  • Zapier works with older Odoo versions too, but each action uses tasks from your Zapier plan, and it can’t search a self-hosted database.

Use webhook tools if your database runs Odoo 19 or later. Odoo’s older API, JSON-RPC, takes each method’s arguments as one mixed list of values, which webhook tools can’t build, so on older versions use Zapier.

Odoo only allows outside apps to access your data on its Custom plan. If your database is hosted by Odoo on the One App Free or Standard plan, check your plan before you start.

1

Check your Odoo version

Your Odoo version is shown at the bottom of the Settings page. Webhook tools need version 19 or later. For a self-hosted database, the server must be reachable from the internet over HTTPS.

2

Create a user for Reception.ai

In Settings → Users & Companies → Users, create an internal user for Reception.ai. Give it Sales: User: All Documents access and no access to other apps, so the API key can only do what the tools need. User: All Documents lets it assign new leads to the salesperson you choose.

3

Create an API key

API keys for users who aren’t administrators last three months at most. To get a key that lasts a year:

  1. As an administrator, turn on developer mode, then go to Settings → Users & Companies → Groups.
  2. Create a group named, for example, Reception.ai API key, set API Keys maximum duration days to 365, and add the Reception.ai user to it.

Then sign in as the Reception.ai user, open Preferences → Account Security, and select New API Key. Name it, for example Reception.ai, choose the longest duration offered, and copy the key right away: Odoo only shows it once. Note the expiry date, and replace the key before then.

The API key can do anything the Reception.ai user can do. Keep it out of shared documents, and delete it in Odoo if it leaks.

4

Find the salesperson and sales team IDs

Open the salesperson’s user in Settings → Users & Companies → Users. The number at the end of the page address is the user ID. Do the same for the sales team in CRM → Configuration → Sales Teams.

5

Create the webhook tools

For each tool below, go to Integrations, select Add integration, and choose Webhook Tool. Replace YOUR_ODOO_ADDRESS with your database’s address, for example mycompany.odoo.com.

Every tool sends the same request headers:

  • Authorization (Secret): Bearer followed by your API key
  • X-Odoo-Database (Value): your database name. Only needed if your own server hosts more than one database.

Find the caller

FieldValue
Namefind_odoo_contact
Description”Find the caller among our contacts by their email address, or their full name if they have no email. Use it before adding a lead.”
MethodPOST
URLhttps://YOUR_ODOO_ADDRESS/json/2/res.partner/name_search
Request HeadersAuthorization (Secret): Bearer followed by your API key
X-Odoo-Database (Value): your database name, only if needed
Body Parametersname (string, required): “The caller’s email address, or their full name as they spell it.”
operator (string, fixed value): =ilike
limit (integer, fixed value): 5
Assign to agentsReceptionist

The =ilike operator matches the whole name or email address, ignoring capitals, so a search for “Jane” doesn’t list every Jane. Odoo returns only the ID and name of each match. Odoo’s contact search doesn’t cover phone numbers, so your receptionist must ask for an email address or name.

Add the caller as a lead

FieldValue
Namecreate_odoo_lead
Description”Add the caller to our CRM as a lead when they want a quote or a callback.”
MethodPOST
URLhttps://YOUR_ODOO_ADDRESS/json/2/crm.lead/create
Request HeadersAuthorization (Secret): Bearer followed by your API key
X-Odoo-Database (Value): your database name, only if needed
Body Parametersvals_list (object, required), with the fields below
Assign to agentsReceptionist

Odoo expects the new lead’s fields inside a vals_list object. Select Add field on vals_list for each of these:

  • name (string, required, from the conversation): “The lead’s title, for example: Kitchen quote - Jane Doe.”
  • contact_name (string, required, from the conversation): “The caller’s full name.”
  • email_from (string, from the conversation): “The caller’s email address, if they gave it.”
  • phone (string, required, from the conversation): “The caller’s phone number in international format, for example +14155550123.”
  • description (string, required, from the conversation): “What the caller needs, in a few sentences.”
  • user_id (integer, fixed value): the salesperson’s user ID
  • team_id (integer, fixed value): the sales team’s ID

The salesperson and team are fixed values, so every lead goes to them even if the AI sends other IDs. Leave out fields such as expected revenue, so your receptionist doesn’t guess at amounts.

Select Enable on each tool, then test your receptionist as an existing contact who gives their email address, then as a new caller who asks for a quote. The new lead appears in your Odoo CRM pipeline.

Option 2: Zapier

1

Connect Zapier

If you haven’t yet, connect Zapier in Reception.ai.

2

Add the Odoo actions

In your Zapier MCP server at mcp.zapier.com, add the actions below from the Odoo CRM app and sign in to Odoo when Zapier asks. For each field, either set a fixed value or let the AI fill it in, as listed.

The Odoo CRM app works with databases hosted on odoo.com. For a self-hosted database, see Limitations.

The actions can do anything the Odoo user you sign in as can do. Consider a dedicated user with access only to CRM and contacts.

3

Assign the tools

In Reception.ai, open the Zapier integration’s Tools tab, select Refresh tools, and assign each action to the Client (receptionist).

4

Test it

Test your receptionist as an existing contact who gives their email address, then as a new caller who asks for a quote. The new lead appears in your Odoo CRM pipeline.

Zapier actions

Find the caller

FieldValue
Zapier actionFind Contact
Set in ZapierNothing.
Let the AI fill inThe caller’s email address, or their full name if they have no email.
Assign toClient

Odoo’s Zapier app finds contacts by name or email address, not by phone number, so your receptionist must ask for one of them.

Add the caller as a lead

FieldValue
Zapier actionCreate Lead
Set in ZapierThe salesperson and sales team new leads go to, if your account shows those fields.
Let the AI fill inThe lead’s title (for example, “Kitchen quote - Jane Doe”), the contact’s name, email, and phone number, and a description of what the caller needs.
Assign toClient

Leave fields such as expected revenue empty, so your receptionist doesn’t guess at amounts.

Whichever option you use, add a procedure so your receptionist asks for the caller’s email address and searches for them before it creates a lead.

The search can return contacts who aren’t the caller, and Find Contact in Zapier returns whatever is saved on the contact. Add a rule telling your receptionist to never read a contact’s details back to the caller, and to use them only to recognize the caller.

Limitations

  • Your receptionist can’t look callers up by phone number. It needs their email address or exact name.
  • The lead’s description holds what the caller wanted. Zapier’s Odoo CRM app has no action to add a note or log a call.
  • With webhook tools, the API key expires. Replace it before its expiry date, or the tools stop working.
  • With Zapier, a self-hosted Odoo database needs Zapier’s Odoo ERP Self Hosted app instead. Its Create Lead/Opportunity action adds leads, but it has no search actions, so a returning caller can be added twice. Webhook tools can search a self-hosted database on Odoo 19 or later.
  • Your receptionist can’t check availability or book meetings in Odoo. Use Reception’s own booking with Google Calendar instead.
  • With Zapier, each action your receptionist runs uses tasks from your Zapier plan. Zapier currently counts two tasks per successful call; failed calls aren’t counted. When the plan runs out, the actions stop until it resets.

Troubleshooting

ProblemWhat to check
401 from OdooThe header must be Authorization with Bearer , a space, and the key. Check that the key hasn’t expired or been deleted.
404 from OdooCheck the address, and that the URL ends in /json/2/res.partner/name_search or /json/2/crm.lead/create. Your database must run Odoo 19 or later, and CRM must be installed.
Odoo returns an access errorThe Reception.ai user needs Sales: User: All Documents access.
Odoo can’t find the databaseAdd the X-Odoo-Database header with your database name.
An Odoo action doesn’t appear in Reception.aiSelect Refresh tools on the Zapier integration after adding actions in Zapier.
An action shows Changed and isn’t usedYou edited it in Zapier. Select Update in the Tools tab.
Zapier can’t connect to OdooCheck that your Odoo plan allows outside apps, and that you use the right app for where your database is hosted.
Known callers aren’t foundCheck the email address spelling with the caller. Name searches need the name as saved in Odoo, and a contact that belongs to a company is saved as the company name, a comma, and the person’s name.
Leads land with the wrong salesperson or teamSet the salesperson and sales team as fixed values, in the webhook tool or in Zapier.