openclaw-channel-odoo
v0.3.1
Published
OpenClaw channel plugin for Odoo — receive webhooks and reply via configurable XML-RPC methods
Maintainers
Readme
An OpenClaw channel plugin that wires OpenClaw agents into Odoo. Any Odoo event — a button click, a chat input, a cron — can hand off to an agent, and the agent's output can flow back into Odoo as a chatter message, a newly created record, a field update, or anything else callable via XML-RPC.
- 🪝 Inbound: any Odoo trigger → agent (auth'd, deduped, debounced)
- 📤 Outbound: agent output → any Odoo method, configurable per model
- 🔍 Tool:
odoo_search_read— the agent reads Odoo data on demand - 🎯 Per-model routing: different methods, agents, prompts per Odoo record type
Heads up — the plugin is one half of the integration. You also need a small Odoo-side addon (an HTTP controller that POSTs to the webhook, and the method(s) the plugin calls back into). See the Odoo-side setup section of the configuration guide for a copy-paste minimal example.
Quick start
Install via OpenClaw:
openclaw plugins install openclaw-channel-odooMinimal openclaw.json:
{
"channels": {
"odoo": {
"url": "https://myodoo.com",
"db": "mydb",
"uid": 2,
"password": "<api-key>",
"webhookSecret": "<shared-bearer-token>",
"webhookPath": "/openclaw/inbound",
"routes": [
{
"match": "*",
"reply": {
"method": "message_post",
"kwargs": {
"body": "$body",
"message_type": "comment"
}
}
}
]
}
}
}With the minimal Odoo-side controller (shown in the configuration guide), this config routes every inbound message through your agent and posts the reply back to the triggering record's chatter. No custom Odoo methods needed — message_post is built in.
For per-model routing, agent overrides, custom reply methods, and the variable system — see the configuration guide.
How it works
┌──────────────┐ webhook ┌─────────┐ dispatch ┌───────┐
│ Odoo action │ ──────────► │ Plugin │ ───────────► │ Agent │
└──────────────┘ └─────────┘ └───────┘
▲ │
│ XML-RPC execute_kw │
└──────────────────────────┘- Something happens in Odoo — a button press, a chat input, a workflow event
- Your Odoo-side controller POSTs the trigger to the plugin's webhook (Bearer-auth'd)
- Plugin routes the message to an agent (optionally per-model)
- Agent does its thing and produces output; plugin calls back into Odoo via the method configured for that model
Documentation
- 📖 Configuration guide — Odoo-side setup, routes, matching, the variable system, worked examples, validation errors
- 🐛 Issues — bug reports and feature requests
- 📋 Changelog — version history
License
MIT · © Monday Merch B.V.
