---
title: 'Odoo integration'
summary: 'Pushes PBX SIP credentials into the Odoo VoIP module so Odoo can place calls through the PBX.'
section: features
tags:
  - telephony
  - integrations
  - odoo
updated: '2026-09-09'
---

> The Odoo integration pushes your PBX SIP connection settings into Odoo's VoIP module so users can place and receive calls from inside Odoo.

## Overview

The Odoo integration is one of the integration types you configure under [Integrations](integrations.md). It connects your PBX to an Odoo ERP instance and provisions the Odoo VoIP module with the SIP settings your users need to call through the PBX.

> [!NOTE]
> "Odoo" now means two unrelated things in Cockpit, and this page covers only the first.
> This one is a **PBX-level** integration: it reaches the Odoo instance belonging to the
> customer who owns the PBX, and all it does is push SIP credentials into Odoo's VoIP
> module. The other is **Odoo CRM**, a **partner-level** feature in the partner portal that
> reaches a distributor's own Odoo to read and write invoices, e-signatures, products and
> subscriptions. Different Odoo instance, different permissions, nothing shared. If you are
> looking for invoices or signatures, you want the partner portal, not this page.

## What it does

Once configured and activated, the integration provisions Odoo's VoIP module with the SIP connection details for your PBX users. The sync is **one-way**, from the PBX into Odoo, and it **overwrites** the matching SIP configurations already in Odoo. Treat the PBX as the single source of truth: any SIP settings you change manually inside Odoo are replaced on the next sync.

You provide four connection credentials so the PBX can reach your Odoo instance:

- **ServerUrl** - the address of your Odoo instance, for example `https://mycompany.odoo.com`.
- **DbName** - the Odoo database to write to.
- **Login** - the Odoo username used for API access.
- **ApiKey** - an API key generated in Odoo under your user settings. Use a key, not your account password.

A single switch controls the behavior:

- **Sync SIP connection configurations to Odoo for active users** - when turned on, the Odoo VoIP module is installed or updated and the SIP connection settings are pushed to Odoo for the users you have activated for Odoo, not for every PBX user. The label shows how many users that currently is. When off, no SIP push happens.

Two fields are generated for you and shown read-only. You cannot edit them, but you can copy them if Odoo asks for the values:

- **Odoo voip websocket** - the WebSocket URL the Odoo VoIP module uses to reach the PBX. It is derived automatically from your PBX instance name.
- **Odoo pbx dns** - the PBX server address, derived from your server configuration. This field appears only when a server is attached to the PBX.

The push does not run the instant you save. The integration moves through a status lifecycle - pending, processing, then success or failed - shown as a colored status pill in the integrations list. An external process picks up active integrations still waiting to be installed, applies the configuration, and reports the outcome back to the PBX. Saving a change resets the integration to pending so it is processed again.

> [!NOTE]
> The integration must be active before any sync runs. Deactivating it stops further pushes but does not remove what was already written into Odoo, and it does not delete your stored credentials. The API key is never shown in plain text again after saving.

## Activating employees for Odoo

Once the integration is active and connected, an **Activate Odoo for users** button appears at the top of the form, alongside a count of how many users are currently active out of how many are eligible. It opens a dialog listing every enabled user of your PBX who has an extension, with a switch to expose them to Odoo and an optional email field. When filled, that email is used instead of the person's own address for anything Odoo does with them; leaving it empty keeps their Cockpit email. Turning a switch off deactivates that person without discarding a typed email, so turning it back on later restores it.

The dialog has its own search box for each of Name, Extension, Main email and Override email, and every column can be sorted ascending or descending. On a large PBX the roster is paged rather than loaded all at once, so search and sort run on the server as you type or page through - not in the browser. Saving only sends the rows you actually changed: edits you make on one page are kept in memory and included in the save even after you have moved to another page or typed a new search, but a row you never touched is never rewritten, so paging through the list cannot accidentally deactivate anyone.

The same two controls also appear on each employee's own edit page, under an **Odoo** tab that shows only while the integration is active and connected — useful when you are already editing that person and do not need the full roster.

Activation and the SIP push are two separate decisions. Activating someone controls **who** Odoo is told about. The **Sync SIP connection configurations to Odoo for active users** switch above controls **whether their SIP credentials go with them**, and it is off by default. With it off, activated employees are still sent to Odoo — with their name, extension and email — but no SIP credentials are shared, so Odoo can identify them without being able to place calls as them. Turn the switch on when you want Odoo's VoIP module to actually dial through the PBX.

## See also

- [Integrations](integrations.md) - the integration entity and its full field reference.
- [Users](users.md) - whose SIP settings are pushed to Odoo.
