- CategoryCRM
- AuthAPI key
Overview
Odoo connects on /integrations in the dashboard. Click the Odoo card and the 'Connect Odoo' modal takes four fields: Odoo URL (e.g. https://mycompany.odoo.com), Database (the exact database name, usually the subdomain on Odoo Online), Login Email (the Odoo user the API key belongs to) and the API Key itself. This connector uses Odoo's XML-RPC interface. On save MessageMind proves what the key may do in Odoo but nothing syncs yet; contact sync starts once you switch it on in the Odoo settings and pick the direction (Odoo to MessageMind, MessageMind to Odoo, or both). Individual contacts sync, companies stay in Odoo, and nothing is ever deleted on either side. When the connected user may create base.automation rules on res.partner, changes made in Odoo flow live to a MessageMind webhook; otherwise MessageMind polls write_date every 5 minutes as the safety net. When enabled in settings, the AI can also look up a customer's sales orders.
What MessageMind can do with it
- Bulk-import your Odoo contacts (res.partner, individuals) into MessageMind.
- Keep contacts in step with an incremental write_date poll (default every 5 minutes) and a weekly full reconciliation.
- Register automation rules inside Odoo so creations, updates, archivals and deletions of a partner are pushed to MessageMind live.
- Push MessageMind contact changes to Odoo (name, identity, address, tags, custom fields), mapping MessageMind custom fields to Odoo manual fields.
- Mirror MessageMind labels into Odoo as res.partner.category tags (add-only: a tag removed in Odoo never removes a MessageMind label).
- Look up a specific sales order for a proven caller or chat sender when the AI is asked about one, respecting the key's rights.
- Treat an archived partner as 'archived in Odoo' (stamped on the contact) rather than deleting the contact in MessageMind.
Requirements
- An Odoo instance (Odoo Online, Odoo.sh or self-hosted) reachable over HTTPS at a public, non-private hostname.
- An Odoo user and an Odoo API key for that user. The key's rights (read, write, create on res.partner) decide which sync directions MessageMind can serve.
- The exact database name of the Odoo instance (MessageMind can usually heal a blank database when the server exposes exactly one).
- To use live updates, an Odoo administrator must create (or let MessageMind create) base.automation rules on res.partner.
How to connect
- In Odoo, click your avatar in the top-right, open Preferences, Account Security, then click 'New API Key'. Odoo shows the key value only once; copy it straight away. If you want MessageMind-side changes to travel back to Odoo, pick (or create) a user who may read AND edit Contacts.
- In the MessageMind dashboard, open /integrations and click the Odoo card. The 'Connect Odoo' modal opens.
- Fill in the four fields: Odoo URL (the base URL, e.g. https://mycompany.odoo.com, no path after the host), Database (the exact database name as Odoo spells it), Login Email (the Odoo user's email), API Key (type: password).
- Click Integrate. MessageMind runs a ladder of checks: the URL is normalized and screened against private, loopback, link-local and RFC1918 hosts as an SSRF guard, Odoo's version is read, the credentials are authenticated, read is proven against res.partner, and the key's write and create rights are probed.
- If every rung passes, the connection is enabled with every sync switch off. Open the Odoo settings panel to turn on contact sync and the direction (Odoo to MessageMind, MessageMind to Odoo, or both) you want, and optionally turn on order lookup.
- To turn on live updates, let MessageMind register the base.automation rules in Odoo (requires the connected user to be an Odoo administrator). Otherwise the scheduled 5-minute write_date poll runs on its own.
- If an Odoo key is rotated or expires, repaste the fresh key in the same card; the stored credential is replaced, the installed automation rules keep working, and sync resumes without a fresh initial import.
Authentication and permissions
- Mechanism
- Odoo XML-RPC with login + API key. The API key proves what the user may do (read, write, create on res.partner); MessageMind stores a derived 'access' record alongside the credential and re-probes it on a schedule so a change made by an Odoo administrator is noticed within a day without a reconnect.
- Credentials
- Four fields: Odoo URL (base), Database, Login Email, API Key. The URL is persisted as its normalized origin, the login is lowercased, the API key is encrypted at rest, and server-minted webhook token and secret are kept beside them.
Available data and actions
Reads
- Odoo server version and user identity (uid), used to prove the credentials and record which account the connection belongs to.
- res.partner records in paged search_read calls, filtered by write_date for the incremental poll and by a wider window for the full reconciliation.
- A single res.partner record on demand (when the webhook drain re-reads a partner after a live event).
- The res.partner fields catalog (fields_get) so MessageMind knows which fields exist on this Odoo instance and their types.
- res.partner.category (tags) and the Odoo field map, so labels and custom fields can be mapped bidirectionally.
- sale.order and stock.picking rows for the proven sender when the AI is asked about a specific order (while order lookup is on).
Writes
- Create a res.partner for a MessageMind contact that is not already linked (only when the key's create right is proven and the contact's identity does not collide with an existing partner).
- Update a linked res.partner with name, identity (email, phone, mobile), address parts, note, tags and mapped custom fields, as a diff against the stored baseline (unchanged values are never re-sent).
- Link res.partner.category tags one by one for MessageMind labels (tags are never bulk-replaced and never removed).
- Register (or adopt) and update base.automation rules on res.partner so Odoo posts live events to the MessageMind webhook. Rules created by MessageMind are removed on an account switch or disconnect.
AI agent use cases
- Mirror your Odoo customer base into MessageMind so the AI can greet returning customers by name and knows which contact to update.
- Let the AI update a contact's address, tags and custom fields and have Odoo reflect the change on the matching partner without manual re-entry.
- Let a customer ask about a specific sales order in chat or on a call, and have the AI look it up in Odoo for the proven sender (phone number) and quote status, totals and shipment state.
- Keep a lead-stage tag in step across tools: an Odoo tag added by sales becomes a MessageMind label, and a MessageMind label added by the AI becomes an Odoo tag.
Configuration
- Contact sync is off by default after a connect. The master switch 'syncContacts' plus a per-direction switch ('odooInboundEnabled' / 'odooOutboundEnabled') plus the key's proven right together decide whether a direction runs.
- Order lookup has its own switch ('odooOrderLookupEnabled'). It is independent of contact sync but still requires the key to be able to read sale.order.
- The write_date poll runs every 5 minutes by default. The window is held 3 minutes behind the current time to tolerate PostgreSQL's transaction-start write_date and clock skew.
- A weekly full reconciliation re-walks the account to repair anything the windowed poll might have missed (a restored backup, a dropped webhook event).
- Odoo publishes no rate limit and no Retry-After. MessageMind serializes XML-RPC calls per host+database and self-throttles to roughly one call per second, with bounded retries and no redirects.
- An echo window of 2 minutes suppresses webhook events triggered by MessageMind's own writes.
Example workflows
Connect and first sync
- You paste Odoo URL, Database, Login Email and API Key. The URL is checked (public host only), Odoo's version is read, and the credentials are authenticated.
- MessageMind probes read, write and create rights against res.partner and records the result as the key's 'access'.
- If every check passes, the connection is enabled with every sync switch off.
- You turn on contact sync and the directions you want in the Odoo settings panel. MessageMind applies the sync gate and schedules the poll.
- The first poll runs as the initial import, pulling every res.partner into MessageMind as linked contacts.
- Optionally, you let MessageMind install Odoo automation rules so updates reach MessageMind live between poll windows.
Limitations
- The connector talks XML-RPC and self-throttles to roughly one call per second per host+database, which caps the throughput of a bulk import.
- Live updates require an Odoo administrator to allow MessageMind to create base.automation rules on res.partner.
- Deletions in MessageMind never touch Odoo: the partner may be referenced by invoices and sale orders.
- Deletions in Odoo do not delete the MessageMind contact. An archived partner is stamped on the contact; an unlinked partner only drops the link.
- Only individual partners are synced; companies are not synced as MessageMind contacts.
- The Odoo URL must be a public HTTPS host. Loopback, RFC1918, link-local, carrier-grade NAT and .local / .internal addresses are refused as an SSRF guard.
Troubleshooting
The connect form says the URL is private or rejected.
The Odoo URL must be a public HTTPS address. Loopback, private-range, link-local, carrier-grade NAT and .local / .internal addresses are refused as an SSRF guard. Point MessageMind at the public hostname of your Odoo instance.
The connect says the database was not found or is ambiguous.
Enter the exact database name of your Odoo instance. For an Odoo Online account the name is usually the subdomain. MessageMind can heal a blank value only when the server exposes exactly one database.
A direction says it cannot be turned on.
A direction only opens when the master contact-sync switch, that direction's switch and the key's proven right are all on. If the key cannot read, inbound stays closed; if the key cannot write, outbound stays closed. Give the Odoo user the matching rights on res.partner and run 'Check with Odoo' again.
Changes made in Odoo are not reaching MessageMind in real time.
Live updates require base.automation rules on res.partner. If MessageMind could not install them (usually because the Odoo user is not an administrator), the status card marks live updates unavailable and the 5-minute scheduled poll runs instead. The status card also lists the handful of rules an Odoo administrator can create by hand to turn live updates on without granting MessageMind admin rights.
The status card says the webhook address was rotated and old rules stopped working.
MessageMind moves the live-update rules it set up to the new address by itself while live updates are on. Only an automation rule an Odoo administrator created by hand needs the new address pasted in; the status card prints the current webhook URL for that case.
An existing contact appears twice after a first import.
The Odoo partner's identity (email, phone or mobile) collided with an existing MessageMind contact that had no Odoo link. Link the matching MessageMind contact to the imported Odoo partner by hand; the next sync will target the linked record.
Disconnect and reconnect
- On /integrations in the dashboard, open the Odoo card and click Disconnect. MessageMind cancels the scheduled poll and reconciliation, removes the automation rules it installed in your Odoo on a best-effort pass with the current credential, clears the stored account state (cursors, field signatures, webhook ids, capability map) and forgets every stored partner link on your contacts.
- The Odoo database itself keeps its partners, tags, sales orders and any automation rules created by hand. Disconnecting does not delete anything in Odoo.
- To reconnect, re-enter the four fields in the connect form. If you reconnect against a different Odoo database, MessageMind wipes the old links and checkpoints and starts a fresh initial sync.