Monday.com Bridge for Odoo
by ResilientByte Maroc https://odoo.kone-adama.com , Kone Adama https://odoo.kone-adama.com$ 20.00
Monday.com Bridge for Odoo
Full bidirectional sync between monday.com and Odoo — dynamic mapping, complexity-budget quotas, native webhooks and a migration assistant.
Token or OAuth
Connect with a Personal API Token for a single account, or OAuth for multi-client / public setups (agencies managing several customers' accounts).
35+ column types supported
Text, long text, numbers, status, dropdown, date, people, checkbox, link, email, phone, rating, board relation, timeline, formula, mirror and more — each with the right Odoo conversion.
Migration assistant
Point it at a whole monday.com workspace: it analyzes every board, suggests Odoo models, flags incompatible columns, runs a bounded test import, then migrates everything for real.
Key features
- Authentication via monday.com Personal API Token, or OAuth for multi-client / public use
- Discovery of workspaces, boards, groups, columns and items through the monday.com GraphQL API
- Dynamic, per-board column mapping to any Odoo model, with smart name-based Odoo field guessing
- Converters for every monday.com column type: text, long text, numbers, status, dropdown, date, people, checkbox, link, email, phone, rating, board relation, dependency, timeline, hour, week, tags, color picker, country, location, file, formula, mirror, progress tracking, vote, subitems and more
- Bidirectional synchronization: monday.com → Odoo, Odoo → monday.com, or both
- File/attachment retrieval and board-relation (linked item) resolution
- Strict quota management based on monday.com's complexity-budget system: reads the remaining complexity from every response and backs off automatically before the budget resets, with a configurable daily safety cap on top
- Native webhook support: create, receive (including the required challenge-echo handshake), disable, and loop prevention through data-hash comparison
- Migration assistant: analyze a whole workspace, suggest Odoo models per board, detect incompatible column types, preview, run a bounded test import, produce an anomaly report, then migrate for real
- Technical sync queue, logs, conflict resolution and a supervision dashboard with KPIs
- Domain filters to restrict exactly which Odoo records get exported
- Multi-company, dedicated security groups, tokens and secrets hidden from the UI and logs
Odoo compatibility
This module is developed and tested for Odoo 16.0 Community, following the same modular architecture as our other connectors so that ports to further versions stay straightforward.
1. Create a Personal API Token
In monday.com, go to your Avatar > Administration > API (or Avatar > Developers on some plans) and generate a Personal API Token (v2). This token inherits the permissions of the user who created it, so make sure that user has access to every board you want to sync. If you plan to use real-time webhooks, no extra scope is required — webhook management is part of the same GraphQL API.
2. Connect your monday.com account
Go to Monday.com Connector > Configuration > Connections and create a new connection:
- Auth Type: Personal API Token (recommended for a single account) or OAuth for public / multi-client use.
- Personal API Token: paste the token created in step 1.
- Api Version: the monday.com API version pinned in every request header (defaults to a recent stable version).
- Environment: a free-text label (Production, Staging...) to organize multiple connections — monday.com itself has no server environments.
- Daily Call Quota: an optional safety cap on API calls per day (0 = unlimited); combined with the automatic complexity-budget backoff described below.
Click Test Connection to verify the token. The connection state turns green ("Connected") once confirmed, and the Complexity Remaining / Complexity Resets In fields start reflecting monday.com's live rate-limit budget after the first API call.
3. Create a Model Mapping
From the connection form, use Discover Boards to browse everything
the token can see, or Register Board by ID if you already know the
Board ID (visible in the monday.com URL, e.g.
monday.com/boards/1234567890). Then go to
Model Mappings > New and set:
- Monday.com Source: connection, workspace, board, and optionally a specific Group ID to restrict sync to one section of the board.
- Odoo Target: the Odoo model to sync with (Contacts, CRM leads, products, or any custom model).
- Direction: monday.com → Odoo, Odoo → monday.com, or Bidirectional.
- Conflict Strategy: Last Modified Wins, Keep Odoo, Keep Monday.com, or Manual (always opens a Conflict record).
- Odoo Export Domain: an optional Odoo domain (e.g.
[('id','in',[46,47,48])]) to restrict exactly which Odoo records are ever pushed to monday.com — strongly recommended before your first export. - Sync Frequency: how often the scheduled sync runs for this mapping.
4. Discover Fields and fine-tune the Field Mapping
Click Discover Fields: the connector reads every column of the monday.com board (plus the item's built-in Name property) and automatically creates a Field Mapping row for each one, guessing the matching Odoo field from its name, and marking formulas/mirrors/creation-log/auto-number and other computed columns as read-only automatically (the monday.com API will not accept writes on them). Open the Field Mappings smart button to review and adjust:
- Odoo Field: change the auto-guessed target field, or map a column the guesser did not recognize.
- Used as Matching Key: the field(s) used to detect that an existing Odoo record and monday.com item refer to the same entity (typically Name).
- Read-only (cannot write): automatically set, can be reviewed.
- Conflict Priority: per-field override of which side wins.
monday.com Status, Dropdown, People and Board Relation columns are automatically resolved into Odoo Many2one / Many2many relations where applicable, and File columns are downloaded and attached to the Odoo record.
5. Run your first sync
From the Model Mapping form, use Initial Import (pull every matching monday.com item into Odoo once), Initial Export (push matching Odoo records into monday.com, respecting the Odoo Export Domain), or Synchronize Now for a full bidirectional pass — the same logic the scheduled cron uses. Every run creates a Sync Job with its exact status, duration, HTTP result and item count.
If you want real-time updates instead of waiting for the next scheduled run, click Register Webhook. monday.com performs a one-time challenge-echo handshake when the webhook is created, and then delivers each event directly in the notification POST body — no extra polling required.
6. Resolve conflicts
When the same item changed on both sides and the mapping's Conflict Strategy is Manual (or the automatic strategy could not decide), a Conflict record shows the Odoo value and the monday.com value side by side. Choose Keep Odoo, Keep Monday.com, or Apply Manual Value after editing the value yourself.
7. Migrating a whole monday.com workspace
Rather than mapping boards one by one, open the Migration Assistant from a connection, optionally scoping it to one Workspace ID. It walks you through five steps:
- Select Workspace: leave empty to analyze every board the token can access, or enter a Workspace ID to scope the analysis.
- Analysis: every board is fetched, incompatible column types and board-relation columns are flagged, and an Odoo model is suggested per board based on its name (you can always override the suggestion).
- Preview: an anomaly report lists boards with no suggested model, computed columns that will import read-only, and board relations that require their target board to be migrated too.
- Test Import: creates the real Model/Field Mappings for the boards you kept, then imports a bounded sample so you can inspect the result in Odoo before committing further.
- Final Migration: runs the full import, with no item limit, for every mapping created during the test step.
Keeping an eye on things
The Dashboard gives you, at a glance: active connections, items synced today, pending jobs, failed jobs, open conflicts, webhook events received today, and the complexity budget remaining on your connections, plus recent connections and sync jobs. Sync Logs gives a line-by-line technical trace of every job, and secrets (tokens, passwords) are always redacted before being stored or displayed. If a job fails, it automatically retries with exponential backoff up to the mapping's Max Retries; a single bad item never blocks the rest of a batch, so one failure results in a "Partially Successful" job rather than losing the whole run.
Support
ResilientByte Maroc / Kone Adama — odoo.kone-adama.com
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Contacts (contacts)
• Discuss (mail) |
| Lines of code | 2862 |
| Technical Name |
odoo_monday_bridge |
| License | OPL-1 |
| Website | https://odoo.kone-adama.com |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module