Mapbox GL JS Products for Odoo
Four purpose-built addons that bring Mapbox GL JS — interactive maps, multi-stop route planning, delivery dispatch, contact geography, and a native GeoJSON drawing toolkit — directly into Odoo. Buy the full suite or install only the sub-product you need.
Browse all available products below. Each sub-product bundles the foundation modules it depends on — you install exactly what you need, nothing more. The full suite installs everything in one go.
Mapbox Addons Suite for Odoo
The complete Mapbox GL JS integration — foundation, route planning, delivery dispatch, contacts geography, and GeoJSON drawing. All 14 modules, all four sub-products, in a single package.
View detailsRoute Planner Suite
Multi-stop route planning for any team that dispatches drivers, sales reps, or field technicians. Dual-API routing, route exclusions, alternative routes, turn-by-turn steps, and a mobile-friendly driver portal.
View detailsDelivery Route Planner
Turn any in-progress Odoo Inventory batch transfer into a geocoded, optimized delivery route in one click. Smart stop grouping, weight and volume tracking, PDF manifests, and a delivery-aware driver portal.
View detailsContacts Route Planner
Browse your entire Odoo contact database on an interactive Mapbox map, select the customers you want to visit, and generate a ready-to-dispatch multi-stop route in a single action — built for field sales and outreach operations.
View detailsMapbox GL Drawing Suite
A model-agnostic drawing primitive for Odoo — embeds Mapbox Draw as a reusable form widget and adds a GeoJSON map view type that can be attached to any Odoo model with a JSON field. Shapes are stored as standard GeoJSON. No custom JavaScript required.
View detailsFrequently Asked Questions
Everything you need to know before installing, evaluating, or recommending the Mapbox GL JS 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.
Mapbox vs Google Maps
Several factors made Mapbox the right choice for an Odoo business suite:
- Embedding freedom — Google Maps Platform requires that maps be accessible to the public and prominently display the Google branding. Mapbox has no such restriction, making it well-suited for internal business tools, portals, and custom-branded applications.
- Full style customization — every aspect of a Mapbox map — colors, fonts, layer visibility, road labels — can be customized via Mapbox Studio or programmatically. Google Maps offers very limited theming.
- Vector tile renderer — Mapbox GL JS is built on a WebGL vector renderer (now open-source as MapLibre GL), giving smooth zoom, rotation, and 3D tilt at no extra cost. Google Maps still uses a hybrid raster/vector approach on web.
- Better API design for routing — the Mapbox Optimization API and Matrix API are well-documented and straightforward to integrate. Google's equivalents (Routes API, Distance Matrix API) have more complex pricing tiers and usage policies.
- LGPL-compatible licensing — the Mapbox GL JS SDK license is compatible with the LGPL-3 license used across this suite. Google Maps JavaScript API terms are more restrictive.
Both platforms offer a free tier, but the structures differ significantly:
| Feature | Mapbox (free tier) | Google Maps Platform (free credit) |
|---|---|---|
| Map loads | 50,000 / month | ~28,500 / month (at $7/1,000 after $200 credit) |
| Geocoding requests | 100,000 / month | ~24,000 / month (at $5/1,000 after $200 credit) |
| Directions / Routes | 100,000 / month | ~16,700 / month (at $10/1,000 after $200 credit — Advanced) |
| Optimization / waypoints | Limited (see Mapbox pricing) | Available via Routes API (compute routes matrix) |
| Free credit structure | Per-API request quotas reset monthly | $200 USD credit per month applied across all APIs |
For small-to-medium Odoo deployments, both platforms cover typical usage within their free tiers. At scale, Mapbox tends to be more cost-effective for map-heavy B2B applications. Google's $200/month credit is deducted from a single billing account across all APIs, so a combination of high tile loads and frequent geocoding can exhaust it faster.
For standard business addresses in most countries, Mapbox geocoding is highly accurate and directly comparable to Google. Both return structured results (street, city, country, coordinates) with confidence scores.
There are some practical differences worth knowing:
- Google has a slight edge for informal or ambiguous address formats — abbreviated street names, missing postal codes, mixed-language inputs. Its search index is extremely deep globally.
- Mapbox (backed by OpenStreetMap and proprietary data) sometimes has more granular address detail in regions where OSM contributors are very active. It also has strong autocomplete performance via the Search Box SDK.
- Fallback behavior — the suite falls back from full address to city/state/country when a precise geocode fails, which covers the vast majority of real-world edge cases.
In practice, the difference is rarely noticeable for typical business delivery and field-service addresses.
Yes — but only for in-car turn-by-turn navigation links, not for map rendering or API calls. The driver portal includes "Open in Google Maps" and "Open in Waze" buttons for each route leg. When a driver taps one, their device opens the navigation app of their choice with the destination pre-loaded.
This is a deliberate UX decision: Mapbox GL JS in the browser is excellent for visualizing and managing routes, but drivers prefer the familiar voice navigation of Google Maps or Waze on the road. The two tools complement each other.
No Google Maps API key is required — the links are standard deep-link URLs (https://maps.google.com/?daddr=... and https://waze.com/ul?...) that open the installed app or the web version.
Not without significant rework. The entire foundation layer is built on Mapbox GL JS — the OWL components, map views, drawing tools, and routing integrations all use the Mapbox GL JS API directly. Google Maps JavaScript API is a fundamentally different SDK with different objects, event model, and tile system.
If you have a specific requirement to render Google Maps tiles within Odoo, the most practical approach is a custom module that wraps the Google Maps JavaScript API in an OWL component alongside the existing Mapbox suite — rather than replacing it. That kind of integration would be a consultancy engagement rather than a drop-in configuration.
Mapbox is the right choice for this suite, but it is fair to acknowledge where Google Maps has an edge:
- Places / Points of Interest — Google's POI database is significantly richer. If your use case requires searching for business names ("find the nearest Carrefour"), Google Places API is stronger. Mapbox geocoding is address-first.
- Real-time traffic data — Google Maps has live traffic data integrated into routing at no additional cost. Mapbox's Directions API includes traffic-aware routing on paid tiers, but the free tier uses historical traffic patterns.
- Street View — there is no Mapbox equivalent. If you need street-level imagery inside Odoo, that would require a Google Maps integration.
- Brand recognition — end users are more familiar with Google Maps. For internal tools this rarely matters, but for customer-facing features it can affect perceived quality.
- Route optimization limits — the Mapbox Optimization API is capped at 11 stops. Google's Routes API (via waypoint optimization) supports up to 25 stops, though at a higher per-call cost.
For delivery route planning, geocoding, interactive map views, and the driver portal — the core use cases this suite covers — Mapbox is a strong, cost-effective fit.
Still have questions?
Try the live demo, browse the product documentation, or reach out directly.