Frequently Asked Questions
Everything you need to know before installing, evaluating, or recommending the Mapbox GL integration suite for Odoo — answered in one place.
Compatibility & Requirements
All modules target Odoo 19.0 and work on both Community and Enterprise editions. There is no dependency on any Enterprise-only feature — the suite is built entirely on standard Odoo framework APIs.
Older Odoo versions (16, 17, 18) are not supported. The modules rely on OWL 3.x (the JavaScript framework introduced in Odoo 17 and matured in 19) and the Odoo 19 view registration system.
No — a free Mapbox account with a public access token (pk.) is sufficient to get started. The free tier includes a generous monthly quota of map loads, geocoding requests, Directions API calls, and Optimization API calls that covers most small-to-medium deployments.
If your usage grows beyond Mapbox's free tier, you will need to upgrade your Mapbox plan. Costs scale based on the number of monthly active users, tile loads, and API requests. Current pricing is at account.mapbox.com/pricing.
ir.config_parameter — one place, all maps.
Yes, for map tile rendering and Mapbox API calls (routing, geocoding, optimization). The Odoo server and users' browsers need outbound access to Mapbox endpoints (api.mapbox.com, events.mapbox.com, tile CDNs).
All Mapbox JavaScript libraries — Mapbox GL JS, Mapbox GL Draw, the Search Box SDK, and Turf.js — are bundled as local static files with the modules. They load without a public CDN, so the maps initialize even if external CDNs are blocked, but tile content and routing data still require a live Mapbox connection.
No beyond a standard Odoo 19.0 deployment. The modules store GeoJSON geometries and GPS coordinates in standard PostgreSQL columns (JSON/JSONB and Float) — no PostGIS extension is required.
For the driver portal PDF manifest feature, the server needs access to the Odoo report rendering engine (wkhtmltopdf or the equivalent in your Odoo 19 setup).
Installation & Modules
You can install any module individually. Dependencies are resolved automatically — installing a leaf module pulls in everything it needs. You never have to install modules you won't use.
The suite is also pre-packaged as four focused sub-products if you need a specific capability:
- Route Planner Suite — 7 modules: foundation + route planning + driver portal + address pinpointing
- Delivery Route Planner — 9 modules: Route Planner Suite + inventory batch integration + delivery portal
- Contacts Route Planner — 10 modules: Route Planner Suite + contacts map + route wizard
- Mapbox GL Drawing Suite — 4 modules: foundation + GeoJSON view + drawing widget
The Mapbox Addons Suite (14 modules) is available for teams who want everything in a single install.
Start with the Route Planner Suite — it is the most complete standalone product and demonstrates the full end-to-end workflow: planning, map visualization, optimization, driver portal, and customer address pinpointing. It is also the foundation that the Delivery and Contacts extensions build on.
If your primary use case is territory drawing or custom map development, the Mapbox GL Drawing Suite is a better starting point — it contains the foundation infrastructure without any route-planning application code.
Yes. The Delivery Route Planner extension (delivery_route_planner_mapbox_gl and website_delivery_route_planner_mapbox_gl) depends on the Route Planner Suite modules. If those are already installed, Odoo will install only the two new delivery-specific modules. No reinstallation or data migration is required.
The same applies to the Contacts Route Planner — it layers its three modules on top of an existing Route Planner Suite installation.
The base module (base_mapbox_gl) depends only on web and base_setup — both shipped with every Odoo installation.
Application modules have additional dependencies:
- Route Planner —
contacts,hr_fleet,base_geolocalize - Delivery Route Planner — also requires
stock_picking_batch,stock_fleet - Driver Portal — also requires
portal,website - Contacts Map — also requires
contacts,base_geolocalize
None of these are Enterprise-only. All are part of the standard Odoo Community distribution.
Routing & Stop Limits
Stop limits depend on which Mapbox API is selected for the route:
| API | Max stops | Notes |
|---|---|---|
| Directions API | 24 stops | Preserves manual stop order. Supports route exclusions. |
| Optimization API | 11 stops | Auto-reorders for minimum travel time. 10 stops with round-trip enabled. |
| Local TSP (Matrix API) | 24 stops | Uses nearest-neighbor + 2-opt locally. More economical than a full Optimization API call. |
These limits are enforced by the Mapbox API and cannot be extended. The module validates the limit before submitting and returns a clear error message if it is exceeded.
Directions API — respects the stop order you set manually. Use this when stop sequence matters (e.g. time-sensitive deliveries, scheduled appointments). Supports route exclusions (avoid tolls, highways, ferries, unpaved roads) and alternative routes.
Optimization API — automatically reorders stops to minimize total travel time. Use this when efficiency matters more than sequence. Supports round-trip mode. Limited to 11 stops.
Both APIs are available on every route and can be switched at any time before the route is confirmed. The Optimize Route action (available in Draft state) also runs a local TSP algorithm against the Matrix API as a cheaper alternative for routine re-sequencing.
Not yet. Time window constraints — for example, "this stop must be visited between 09:00 and 11:00" — are not currently supported.
The Optimization API integration orders stops for minimum total travel time without any time constraints. Per-stop service duration (expected on-site time) is supported and rolls into the estimated arrival calculation, but it does not enforce a visit window.
Time windows are on the roadmap as a future enhancement.
Yes — when using the Directions API, each route has toggleable exclusion options:
- Avoid tolls
- Avoid highways / motorways
- Avoid ferries
- Avoid unpaved roads
- Avoid cash-only tolls
Route exclusions are not available with the Optimization API — that is a Mapbox API limitation, not a module restriction.
One click on Create Delivery Route on an in-progress batch transfer triggers the following automated steps:
- Validates prerequisites — driver and vehicle assigned, all delivery addresses geocoded, departure address resolved.
- Groups multiple pickings to the same customer address into a single stop.
- Aggregates weight and volume per stop from picking move lines.
- Copies driver, vehicle, responsible user, scheduled date, and description from the batch to the route.
- Creates the route and posts audit messages in both the batch and route chatters.
The route opens immediately on the Mapbox map, ready for review and confirmation.
Geocoding & Addresses
Geocoding — converting a street address to GPS coordinates — works differently in each context:
- Backend records (general) — users manually trigger geocoding on any partner record using Odoo's native Geolocalize button. The module registers Mapbox as a geocoding provider in Odoo's standard geocoder framework.
- Contacts module — a scheduled task runs every 12 hours and auto-geocodes up to 80 contacts per run that have an address but no GPS coordinates. The wizard for creating routes from contacts also includes a one-click Geolocalize button for any contacts with missing coordinates.
- Portal pinpoint module — when a customer opens the "Pinpoint on Map" dialog for the first time, their address is automatically geocoded and the marker placed at the best-matching result. If the full address fails, it falls back to city/state/country.
Route creation is blocked if any stop has missing or zero GPS coordinates. The module surfaces a specific, actionable error identifying which addresses are missing coordinates — so the dispatcher knows exactly what to fix before trying again.
For the Delivery Route Planner, this check runs as part of the one-click prerequisite validation before any route is created. For the Contacts wizard, an orange warning banner lists affected contacts by name with a Geolocalize button to resolve them in one click.
Yes — the website_portal_pinpoint_address_mapbox_gl module adds a Pinpoint on Map button to the portal "My Address" form. Customers open an interactive Mapbox map, drag a red marker to their exact location, and click Save. The confirmed coordinates write back to their partner record immediately.
The button shows as amber ("Set Location on Map") when no coordinates exist yet, and green ("Update Location on Map") when coordinates are already saved — making it clear at a glance whether setup is complete.
Portal users can only update their own address and child delivery/invoice addresses within their commercial group — they cannot modify other customers' records.
The module walks up the warehouse location hierarchy to find a geocoded departure address:
- Batch's dock location address (if set)
- The shared source location of all pickings
- Parent locations, climbing the hierarchy until a geocoded address is found
An Address field is added to every stock location so you can assign a partner address (with GPS coordinates) at any level — warehouse, zone, dock, or sublocation. This supports complex multi-level warehouse structures without forcing a flat setup.
Driver Portal
No. Drivers need a portal account only — not a backend (internal) user account. They access their routes through a secure, token-based URL from a standard web browser on any device. No Odoo backend login, no installed app.
Record-level security ensures drivers can only see routes where they are the assigned driver and the route is in a visible state (Confirmed, In Progress, or Done). Draft and Cancelled routes never appear in the portal.
- View an interactive Mapbox route map with numbered stop markers and directional arrows
- See per-segment distance, duration, and turn-by-turn step instructions
- Open any leg in Google Maps or Waze for in-car navigation
- Update stop status (Arrived, Done, Cancelled/Skipped) with required notes for skipped stops
- Attach a delivery photo (camera or gallery) — auto-compressed before upload
- Collect a customer signature on a full-screen touch canvas
- Start and complete the route with one-click lifecycle actions
- Download the PDF delivery manifest (Delivery extension only)
- Toggle dark/light theme; preference persists across sessions
Every driver action is automatically logged to the route chatter, including a GPS-tagged Mapbox Static Image showing the driver's position and the stop location — providing location-verified proof of delivery without extra steps.
Yes — the portal is built mobile-first. It uses a responsive layout with touch-friendly controls, geolocation tracking, and a dark/light theme toggle. The stop status dialog, photo attachment, and customer signature canvas are all designed for use on a smartphone in real working conditions.
There is no dedicated mobile app — the portal runs in any modern mobile browser (iOS Safari, Android Chrome, etc.).
Yes — a Review Mode lets route planners open the portal for any route and see it exactly as the driver sees it, with all driver action buttons safely disabled. It is accessible from the route form in the backend via a "Route Map" quick-access button.
Users in the Route Planner Administrator role see all routes automatically and can perform all actions without toggling review mode. For non-administrator planners, review mode is on by default when they access the portal URL from the backend button.
Licensing & Pricing
Yes — all 14 modules are licensed under LGPL-3 (GNU Lesser General Public License v3). You can inspect the source code, audit the data flow, contribute fixes upstream, or fork the repository for in-house customization without releasing your own proprietary modifications under LGPL.
The source code is available on GitHub.
The main ongoing cost is your Mapbox account. Mapbox bills based on monthly active users, map tile loads, geocoding requests, Directions API calls, Optimization API calls, and Matrix API calls. The free tier covers most small-to-medium deployments.
The modules themselves carry no subscription fee after purchase — you pay once and own the code under LGPL-3.
Yes. Under LGPL-3 you can install and use the modules in your clients' Odoo instances. If you modify the module source code, those modifications must be made available under the same LGPL-3 license, but your own proprietary code that uses the modules as a library is not affected.
Each client deployment that uses the Mapbox APIs will need its own Mapbox access token registered in their account — Mapbox usage is billed per account.
Technical / Developer
Yes — this is an explicit design goal. The foundation layer provides:
BaseMapboxGlComponent— a reusable OWL base class for building custom map widgetswithMapboxGl(Base)— a mixin for adding Mapbox GL to existing OWL componentsmapbox_glview type — declare map views in XML like any other Odoo viewmapbox_gl_geolocateview type — coordinate-based point mapping for any model with latitude/longitude fieldsmapbox_gl_drawview type — GeoJSON geometry display for any model with a JSON geometry fieldmapbox_gl_draw_geojsonform widget — interactive drawing widget for any form field
All of these are model-agnostic. Apply them to any custom Odoo model by adding field declarations and a few XML view lines — no custom JavaScript required to get a working map view.
| Library | Version | Purpose |
|---|---|---|
| Mapbox GL JS | v3.24.0 | Map rendering and interaction |
| Mapbox GL Draw | v1.5.1 | GeoJSON drawing and editing |
| Mapbox Search Box SDK | latest at build time | Address search and geocoding UI |
| Turf.js | v7.3.5 | Geodesic area, length, and geometry calculations |
All four are served as local static files from the base_mapbox_gl module — no external CDN dependency at runtime.
Everything follows standard Odoo conventions:
- New view types registered via the standard Odoo view registry
- Token management via
ir.config_parameter - Chatter and activity tracking via
mail.threadandmail.activity.mixin - Record-level security via standard Odoo record rules
- Driver portal built on Odoo's native portal framework
- Geocoding registered through Odoo's native geocoder provider system
- Scheduled tasks via standard
ir.cronrecords - All frontend components in OWL 3.x — Odoo's standard JavaScript framework
There is no monkey-patching of core Odoo code and no non-standard Python packages required.
The token is stored in ir.config_parameter under the key base_mapbox_gl.mapbox_access_token. It is readable by any internal Odoo user who can render a map page, and is sent to the browser as part of the map initialization — this is standard behavior for Mapbox public tokens (pk.).
A public token (pk.) is designed to be used in browser-facing applications. To restrict its use to your domain, configure URL restrictions on the token in your Mapbox account settings at account.mapbox.com/access-tokens. This prevents unauthorized third parties from using your token quota even if they obtain the token value.
sk.) in the browser-facing Odoo setting — it grants full account access and must remain server-side only.
Still have questions?
Try the live demo, browse the product documentation, or reach out directly.