TheVoĉoTheVoĉo

Odoo Integration

Connect Cloud-PBX with Odoo open-source ERP and CRM for complete business management with integrated telephony across sales, support, and operations.

Overview

Odoo is an open-source ERP and CRM platform with modular business applications. The Cloud-PBX integration brings telephony features to Odoo's sales, CRM, helpdesk, and other modules.

Key Features:

  • Screen pop with partner, lead, and opportunity information
  • Automatic call logging to chatter (activity timeline)
  • Click-to-call from any Odoo record
  • Call recording links in timeline
  • Integration with Odoo VoIP module
  • Custom module support
  • Multi-company and multi-database support

Benefits:

  • Unified business communications
  • Complete ERP + telephony integration
  • Open-source customization flexibility
  • Cost-effective enterprise solution
  • Self-hosted or cloud deployment options

Features

Screen Pop

Incoming calls automatically display Odoo records:

Search Priority:

  1. Partners (Contacts/Companies): Customer or supplier records
  2. Leads: CRM leads and opportunities
  3. Helpdesk Tickets: Open support cases
  4. Sales Orders: Active orders
  5. Projects/Tasks: Project management records (if module installed)

Information Displayed:

Incoming Call: +32 2 123 45 67

Partner Found: "Agrolait" (Customer)

Screen Pop Shows:
  - Partner: Agrolait SPRL
  - Type: Customer
  - Contact: Michel Fletcher (Sales Manager)
  - Outstanding Invoices: €15,420
  - Open Opportunities: 2 (€45,000 total)
  - Recent Orders: SO00125 (€8,500) - Delivered
  - Open Tickets: #HELP-0042 (Priority: High)
  - Last Contact: 5 days ago (phone call)
  - Tags: VIP Customer, Enterprise

Automatic Call Logging to Chatter

Odoo Chatter Integration: Every call logged as activity in Odoo's chatter timeline:

Logged Details:

  • Call type icon (inbound ↓, outbound ↑)
  • Date and time with timezone
  • Duration (talk time)
  • From/To phone numbers
  • Outcome (answered, missed, voicemail)
  • Recording playback link
  • Notes and description
  • Associated user

Chatter Entry Example:

📞 Logged a call
Michel Fletcher made a call lasting 8 minutes and 45 seconds
From: +1 555 123 4567 → To: +32 2 123 45 67
Outcome: Connected
Recording: [Play] (8m 45s)

Discussion about Q4 order requirements. Customer interested 
in volume discount for 500+ units. Needs formal quote by Friday.
Action: Prepare quote with 15% volume discount.

Associated Records:
  - Partner: Agrolait SPRL
  - Opportunity: Q4 Bulk Order
  - Quotation: Draft (to be sent)

Chatter Benefits:

  • Visible across all related records
  • Followers automatically notified
  • Searchable in global search
  • Integrated with email threads
  • Activity timeline unified

Click-to-Call Integration

Call from Any Odoo Screen:

ModuleClick-to-Call Location
CRMLead and opportunity forms
ContactsPartner (contact/company) phone fields
SalesSales orders and quotations
HelpdeskSupport ticket customer info
ProjectTask assignee and customer
InvoicingCustomer invoices and payments
HREmployee records (internal calls)
WebsiteLive chat visitor info

Call Flow:

  1. Hover over phone number in Odoo
  2. Phone icon appears (or click phone field)
  3. Click to dial
  4. Cloud-PBX initiates call on your device
  5. Call in progress (Odoo shows status)
  6. End call → Auto-logged to chatter

Odoo VoIP Module Integration

Native Odoo VoIP Module: Odoo has built-in VoIP module. Cloud-PBX can integrate as backend provider:

Setup:

Odoo: Settings → Technical → VoIP → Providers

Provider: Cloud-PBX
Type: SIP
Configuration:
  SIP Server: sip.thevoco.eu
  Port: 5060 (or 5061 for TLS)
  Username: [Your Cloud-PBX ext]
  Password: [SIP password]
  WebRTC: Enabled

Benefits:

  • In-browser calling (no desktop client needed)
  • Odoo native interface
  • Call status in Odoo header bar
  • Transfer calls within Odoo
  • Conference from Odoo UI

Contact Synchronization

Odoo → Cloud-PBX:

  • Partners (contacts and companies)
  • Phone numbers (mobile, phone, other)
  • Email addresses
  • Company names
  • Tags and categories
  • Customer vs. Supplier designation

Cloud-PBX → Odoo:

  • Create partner from unknown caller
  • Update last call date
  • Add call activity to chatter
  • Update phone numbers if needed

Sync Configuration:

Settings → Integrations → CRM → Odoo → Sync

Partner Sync:
  ☑ Customers
  ☐ Suppliers (optional)
  ☐ Internal (employees)
  
Sync Frequency: Real-time (webhooks) + hourly backup
Unknown Callers: Create as Lead (not Partner)
  Lead Stage: New
  Source: Phone Call

Setup Guide

Prerequisites

Requirements:

  • Odoo instance (Community or Enterprise, v13+)
  • Admin or Settings access in Odoo
  • Cloud-PBX admin permissions
  • Odoo API access enabled

Check Odoo Version:

Odoo → Settings → About
Version: Odoo 16.0 Community (or Enterprise)

Required Odoo Modules:

  • CRM (for leads/opportunities)
  • Contacts (for partners)
  • Phone (base telephony support)
  • Optional: Sales, Helpdesk, VoIP

Verify API Access:

  1. Settings → Technical → API (may need developer mode)
  2. Confirm XML-RPC or REST API enabled

Enable Developer Mode (if needed)

To access API and technical settings:

  1. Go to Settings
  2. Scroll to bottom
  3. Click Activate the developer mode
  4. Or append ?debug=1 to URL

Why Needed:

  • Access technical settings
  • View API credentials
  • Create custom fields
  • Configure webhooks

Generate Odoo API Key

Create API User (Recommended):

  1. Settings → Users & Companies → Users
  2. Create new user: Cloud-PBX Integration
  3. Email: [email protected]
  4. Access Rights:
    • CRM: User (all documents)
    • Sales: User (own documents only)
    • Contacts: User
  5. Save user
  6. Generate API key:
    • User preferences → Account Security → API Keys
    • Click "New API Key"
    • Description: "Cloud-PBX Integration"
    • Copy key (shown once!)

Alternative: Use Admin Credentials (Not recommended for production):

  • Username: admin
  • API Key: Generate from admin account

Configure Cloud-PBX Integration

  1. Sign in to Cloud-PBX Admin Portal
  2. Navigate to SettingsIntegrationsCRM
  3. Select Odoo
  4. Enter Odoo connection details:
    • Odoo URL: https://your-company.odoo.com (or self-hosted URL)
    • Database Name: your-database (for self-hosted)
    • Username: [email protected]
    • API Key: [Paste API key]
  5. Configure features:
    • ☑ Enable Screen Pop
    • ☑ Automatic Call Logging
    • ☑ Click-to-Call
    • ☑ Partner Sync
    • ☑ CRM Integration (Leads/Opportunities)
    • ☐ Helpdesk Integration (if Helpdesk module installed)
  6. Click Save Configuration
  7. Click Test Connection
    • Should show: "Connected ✅ - Odoo v16.0 - Database: your-database"

Map Users

Automatic Mapping: Match by email address:

Manual Mapping:

Settings → Integrations → Odoo → User Mapping

Cloud-PBX User        Odoo User (Email)
───────────────────────────────────────────
John Doe         →    [email protected]
Jane Smith       →    [email protected]
Bob Johnson      →    [email protected]

Why Important:

  • Calls logged under correct Odoo user
  • Activities appear in user's timeline
  • Odoo permissions respected

Configure Screen Pop

Settings → Integrations → Odoo → Screen Pop

Behavior: Open in new tab
Search Priority:
  1. Partner (Contact/Company)
  2. Lead
  3. Opportunity
  4. Helpdesk Ticket (if module installed)

Fallback: Create new lead
Phone Matching: Fuzzy (ignore formatting)
Open Record: Partner form (most relevant)

Test Screen Pop:

  1. Have colleague call from known Odoo partner phone
  2. Verify Odoo opens automatically
  3. Confirm correct partner/lead shown
  4. Answer with full context

Test Call Logging

Outbound Call:

  1. Open partner or lead in Odoo
  2. Click phone icon next to number
  3. Complete test call
  4. End call
  5. Verify: Call appears in chatter within 30 seconds
  6. Check recording link works

Inbound Call:

  1. Call your extension from test number
  2. Answer and complete call
  3. Verify:
    • Screen pop opened correct record
    • Call logged to chatter
    • Recording playable
    • All fields populated

Configure Automated Actions (Optional)

Odoo Automated Actions = Workflows

Example: Create Activity After Call:

Odoo: Settings → Technical → Automation → Automated Actions

Action: Post-Call Follow-Up
Model: Phone Call (res.partner.phonecall or mail.activity)
Trigger: On Creation
Filter: Call Type = "Outbound" and State = "Done"

Action To Do: Create Activity
  Activity Type: To-Do
  Summary: Follow up on call with [partner.name]
  Due Date: +2 days
  Assigned to: [current user]

Example: Update Lead Stage on Demo Call:

Action: Progress Lead After Demo Call
Model: Phone Call
Trigger: On Creation
Filter: Notes contains "demo" and Call Type = "Outbound"

Action: Update Record
  Lead → Stage: Demo Scheduled
  Lead → Priority: High (★★★)
  Lead → Expected Revenue: +$5000

Advanced Configuration

Multi-Company Support

Odoo Multi-Company Setup: If you have multiple companies in one Odoo database:

Settings → Integrations → Odoo → Multi-Company

Enable Multi-Company: Yes

Company Mapping:
  Cloud-PBX Account #1  →  Odoo Company: "Acme Corp"
  Cloud-PBX Account #2  →  Odoo Company: "Subsidiary Inc"

Behavior:
  - Screen pop shows partners from correct company only
  - Calls logged to company-specific records
  - User company context respected

Custom Odoo Modules

Extend Integration to Custom Modules:

Example: Real Estate Odoo Module

Custom Module: "estate_property"
Model: estate.property
Fields: Property Address, Property Phone, Agent

Integration Setup:
  Settings → Integrations → Odoo → Custom Models

  Add Model: estate.property
    Name Field: property_address
    Phone Field: property_phone
    Search: Yes
    Screen Pop: Yes
    Call Logging: Log to property's chatter

Use Case:

  • Call comes in from property phone
  • Screen pop opens property record
  • Agent sees property details and history
  • Call logged to property chatter
  • Automatic task created for follow-up

Helpdesk Module Integration

If Odoo Helpdesk Module Installed:

Settings → Integrations → Odoo → Helpdesk

Enable Helpdesk Integration: Yes

Features:
  ☑ Screen pop ticket on customer call
  ☑ Log calls to ticket chatter
  ☑ Click-to-call from tickets
  ☑ Create ticket from call (if no existing ticket)
  ☑ Update ticket priority based on call

Ticket Creation:
  Trigger: Inbound call > 2 minutes with no existing open ticket
  Team: Support Team
  Priority: Medium
  Stage: New

Screen Pop Priority with Helpdesk:

  1. Open Ticket (highest priority if customer has open case)
  2. Partner
  3. Closed Tickets (reference)
  4. Lead/Opportunity

Sales Order Integration

Link Calls to Sales Orders:

Settings → Integrations → Odoo → Sales Orders

Enable SO Integration: Yes

Auto-Associate:
  - If call to/from partner with open quotation → Associate call
  - If call notes mention "SO" or "order" → Suggest association
  - Manual: Select SO from call logging form

Call to Action:
  - Call logged to SO chatter
  - Update SO stage based on call outcome
  - Create delivery activity if order confirmed on call

Troubleshooting

Connection Issues

Problem: "Cannot connect to Odoo"

Solutions:

  1. Verify Odoo URL:

    • Must be accessible from internet
    • HTTPS recommended
    • No trailing slash
  2. Check API Key:

    • Regenerate if expired
    • Ensure user has sufficient permissions
    • Test API key with Odoo RPC client
  3. Firewall/Network:

    • Odoo server must allow connections from Cloud-PBX IPs
    • Check IP whitelist if configured
    • Verify no VPN restrictions
  4. Odoo Version:

    • Minimum: Odoo 13
    • Recommended: Odoo 15+ for best compatibility

Call Logging Issues

Problem: Calls not appearing in Odoo chatter

Diagnostic:

  1. Check integration logs:

    Cloud-PBX → Settings → Integrations → Odoo → Logs
    Look for: API errors, authentication failures
  2. Verify user mapping:

    • Odoo user must exist
    • User must have write access to partners/leads
    • Check user is active (not archived)
  3. Test manual log:

    Settings → Integrations → Odoo → Test
    → "Create Test Call Activity"
    → Check appears in Odoo
  4. Check Odoo permissions:

    Odoo user needs:
      - CRM: User (all documents) or higher
      - Contacts: User
      - Phone: User

Screen Pop Issues

Problem: Wrong record opens or no screen pop

Phone Format Matching:

Odoo stores: +32 2 123 45 67
Incoming: 003222134567

Enable: Normalize Phone Numbers
  - Strip country code prefixes (00, +)
  - Remove spaces and dashes
  - Match last 8-9 digits (adjust for country)

Multiple Matches:

Settings → Screen Pop → Duplicate Handling

If multiple partners have same phone:
  - Show: Most recent contact
  - Or: Partner with open opportunities
  - Or: Let user choose (show list)

Sync Performance

Problem: Slow partner sync

For Large Odoo Databases (10,000+ partners):

Settings → Integrations → Odoo → Sync Optimization

Selective Sync:
  ☑ Customers only (not suppliers)
  ☑ Active partners only (not archived)
  ☐ Internal contacts (employees)

Filters:
  - Country: Domestic only
  - Type: Company and Contact
  - Tags: [Select relevant tags]

Incremental Sync:
  - Full sync: Weekly (Sunday 2 AM)
  - Incremental: Hourly (only changed records)

API Rate Limiting: Odoo.com (SaaS) has rate limits:

  • 100 requests per minute per user

Solution:

  • Use dedicated API user
  • Batch requests where possible
  • Increase sync interval (hourly → every 4 hours)

Best Practices

Odoo + Cloud-PBX Workflow

Sales Team:

  1. Morning: Review "Calls Scheduled Today" in Odoo Calendar
  2. Click-to-call through lead list
  3. Screen pop provides full context (previous calls, emails, quotations)
  4. During call: Update lead stage in real-time
  5. Post-call: Odoo automated action creates follow-up activity
  6. Recording available for manager review

Support Team:

  1. Inbound call → Screen pop shows customer + open tickets
  2. Agent has immediate context before answering
  3. Call logged to ticket chatter
  4. Ticket updated during call (status, priority)
  5. Recording attached to ticket for QA

Custom Field Mapping

Map Call Data to Odoo Custom Fields:

Settings → Integrations → Odoo → Field Mapping

Cloud-PBX Field       Odoo Field (Technical Name)
───────────────────────────────────────────────────
Call Duration    →    x_call_duration
Call Outcome     →    x_call_result
Lead Source      →    source_id (set to "Phone Call")
Next Call Date   →    x_next_call_date
Call Quality     →    x_call_quality_rating
Campaign         →    x_campaign_id

Create Custom Field in Odoo:

  1. Settings → Technical → Database Structure → Models
  2. Find model (res.partner, crm.lead)
  3. Add field:
    • Field Name: Call Duration
    • Technical Name: x_call_duration
    • Type: Integer
  4. Make visible on form view

Reporting and Analytics

Odoo Reports with Call Data:

Sales Performance Report:

Odoo → Reporting → Custom Reports

Report: Calls by Sales Rep
Model: Phone Calls (mail.activity or res.partner.phonecall)
Group By: User
Measures:
  - Count (number of calls)
  - Sum of duration
  - Conversion rate (calls → won opportunities)

Filters:
  - Date: This quarter
  - Call type: Outbound
  - Outcome: Connected

CRM Pipeline Report:

Report: Calls by Opportunity Stage
Model: CRM Lead/Opportunity
Measures:
  - Count of calls per stage
  - Average call duration per stage
  - Time between calls (avg)
  - Opportunities won with > 5 calls vs. < 5 calls

Insight: More calls in negotiation stage = higher close rate

Odoo-Specific Features

Opportunity Stages Automation

Progress Opportunities Based on Call Activity:

Automated Action: "Move to Qualified After First Call"

Trigger: Opportunity stage = "New"
Condition: Chatter has phone call activity AND call duration > 3 minutes
Action: Set stage to "Qualified"

Calendar Integration

Odoo Calendar + Cloud-PBX:

Scheduled Calls:

  • Create calendar event "Call with John @ 2 PM"
  • Click-to-call directly from calendar event
  • Call automatically logged and linked to event
  • Event marked complete after call

Availability:

  • DND enabled during Odoo calendar events
  • Inbound calls route to voicemail during meetings
  • Auto-reply SMS: "In a meeting, will call back after [event end time]"

Project Management Integration

If Odoo Project Module Installed:

Call from Tasks:

  • Task assigned to customer contact
  • Click contact's phone to call
  • Call logged to task chatter
  • Task updated based on call outcome

Example:

Task: "Follow up on implementation questions"
Assigned: John @ Customer Co.
Phone: [Click to call]

Call completed

Task note added: "Answered all questions, ready to proceed"

Task marked: Done

Automated: Next task created "Schedule training session"

Frequently Asked Questions

Q: Does this work with Odoo Community Edition? A: Yes! Integration works with both Community (free) and Enterprise editions. No special license required.

Q: Can we use with self-hosted Odoo? A: Absolutely. Provide your self-hosted Odoo URL and database name. Ensure server is accessible from internet (or configure VPN).

Q: Does this work with Odoo.sh (Odoo SaaS)? A: Yes, fully compatible with Odoo.com and Odoo.sh hosted instances.

Q: Can we integrate multiple Odoo databases? A: Yes (Enterprise Cloud-PBX plan). Each database requires separate integration configuration.

Q: What about Odoo versions older than v13? A: Odoo v13+ required. Older versions use different API structure. Contact support for legacy version compatibility.

Q: Can we customize where calls are logged (custom models)? A: Yes! Configure custom model integration for specialized Odoo modules (real estate, medical, etc.).

Q: How do call recordings affect Odoo storage? A: Recordings stored on Cloud-PBX servers, not Odoo. Only secure playback link stored in Odoo (minimal storage impact).


Getting Help

Odoo Integration Support

Need help with Odoo integration?

  • Setup: Verify API credentials and permissions
  • Sync Issues: Check user access rights and filters
  • Custom Modules: Contact support for custom model integration
  • Odoo Support: Check Odoo documentation or community forums

Resources:

  • Odoo API Documentation: odoo.com/documentation
  • Video Tutorial: Cloud-PBX + Odoo Setup (18 min)
  • Odoo Community Forums: Custom integration discussions

Next Steps