Odoo and Slack integration
Odoo manages your accounting, purchasing, inventory, and HR. Slack keeps your team connected. Connecting the two surfaces critical business events in real time without teams leaving Slack or accounting staff breaking their workflows. New purchase orders, submitted invoices, completed payments, and employee onboarding milestones flow into designated team channels as structured messages that link back to the records in Odoo. Slack users can react and respond, and ml-connector logs those interactions back into Odoo's audit trail.
What moves between them
The main flow is Odoo into Slack. Purchase orders, invoices, and payments created or updated in Odoo are polled on a configurable schedule and posted as formatted messages to dedicated Slack channels. Employee records flow the same direction, so team members see onboarding and termination notices as they happen. Slack user reactions, thread replies, and mentions are logged back into Odoo for audit and compliance. Reference data such as departments and product codes are aligned in both systems so channel routing and message detail stay accurate.
How ml-connector handles it
ml-connector stores both the Odoo API key and Slack OAuth2 token encrypted and polls Odoo using write_date filters on a schedule you define, defaulting to hourly for operational data and daily for reference. It formats each Odoo record as a Slack message with title, key fields, and a deep link back to the original record in Odoo, then posts to the matching channel using the Slack Web API. For purchase orders, it extracts vendor, amount, and due date; for invoices, vendor, amount, and payment terms; for employees, name, department, and start date. Because Slack rate-limits postMessage to one per second per channel and Odoo's API key does not expire, ml-connector batches Odoo records when the polling window contains more than one per second, and it validates each Odoo user's access rights before posting their record. Thread replies and reactions are collected separately and logged back to Odoo via a read-only integration user record. Webhook delivery from Odoo is unreliable, so polling is the default; if your Odoo instance has Enterprise + Studio with Automated Actions enabled, ml-connector can also consume those webhooks with HMAC validation.
A real-world example
A mid-sized services firm uses Odoo Online for accounting and procurement, and Slack for team communication. The finance team and procurement team work in separate channels. Previously, purchase requisitions submitted in Odoo were emailed as PDF attachments, teams missed urgent approvals, and invoices from suppliers were lost in email threads. With Odoo and Slack connected, each new purchase order appears in the procurement channel within minutes, tagged by vendor and amount, with a link to the full record in Odoo. Finance sees incoming invoices in their channel and can discuss payment timing without re-forwarding documents. Team members react in Slack, and those signals feed back into Odoo for compliance audits. Approval cycles and payment turnaround both improved.
What you can do
- Post Odoo purchase orders, invoices, and payments to designated Slack channels on a polling schedule with deep links back to Odoo.
- Format and attach Odoo product and vendor reference data in message context so Slack users understand scope without opening Odoo.
- Authenticate Odoo via API key or Bearer token and Slack via non-expiring OAuth2 credentials, managing both encrypted at rest.
- Poll Odoo using write_date filters and timestamps so integration starts on demand without replaying historical records.
- Log Slack reactions, mentions, and thread replies back into Odoo audit records for compliance and team accountability.
Questions
- Which Odoo editions support this integration?
- Odoo Online, Odoo.sh, and self-hosted editions all expose the XML-RPC and JSON-2 APIs. External API access requires the Custom pricing plan on Odoo Online; self-hosted and Odoo.sh have no license restriction. All editions require an API key paired with a username on Odoo 14 and later, and access is governed by the integration user's Odoo role and record rules.
- How does ml-connector handle the difference between Odoo webhooks and Slack webhooks?
- Odoo webhooks via Automated Actions are not production-grade, so ml-connector uses polling with write_date filters instead. Slack, by contrast, supports reliable webhook delivery via the Events API with HMAC-SHA256 signature verification. If you use Slack's Events API, ml-connector validates every signature in constant time and retries failed deliveries up to 3 times with exponential backoff.
- What happens if the Slack channel is full or the bot token is revoked?
- If a channel reaches storage limits, ml-connector queues the message and retries on your next polling cycle. If the Slack OAuth2 token is revoked via auth.revoke or workspace admin action, ml-connector logs the failure and surfaces it in the audit trail so you can re-authenticate without losing data.
Related integrations
More Odoo integrations
Other systems that connect to Slack
Connect Odoo and Slack
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started