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:
- Partners (Contacts/Companies): Customer or supplier records
- Leads: CRM leads and opportunities
- Helpdesk Tickets: Open support cases
- Sales Orders: Active orders
- 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:
| Module | Click-to-Call Location |
|---|---|
| CRM | Lead and opportunity forms |
| Contacts | Partner (contact/company) phone fields |
| Sales | Sales orders and quotations |
| Helpdesk | Support ticket customer info |
| Project | Task assignee and customer |
| Invoicing | Customer invoices and payments |
| HR | Employee records (internal calls) |
| Website | Live chat visitor info |
Call Flow:
- Hover over phone number in Odoo
- Phone icon appears (or click phone field)
- Click to dial
- Cloud-PBX initiates call on your device
- Call in progress (Odoo shows status)
- 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:
- Settings → Technical → API (may need developer mode)
- Confirm XML-RPC or REST API enabled
Enable Developer Mode (if needed)
To access API and technical settings:
- Go to Settings
- Scroll to bottom
- Click Activate the developer mode
- Or append
?debug=1to URL
Why Needed:
- Access technical settings
- View API credentials
- Create custom fields
- Configure webhooks
Generate Odoo API Key
Create API User (Recommended):
- Settings → Users & Companies → Users
- Create new user:
Cloud-PBX Integration - Email:
[email protected] - Access Rights:
- CRM: User (all documents)
- Sales: User (own documents only)
- Contacts: User
- Save user
- 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
- Sign in to Cloud-PBX Admin Portal
- Navigate to Settings → Integrations → CRM
- Select Odoo
- 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]
- Odoo URL:
- Configure features:
- ☑ Enable Screen Pop
- ☑ Automatic Call Logging
- ☑ Click-to-Call
- ☑ Partner Sync
- ☑ CRM Integration (Leads/Opportunities)
- ☐ Helpdesk Integration (if Helpdesk module installed)
- Click Save Configuration
- Click Test Connection
- Should show: "Connected ✅ - Odoo v16.0 - Database: your-database"
Map Users
Automatic Mapping: Match by email address:
- Odoo user:
[email protected] - Cloud-PBX user:
[email protected] - → Auto-matched
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:
- Have colleague call from known Odoo partner phone
- Verify Odoo opens automatically
- Confirm correct partner/lead shown
- Answer with full context
Test Call Logging
Outbound Call:
- Open partner or lead in Odoo
- Click phone icon next to number
- Complete test call
- End call
- Verify: Call appears in chatter within 30 seconds
- Check recording link works
Inbound Call:
- Call your extension from test number
- Answer and complete call
- 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: +$5000Advanced 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:
- Open Ticket (highest priority if customer has open case)
- Partner
- Closed Tickets (reference)
- 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:
-
Verify Odoo URL:
- Must be accessible from internet
- HTTPS recommended
- No trailing slash
-
Check API Key:
- Regenerate if expired
- Ensure user has sufficient permissions
- Test API key with Odoo RPC client
-
Firewall/Network:
- Odoo server must allow connections from Cloud-PBX IPs
- Check IP whitelist if configured
- Verify no VPN restrictions
-
Odoo Version:
- Minimum: Odoo 13
- Recommended: Odoo 15+ for best compatibility
Call Logging Issues
Problem: Calls not appearing in Odoo chatter
Diagnostic:
-
Check integration logs:
Cloud-PBX → Settings → Integrations → Odoo → Logs Look for: API errors, authentication failures -
Verify user mapping:
- Odoo user must exist
- User must have write access to partners/leads
- Check user is active (not archived)
-
Test manual log:
Settings → Integrations → Odoo → Test → "Create Test Call Activity" → Check appears in Odoo -
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:
- Morning: Review "Calls Scheduled Today" in Odoo Calendar
- Click-to-call through lead list
- Screen pop provides full context (previous calls, emails, quotations)
- During call: Update lead stage in real-time
- Post-call: Odoo automated action creates follow-up activity
- Recording available for manager review
Support Team:
- Inbound call → Screen pop shows customer + open tickets
- Agent has immediate context before answering
- Call logged to ticket chatter
- Ticket updated during call (status, priority)
- 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:
- Settings → Technical → Database Structure → Models
- Find model (res.partner, crm.lead)
- Add field:
- Field Name: Call Duration
- Technical Name: x_call_duration
- Type: Integer
- 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