CRM Integrations

Odoo CRM Setup

Overview

This guide walks you through connecting your Odoo instance to VeloPBX. Odoo uses an API key authentication model (no OAuth round-trip), so the setup is the simplest of the three CRM integrations.

Setup time: ~7 minutes. Tenant admin only.

By the end of this guide, every inbound and outbound call placed by extensions in your tenant will:

  • Match against contacts, leads, and companies in your Odoo database
  • Pop the matched record in PortSIP ONE before the call connects
  • Auto-log a complete activity entry (with recording and optional AI transcript) on the matched record

Prerequisites

Before you start, make sure you have:

  • A running Odoo instance (Community 17.0+ or Enterprise 17.0+/18.0+) accessible from the public internet
  • An Odoo administrator account (the email you use to sign into Odoo)
  • Tenant Admin Full Access privileges in VeloPBX
  • Your Odoo database name (visible in the Odoo URL bar or under Settings → General Settings → Activate the developer mode → Database information)

Step 1 — Generate an API key in Odoo

Sign into your Odoo instance as the administrator. The API key is generated per-user and is the credential VeloPBX will use to read contacts and write activities.

  1. Click your profile avatar in the top-right corner of any Odoo screen.
  2. Click My Profile (in newer Odoo versions: Preferences).
  3. Open the Account Security tab.
  4. Click New API Key.
  5. In the dialog:
  • Description: enter VeloPBX Integration (or similar — this is just a label so you can identify it later in your Odoo admin)
  • Validity: choose how long the key should be active. For production use, Permanent is recommended; for testing, 30 days is reasonable.
  1. Click Generate Key.

Odoo will show you the key once. Copy it immediately and keep it somewhere safe — Odoo will not display it again.

Important: Treat the API key as a password. If you suspect it has been compromised, revoke it from the same screen and generate a new one. VeloPBX can be reconfigured with the new key in under a minute.


Step 2 — Confirm your Odoo URL and database name

VeloPBX needs three Odoo connection values that you will paste in the next step:

ValueWhere to find itExample
Odoo URLThe base URL of your Odoo instance (no trailing slash)https://acme.odoo.com
Database nameVisible in the URL bar after sign-in, or in Settings → Activate developer mode → Databaseacme-prod
UsernameThe login email of the Odoo admin whose API key you generated[email protected]
API keyThe key you generated in Step 1(long random string)

Note: The database name is not the company name. On Odoo Online (*.odoo.com), the database name is usually the subdomain. On self-hosted Odoo, it’s whatever name was set when the database was created.


Step 3 — Open Integrations in VeloPBX

Sign into the VeloPBX Web Portal as a tenant administrator at:

https://pbx.fortis-tele.com:8887

In the left navigation, click Integrations, then CRM.


Step 4 — Select Odoo from the dropdown

In the Select a CRM solution dropdown, choose Odoo.

The Odoo configuration form appears.


Step 5 — Paste your Odoo connection details

Fill in the four required fields with the values from Step 2:

  • Base URLhttps://acme.odoo.com (your Odoo instance URL)
  • Databaseacme-prod (your database name)
  • Username[email protected] (your Odoo admin email)
  • API Key — the key from Step 1

Step 6 — Configure integration settings

Below the connection details you’ll see toggles that control how VeloPBX interacts with Odoo. Recommended defaults:

SettingDescriptionRecommended
Create new contacts from softphoneAllow agents to create new Odoo records from PortSIP ONEOn
New contacts created asCreate new records as Individual or LeadIndividual (sales-led teams: Lead)
Contact lookup orderOrder in which Odoo is searched: Individuals → Leads → CompaniesDefault order
Lookup conditionAlways query Odoo, or only When not found locally in PBX contactsAlways
Auto-log call activitiesWrite an Odoo activity for every completed callOn
Auto-log call recordingAttach recording link to the Odoo activityOn (if call recording is enabled)
Secure recording URLUse a signed/expiring URL for recording linksOn (recommended for compliance)

Step 7 — Save and test

  1. Click Save. VeloPBX validates the connection by making a test API call to Odoo.
  2. If the credentials are valid, the connection becomes active immediately. The status indicator turns green.
  3. To verify:
  • Place an outbound call from any extension in your tenant to a phone number that exists in your Odoo contacts.
  • The matched contact should pop in PortSIP ONE during the call.
  • After the call ends, open the contact in Odoo — you should see a fresh activity entry with the call duration, direction, and (if enabled) the recording link.

Settings reference

Once connected, the same settings can be edited any time on Integrations → CRM → Odoo. Changes take effect on the next call after Save — no PBX restart required.

FieldTypeDefault
base_urltext(your URL)
databasetext(your DB)
usernametext(admin email)
api_keypassword(your key)
enable_create_contactbooleantrue
contact_created_asIndividual LeadIndividual
contact_lookup_orderarray[Individuals, Leads, Companies]
contact_lookup_conditionAlways NotFoundLocallyAlways
enable_call_loggingbooleanfalse
enable_call_recording_loggingbooleanfalse
secure_call_recording_loggingbooleanfalse

Troubleshooting

“Connection failed: invalid credentials”

  • Confirm the Username is the exact Odoo login email (not a display name).
  • Confirm the API Key has not expired or been revoked. Re-generate from Odoo if needed.
  • Check that the Odoo user account is active and has access to the database.

“Connection failed: database not found”

  • The Database field is case-sensitive. Verify it matches Odoo exactly (under Settings → developer-mode → Database information).
  • On Odoo Online, the database name is typically your subdomain (e.g. acme if your Odoo URL is acme.odoo.com).

Calls aren’t matching contacts

  • Verify the phone numbers in Odoo are stored in E.164 format (e.g. +37491223344) or in a format that Odoo’s contact search recognizes.
  • Check the Contact lookup order — if your contacts are stored as Companies but the lookup order is set to Individuals first, you may want to reorder.

Activities aren’t being created

  • Confirm Auto-log call activities is toggled On.
  • Confirm the Odoo user (whose API key you used) has write permissions on the contact’s model.

Recording links don’t open

  • Confirm Auto-log call recording is enabled.
  • If using Secure recording URL, the link expires after the configured TTL — clicking an old link will fail. This is expected behavior.

FAQ

Do I need an Odoo Enterprise license? No — Odoo Community editions 17.0+ are supported. Enterprise features (like CRM module enhancements) work too if you have them.

Can multiple PBX tenants connect to the same Odoo database? Yes. Each tenant uses its own API key (typically tied to a different Odoo user). Activity logs are written by the user behind the API key, so you can separate which tenant logged which call.

What happens when the API key is rotated in Odoo? The integration breaks until you re-paste the new key in VeloPBX. Calls still flow normally — only CRM matching and logging stop. Re-saving the new key restores the integration immediately.

Are AI transcripts billed by VeloPBX? No — AI transcription uses your own Azure Speech / OpenAI / AWS Transcribe credentials (configured separately under Tenant → AI Transcription). VeloPBX does not mark up cloud AI costs. See the AI Transcription section.


Need help?

If you get stuck, talk to a routing engineer — we can set up a sandbox bind on your tenant within 24 hours and walk through your first integration call live.