Odoo and Monday.com integration
Odoo runs finance, purchasing, inventory, and HR for your business. Monday.com tracks projects and tasks. Connecting the two keeps your procurement, invoicing, and project work in one place. Purchase orders and invoice status in Odoo flow into Monday boards so stakeholders see what is on order and what is due, while project updates in Monday feed back into Odoo analytic accounts for cost tracking. ml-connector handles the different APIs on each side and keeps both systems in sync on a schedule you define.
What moves between them
The main flow is from Odoo into Monday. Purchase orders and supplier invoices from Odoo are read on a schedule tied to your procurement cycle and pushed into Monday items on a project board, mapped to partner and analytic account columns. Project status updates in Monday (column changes indicating fulfillment or delivery) are pulled back into Odoo to update purchase order and invoice status, keeping both systems authoritative for different data types. Analytic accounts in Odoo are mirrored as Monday board structure so cost allocations remain synchronized.
How ml-connector handles it
ml-connector stores both Odoo and Monday credentials encrypted and uses the Odoo API key as a Bearer token on REST calls to https://<subdomain>.odoo.com/json/2/. It polls Odoo purchase order and account.move records at a cadence you define, using write_date filters to find only records changed since the last poll. For each purchase order and invoice in Odoo, ml-connector creates or updates a corresponding Monday item on your project board, mapping Odoo partner names to Monday user columns and analytic account codes to Monday text or dropdown columns. When a column value in Monday changes (e.g., a status column indicating the item is received), ml-connector webhooks that event back, and on the next polling cycle ml-connector updates the Odoo purchase order or invoice status accordingly. Monday's GraphQL API requires column values to be JSON-encoded strings in mutations, not objects, so ml-connector handles that encoding. Odoo's API calls respect access rights tied to the integration user, so the Odoo user account must have the correct permissions on all models being synced. Rate limiting on Monday varies by plan and includes a 5,000,000-point complexity limit per query, so ml-connector batches item reads and mutations to stay within limits. Every synced record carries a full audit trail.
A real-world example
A mid-sized distributor runs Odoo Online for accounting and purchasing. The procurement team uses Monday.com to track incoming purchase orders and manage supplier relationships. Before the integration, purchase orders were created in Odoo but the team also had to manually create and update items in a Monday board for visibility and coordination with warehouse and sales. Invoice status was tracked separately in Odoo spreadsheets. With Odoo and Monday connected, each new purchase order in Odoo creates an item in Monday automatically, mapped to the supplier and cost center, and tagged with the PO date and expected delivery. When the warehouse marks an item received in Monday, the Odoo invoice status updates to reflect that goods have arrived. Invoice aging and cost reports now pull from Odoo while the team gets real-time project-level visibility in Monday without manual re-entry.
What you can do
- Sync Odoo purchase orders and invoices into Monday boards as items, mapped to suppliers and analytic accounts.
- Reflect Monday column updates (status, delivery date, notes) back into Odoo purchase order and invoice records.
- Map Odoo partners and analytic accounts to Monday columns so procurement data stays structured and searchable.
- Authenticate Odoo via API key and Monday via personal token or OAuth, storing both credentials encrypted.
- Poll Odoo on a schedule you define using write_date filters to detect only changed records, with a full audit trail on every sync.
Questions
- Which direction does data move between Odoo and Monday.com?
- Purchase orders and invoices flow primarily from Odoo into Monday items. Monday column value changes (such as status or delivery date updates) flow back into Odoo to update the source purchase order and invoice records. Analytic accounts and partners are synced both directions so the Monday board structure mirrors Odoo cost allocations.
- Why does ml-connector poll Odoo instead of using webhooks?
- Odoo's webhook system via Automated Actions requires Enterprise + Studio and is not production-grade for external systems, so polling is the recommended production pattern. ml-connector uses write_date filters on search_read calls to find only records changed since the last poll, making polling efficient. Monday provides webhooks for its side, so updates from Monday back to Odoo can arrive via webhook or on the next polling cycle, whichever you prefer.
- How does ml-connector handle Odoo API key authentication and Monday token storage?
- ml-connector stores both the Odoo API key and Monday personal token (or OAuth token) encrypted in the cell database. For Odoo, the API key is sent as a Bearer token in the Authorization header on every REST JSON-2 call. For Monday, the personal token is sent as a raw Authorization header value with no Bearer prefix. Both systems require the integration user or token to have the correct access rights and board permissions for all records being synced.
Related integrations
More Odoo integrations
Other systems that connect to Monday.com
Connect Odoo and Monday.com
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started