LocalPilot adds drivers to WooCommerce. Orders are assigned from the admin panel, and drivers operate them from My Account on their phone — no admin access needed.
- The store owner assigns an order to a driver.
- The driver sees it in My Account → My Deliveries, accepts, and heads out.
- Upon arrival, they mark as delivered, upload a photo, and optionally the browser validates they're near the destination.
- Everything is logged: who, when, photo, and location.
| Requirement | Why |
|---|---|
| 🛒 WooCommerce | That's where your orders are. |
| 👤 Drivers | Users with the localpilot_driver role. They use their own phone. |
| 🗺️ Mapbox | Free token for maps and geocoding. |
| 🔒 HTTPS | Required for browser geolocation. |
⚡ No need for a native app, extra servers, or advanced technical skills. Everything runs inside WooCommerce.
- Native
localpilot_driverrole with its own capabilities. - Profile with phone, vehicle, license plate, and notes.
- Individual activate/deactivate.
- Assign, reassign, or remove drivers from the order editor.
- Informational columns in the orders list (HPOS and legacy storage).
- Filter by driver and delivery status.
- List with summary, status counters, and filters.
- Responsive: table on desktop, cards on mobile.
- Contextual actions: accept, start delivery, complete, report failure.
- Photo evidence upload (JPG, PNG, WebP).
- On-demand location validation upon completion (optional).
- Automatic address geocoding on assignment.
- Interactive map on the delivery detail page.
- Admin map with manual coordinate correction.
- Validation radius circle and dual markers (destination + GPS).
- On-demand routes from the driver's location to the destination.
- Profiles: driving with traffic, driving, cycling, and walking.
- Privacy: the route exists only in memory, never saved.
5 configurable native WooCommerce notifications:
- Order assigned.
- Driver removed.
- Delivery started.
- Delivery completed.
- Delivery failed.
- Route location is never stored or persisted.
- Point-of-delivery validation saves only the summary, not the route.
- No live tracking, background GPS, or
watchPosition(). - Data preserved on uninstall by default (configurable).
| Order editor | General settings | Mapbox settings |
|---|---|---|
![]() |
![]() |
![]() |
| List | Detail | Route calculated |
|---|---|---|
![]() |
![]() |
![]() |
- WordPress 6.9+
- WooCommerce 10.9+
- PHP 7.4+
- HTTPS (required for browser geolocation)
- Download the plugin from GitHub Releases.
- Go to Plugins → Add New → Upload Plugin and select the ZIP file.
- Activate the plugin.
- Go to WooCommerce → Settings → LocalPilot to configure.
- Create one or more users with the
localpilot_driverrole. - Activate them from their user profile ("Active" checkbox).
- Configure Mapbox under WooCommerce → Settings → LocalPilot → Mapbox.
- Go to WooCommerce → Orders, open an order, and assign it to a driver.
Unassigned → Assigned → Accepted* → Out for delivery → Delivered
↘ ↘→ Failed
↘→ Canceled
*Acceptance required is configurable.
Routes are available only for active deliveries (Assigned, Accepted, Out for delivery) and must be explicitly enabled in settings.
Technical details:
- Routes are calculated via Mapbox Directions API v5.
- Each click on Calculate route generates a billable request.
- Location, geometry, distance, and duration are not stored in WordPress.
- No
watchPosition(), background GPS, or automatic recalculation. - Google Maps remains available as an external navigation option.
- Per-driver access control (ownership verified server-side).
- Nonces and capabilities on every action.
- State-machine transition validation.
- Evidence validated by real MIME type, not file extension.
- Mapbox token restricted by URL and minimum scopes.
- No coordinates, tokens, or routes exposed in logs or events.
Ideas for upcoming versions:
| Feature | Status |
|---|---|
| 🟢 Operational dashboard for managers | Planned |
| 🟢 Live driver tracking | Planned |
| 🟢 Public customer tracking portal | Planned |
| 🟡 Zone-based auto-assignment | Under research |
| 🟡 Push / WhatsApp notifications | Under research |
Have another idea? Open an issue.
The plugin includes a basic QA runner at tests/qa-runner.php. To run it:
wp eval-file tests/qa-runner.phpGPLv2 or later. See LICENSE.txt.
Contributions are welcome. Please:
- Fork the repository.
- Create a branch (
git checkout -b feat/my-improvement). - Commit your changes (
git commit -m 'feat: add my improvement'). - Push to the branch (
git push origin feat/my-improvement). - Open a Pull Request.
racmanuel — racmanuel.dev
- Mapbox — maps, geocoding, and directions.
- WooCommerce — the e-commerce platform.
- WordPress — the CMS that makes it all possible.






