Connect Odoo 19 or 20
Authorize the connection in Odoo, configure bots and prompts, monitor minutes and restrict permissions.
The BeAI Odoo module connects the whole Odoo database to one BeAI organisation without entering an API key or a technical URL. Connection, bots and credit are shared by every company; switching company does not require another connection.
Connect and prepare
In Odoo's BeAI settings, select Connect to BeAI, sign in and select an organisation you administer. Check the database and public Odoo address before approving. Returning to Odoo provisions a bot using the existing Odoo user who started the connection. No additional Odoo user or licence is created. An existing bot configured in the legacy integration can be adopted without creating a duplicate or revoking shared legacy keys.
Choose an existing available line or enter your SIP configuration on the bot form. Test configuration does not dial: it separately checks Odoo access, configured telephony, runtime status and call capacity. Connected does not mean ready to call. Bot quotas and model availability apply. No subscription, top-up or telephone number is purchased automatically.
Additional bots can be created from Odoo. Available models, voices and existing lines are listed by name. SIP passwords are write-only. Refresh before saving if someone changed the remote configuration: revision checks reject conflicts. Notifications and periodic synchronization complement manual refresh.
Configure more is restricted to Odoo BeAI managers and opens a short-lived session for that bot only, not the owner's personal account, API keys or other organisations.
Prompts, business actions and languages
Six editable, company-neutral starter templates cover overdue invoices, a single invoice, ticket resolution, missing ticket information, a requested quotation and contact-detail verification. Helpdesk and Sales templates are available only when those applications are installed. Load missing presets adds newly available templates without overwriting edits or reactivating archived ones. Templates do not enable automations or place calls. A blank Bot uses the shared default.
Select the bot in the prompt template, then use the template in Studio or an invoice follow-up level. Preview the actual contact, normalized number, bot, language and rendered prompt before queuing. Invoice follow-ups use the customer's follow-up contacts; tickets use their linked contact.
The language expression is {{ object.lang }} for contacts or the linked
partner's language for other documents. Empty values fall back to the called
contact and then the bot. Each call receives its own requested language,
including its greeting, without changing the global bot configuration.
A missing language preprompt does not block the call; actual fluency and voice
support depend on the selected model. Context is rebuilt just before submission;
already submitted campaigns are immutable.
The initiating user's database-bound connector key can read authorized business records and post notes within that user's existing permissions. It cannot use generic Odoo RPC, expand user groups or access another connected company's data. Ticket closure publishes a customer confirmation message before moving the ticket to its resolved stage, with retry protection. A payment promise never marks an invoice paid.
Odoo administrators may explicitly grant additional company-bound business models, selected readable fields and optional internal notes, then synchronize these permissions. Credential/configuration models, arbitrary updates, payments and deletion are not permitted. BeAI cannot grant itself permissions which the Odoo connector rejects.
Capacity and status
Included, consumed, reserved and available minutes are separate from prepaid cash. BeAI applies the billing period, overage and any telephone charges. Zero cash alone does not block a call covered by included minutes. The capacity check does not reserve funds; admission and atomic reservation take place at actual call start, so concurrent usage can change availability. Existing top-up policies are not changed by this integration.
Callbacks update Odoo immediately, with periodic reconciliation if a callback is lost. A missing callback does not prove that no call took place. The BeAI Odoo connections page lets you review, test, renew or revoke a connection. Revocation stops new submissions and advanced sessions, preserves history and does not claim to cancel an already active conversation.
Copied/restored databases require explicit reactivation: credentials are bound to the database identity and URL. Developer-mode administrators can choose DEV; its credentials and bots remain separate and queued calls are not transferred between environments.
API and authorization protocol
Business endpoints use /api/v1/odoo/connections,
/api/v1/bots/{id}/odoo-configuration and
/api/v1/bots/{id}/call-capacity; see OpenAPI for contracts. Integration keys
require X-Odoo-Instance and X-Odoo-Installation and cannot manage accounts.
POST /integrations/odoo/connect/start accepts instance_url,
installation_id, company_id, company_name, state and
code_challenge (PKCE S256), returning an authorization_url.
Explicit browser consent redirects to Odoo's fixed callback with a two-minute,
single-use code. Server-to-server
POST /integrations/odoo/connect/token exchanges code and
code_verifier for the connection credential, never sent to the browser.
These protocol transports are intentionally separate from bearer-authenticated
business operations. Refused, expired or interrupted requests can be restarted
from Odoo. Per-origin and network limits may require waiting before retrying.
Reading and managing connections
In Odoo connections, each company displays its instance, authorization or revocation, and connection expiry. Telephony and Odoo access status remain visible for each bot. Test access, telephony and capacity without calling retains this call-free check.
Add a bot remains subject to account quotas and permissions. Renew connection and Revoke connection require an explicit action; revocation asks for confirmation and does not cancel calls already started. Viewing the page or opening a menu does not start these operations.