Axivox User guide
Back to the site

Odoo

The connection to your Odoo: the contact's name shown at the ring, a call record in Odoo, the transcription and analysis on the contact.

At a glance

WhereIntegrations, Odoo
What it doesidentifies the caller in your Odoo, logs calls, publishes the transcription and recording on the contact
EditionsEnterprise and Community. Tested on Odoo 17, 18 and 19
To preparethe instance URL, the database's technical name, an Odoo login, an API key
Several instancesyes, as many as you want. Only one is the default instance
Direction of the connectionwe're the ones calling your Odoo, using its web address and API key

How it works

You register an Odoo account and its API key. From there, the connection does three separate things, which you enable individually: it looks up the contact matching the number, it writes a call record in Odoo, and it publishes the transcription and recording on the contact.

The call log is written to the voip.call model, the one used by Odoo's Phone app. This app only exists in the Enterprise edition. In Community, it's the Axivox module that provides the log, under its own model but with the same field names, so nothing changes in your habits the day you move to Enterprise. The probe described below tells you which of the two your instance uses.

Probing the instance

The Test connection button doesn't just check your credentials. It queries your instance and shows you what it can actually do, rather than guessing from its version number. A version number is a clue, never a proof: two instances of the same series don't necessarily accept the same fields, and an Enterprise instance may well not have the app installed.

The probe shows:

A green tag means "Pushed to Odoo's call log." An orange tag means "Not available here: pushed to the contact's feed." The screen explains it below the tags: "Orange fields don't exist on this version of Odoo. They continue to be written to the contact's message feed." Nothing is therefore lost: the information just changes location.

The ten fields probed are phone_number, direction, state, start_date, end_date, partner_id, user_id, summary, transcript and transcription_status. Five more, which we add and Odoo doesn't have, only appear where they exist: did, talk_duration_s, sentiment, escalation and themes.

When a call log isn't possible

Two cases, two different answers.

If the Phone app exists but isn't installed, the screen shows: "Odoo's Phone app isn't installed on this instance. Without it, no call log is possible." It's installed from your Odoo's Apps menu, with this warning, shown as is: "On Odoo Online, installing an app can change your subscription. This installation is yours to make, we won't do it for you."

If the instance is on Community, the app doesn't exist and nothing you do in Odoo will install it. The screen then shows: "This instance is on Community: Odoo's Phone app doesn't exist there. The Axivox module will provide the call log." And it offers the steps to follow, in three stages, with the download button for your series:

  1. "Download the module for your Odoo version."
  2. "Drop the folder into your Odoo server's modules directory, then restart Odoo. A module that adds code is only picked up on startup."
  3. "In Odoo, from the Apps menu, update the app list, look for Axivox and install it. Then come back here and test the connection."

What to enter

An Odoo instance record, with its address and enrichment options
An Odoo instance record, with its address and enrichment options

The Connection block:

FieldWhat's expectedWhere to find it
Namea name for this instance, useful if you register severalup to you. The screen suggests "E.g.: Odoo Production"
Instance URL"Full address, e.g. https://mycompany.odoo.com"your Odoo's address bar
Loginthe Odoo account we'll write underyour Odoo
API key"Generated in Odoo: Preferences → Account Security → API Keys."to generate in Odoo, never the account's password
Database"Technical name of the database (often different from the subdomain). Visible via /web/database/list."the List databases button, or the address shown alongside

The List databases button queries the server from the URL entered, before any authentication. Three possible answers: a list to choose from, "No database returned by the server (listing may be disabled)," or "Unable to list databases (server unreachable or listing disabled). Enter the name manually." In the last two cases, the name is typed by hand: listing is often turned off on a production instance, it isn't a fault.

When editing, the API key field shows "•••••••• (leave blank to keep the current one)." Left blank, it doesn't touch the key already saved.

The Features block contains six toggles, in this order. The text in the right-hand column is what the screen shows below each one.

ToggleWhat it does
Instance active"Disable to suspend all synchronisation with this instance."
Identify callers"Look up the contact for all inbound calls, including those that don't go through a dial plan. The name found is kept, so subsequent calls from the same number are instant. The lookup has half a second before the call carries on: on the first call from an unknown number, the name may therefore be missing and only appear from the next call onward."
Show contact name"Replace the name shown with that of the identified contact, on the called extension as well as in the history." This toggle depends on the previous one and stays greyed out while it's off
Log calls"Create a call record (voip.call) in Odoo for every call."
Publish transcription and analysis"The call's text and its analysis are published on the contact's message feed. With no identified contact in Odoo, nothing is published."
Attach audio recording"The audio file is attached to that same message, on the contact. It only shows if the transcription is published too." This toggle depends on the previous one and stays greyed out while it's off

The instance list, meanwhile, shows the Name, the URL, the Status (Active or Inactive) and a Default instance column, which is a radio button: only one instance at a time. The Remove default instance link, below the table, cancels this choice.

Steps to follow

  1. In Odoo, generate an API key: Preferences, Account Security, API Keys.
  2. Open Integrations, Odoo, then Add an instance.
  3. Name the instance, enter its full URL and the account login, then paste the API key.
  4. Click List databases and choose yours. If listing is disabled, type the database's technical name.
  5. Click Test connection. Read the probe that appears: the edition, the series, the call log and the colour of the tags.
  6. If the probe reports that no call log is possible, fix that in your Odoo first, then test again.
  7. Enable the toggles you need, starting with Instance active.
  8. Save.
  9. Back on the list, check Default instance on the one your dial plans should query by default.
  10. Call one of your numbers from a phone whose number exists in Odoo, and check the name shown.

If it doesn't work

"Connection failed" after the test. Four values can be at fault, in this order of frequency: the database name, which isn't the subdomain; the API key, which must be a key and not a password; the login; the URL, which must be complete, protocol included. Fix one value at a time and retest: the test is free and immediate.

Some tags are orange after the test. Nothing is lost. "Orange fields don't exist on this version of Odoo. They continue to be written to the contact's message feed." You'll find them on the contact's record, in their message feed, instead of the call record.

The contact's name doesn't show on the first call from an unknown number. That's the behaviour stated under the Identify callers toggle: the lookup has half a second before the call carries on. Past that delay, the call goes through without waiting, so as never to delay a ring. The name found is then kept: from the second call from the same number, it shows immediately.

Nothing is published on the contact. Three conditions must all be met. There must be an identified contact in Odoo: "With no identified contact in Odoo, nothing is published." Publish transcription and analysis must be enabled. And for the audio, the transcription must also be published: "It only shows if the transcription is published too."

No call record appears in Odoo. Test the connection and read the probe's Call log line. If it's empty, the instance doesn't yet have a model to receive the log: follow the steps the screen shows, the Phone app ones on Enterprise, the Axivox module ones on Community.

What the Odoo integration brings to everyday work

See the Odoo page