OpenClaw Odoo ERP Connector
Full-featured Odoo 19 ERP integration for OpenClaw. Control your entire business via natural language chat commands.
Features
- 80+ operations across 13 Odoo modules
- Smart actions with fuzzy matching and auto-creation
- Zero dependencies — pure Python with built-in XML-RPC
- 100% test coverage — 73 comprehensive tests
- Production ready — Thread-safe, retry logic, error handling
Supported Modules
- 📊 Sales & CRM (quotations, orders, leads, opportunities)
- 🛒 Purchasing (POs, vendors, receipts)
- 📦 Inventory (products, stock levels, alerts)
- 💰 Invoicing (customer invoices, payments)
- 📋 Projects & Tasks (management, timesheets)
- 👥 HR (employees, departments, expenses, leave)
- 🚗 Fleet (vehicles, odometer, maintenance)
- 🏭 Manufacturing (BOMs, production orders)
- 📅 Calendar (events, meetings)
- 🛍️ eCommerce (website orders, product publishing)
Quick Install
Via ClawHub (Recommended)
npx clawhub install odoo-erp-connector
Manual Install
# Clone the repository
git clone https://github.com/nullnaveen/openclaw-odoo-skill.git
cd openclaw-odoo-skill
# Windows: Run installer
.\setup.ps1
# OR copy manually to OpenClaw skills directory
# Windows: %APPDATA%\npm\node_modules\openclaw\skills\odoo-erp-connector\
# Mac/Linux: ~/.local/share/openclaw/skills/odoo-erp-connector/
Configuration
Create a file named config.json in the skill directory with your Odoo credentials:
{
"url": "http://your-odoo-server:8069",
"db": "your_database_name",
"username": "your_email@company.com",
"api_key": "your_odoo_api_key"
}
Note: For local Odoo installations, use http://localhost:8069 (or your port).
For Odoo.com/SaaS, use https://yourcompany.odoo.com.
Get Your API Key
- Log in to Odoo
- Go to Settings → Users & Companies → Users
- Open your user record
- Scroll to Access Tokens
- Click Generate
- Copy the key into
config.json
Usage Examples
Sales
"Create a quotation for Acme Corp with 10 Widgets at $50 each"
"Confirm sales order SO00042"
"Show me all draft quotations"
CRM
"Create a lead for Rocky, email rocky@example.com, potential $50k deal"
"Move lead #47 to Qualified stage"
"Show me the sales pipeline"
Inventory
"What's the stock level for Widget X?"
"Show products with stock below 20 units"
"Create a new product: TestWidget, $25 price, min stock 10"
Projects
"Create a project called Website Redesign"
"Create task 'Fix login button' in Website Redesign"
"Log 3 hours on task #42"
HR
"Create employee John Smith, job title Developer"
"Show me all employees in Engineering"
"Submit expense report for $45.99"
[See SKILL.md for complete command reference with 30+ examples]
Smart Actions
The connector automatically handles missing dependencies with fuzzy matching:
Example: "Create quotation for Rocky with 100 Snake Skins at $10 each"
- Searches for customer "Rocky" (case-insensitive)
- If not found → creates new customer "Rocky"
- Searches for product "Snake Skin"
- If not found → creates product with $10 price
- Creates quotation linking both
- Reports: "✅ Created quotation S00059 for Rocky with 100 × Snake Skin at $1,150"
Technical Details
Architecture
- OdooClient — Low-level XML-RPC wrapper with authentication
- Model Ops — 13 business module classes (Sales, CRM, Purchase, HR, etc.)
- SmartActionHandler — High-level natural language interface with find-or-create workflows
Testing
# Run full test suite
python run_full_test.py
# Test single module
pytest tests/test_partners.py -v
73 tests covering all 13 modules with 100% feature coverage.
Requirements
- Python 3.10+
- Odoo 19.0 (may work with 17-18 with field adjustments)
- OpenClaw 2026.2.0+
- No external Python dependencies
Project Structure
openclaw-odoo-skill/
├── SKILL.md # OpenClaw skill definition
├── README.md # This file
├── package.json # Skill metadata
├── config.json.template # Configuration template
├── setup.ps1 # Windows installer
├── requirements.txt # Python dependencies (none)
├── odoo_skill/ # Python connector package
│ ├── client.py # XML-RPC client
│ ├── config.py # Configuration loader
│ ├── errors.py # Custom exceptions
│ ├── smart_actions.py # Smart action workflows
│ ├── models/ # 13 module operation classes
│ │ ├── partner.py
│ │ ├── sale_order.py
│ │ ├── crm.py
│ │ ├── purchase.py
│ │ ├── invoice.py
│ │ ├── inventory.py
│ │ ├── project.py
│ │ ├── hr.py
│ │ ├── fleet.py
│ │ ├── manufacturing.py
│ │ ├── calendar_ops.py
│ │ └── ecommerce.py
│ ├── sync/ # Real-time sync modules
│ │ ├── poller.py # Change detection poller
│ │ └── webhook.py # Webhook server
│ └── utils/ # Helper utilities
└── tests/ # Test suite (73 tests)
Documentation
- SKILL.md — Complete skill definition with 30+ command examples
- README.md — Installation guide and quick start (this file)
- TEST_RESULTS.md — Test coverage report
Security Note
The security scan on ClawHub correctly identifies this skill as having powerful capabilities:
- ✅ Full CRUD operations across Odoo modules (required for ERP management)
- ✅ Webhook server for real-time updates (optional feature)
- ✅ Background polling for change detection (optional feature)
- ✅ XML-RPC network access (required for Odoo communication)
These are legitimate features for an ERP connector. The skill contains no malicious code — review the source if you have concerns.
Troubleshooting
Connection Failed
- Verify Odoo URL and server is running
- Check database name matches exactly
- Regenerate API key if authentication fails
Module Not Found
- Ensure Python 3.10+ is installed
- No external dependencies needed (uses built-in
xmlrpc.client)
Permission Denied
- Check Odoo user has access to required modules
- Some operations require specific permissions (Admin, Sales Manager, etc.)
Contributing
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Add tests for new features
- Submit a pull request
License
MIT License - see LICENSE file for details
Author
NullNaveen
- ClawHub: @NullNaveen
- GitHub: @nullnaveen
Support
- Issues: GitHub Issues
- ClawHub: odoo-erp-connector
- Discord: OpenClaw Community
Version: 1.0.1
Last Updated: 2026-02-09
Status: Production Ready ✅