mondialrelay_relay
A carrier's own map, loaded from their servers into an Odoo form. It is one of the very few widgets in core that pulls a third-party script, and it comes with a hand-written workaround for that carrier's bug.
| Technical name | mondialrelay_relay |
|---|---|
| Field types | char |
| Views | form |
| Module | delivery_mondialrelay, a delivery carrier integration |
| Used in core | 1 occurrence, the delivery method dialog in delivery_mondialrelay |
| Versions | Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | No. It is part of a carrier integration and depends on that carrier's script |
| Alternatives | char, many2one, popover_widget |
What the relay point picker does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
is_mondialrelay | field read by literal name | Decides whether the widget renders at all. On any other delivery method nothing is rendered and the carrier's script is not loaded. |
mondialrelay_brand | field read by literal name | The account identifier passed to the carrier's picker. |
mondialrelay_allowed_countries | field read by literal name | Restricts which countries the map offers points in. |
shipping_zip | field read by literal name | Opens the map near the customer's postcode. Empty is tolerated. |
shipping_country_code | field read by literal name | Sets the map's country. Empty is tolerated. |
mondialrelay_last_selected_id | field read by literal name | Pre-selects a previously chosen point when the dialog reopens. |
Six values are read from the record by literal name. They configure the carrier's picker, and the widget also reads a flag deciding whether to render at all. None is declared as a dependency, so the delivery dialog has to load all of them.
Working examples
A third-party script, and a workaround for its bug
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. The carrier integration module is absent from the development branch. |
| Odoo 19.0 | Verified | Verified against the shipped source. |
| Odoo 18.0 | Verified | Same approach and the same workaround. |
| Odoo 17.0 | Verified | Same approach with older component conventions. |
| Odoo 16.0 | Verified | Same approach with older component conventions. |
Upgrade note. The widget has been present since Odoo 16 with the same approach, so nothing needs migrating within that range. The change to plan for is the next version, where the module is absent entirely.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| No map appears | The chosen delivery method is not that carrier, so the widget renders nothing by design. Select the carrier's delivery method first. |
| The map area stays blank | The carrier's script could not be loaded from the user's browser. Check outbound access to the carrier's domain from the user's network. |
| An error appears when the postcode is invalid | A known crash in the carrier's own script when no results are returned. The widget suppresses Odoo's handler briefly for exactly this; enter a valid postcode. |
| The map opens in the wrong country | The shipping country or postcode is empty on the record. Fill the delivery address before opening the dialog. |
| A previously chosen point is not preselected | The field holding the last selection is empty or not loaded. Check that field on the record; the widget reads it by literal name. |
| Missing widget error | The carrier integration module is not installed, or the database is on a version without it. Install the module if available; on the next version it is absent entirely. |
Relay point picker vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
mondialrelay_relay | Choosing a carrier pickup point without leaving Odoo | Embeds the carrier's own script and stores the chosen point as a JSON snapshot |
char | Recording a pickup point by hand | No map, no validation, but no external dependency either |
| many2one | Choosing from points stored in your own database | A real relation, at the cost of maintaining the point list |
popover_widget | Explaining a delivery exception on a row | Contextual notes rather than an embedded picker |
Frequently asked questions
Where does the map come from?+
What is stored when I pick a point?+
Why does the widget disable an error handler?+
Why does nothing render on other delivery methods?+
Does it exist in Odoo 20?+
Shipping integrations that survive an upgrade
Carrier connectors, rate shopping and label printing are the part of a delivery setup most likely to change between Odoo versions. We plan and implement shipping integrations on versions 16 through 19, with an eye on what happens next.
Book a free consultation