A courier service without a reliable dispatcher tool is like an airport without a control tower. We know this firsthand: we've worked with dozens of courier services, deploying solutions for real-time order flow management. A dispatcher needs to simultaneously view a map with couriers, process an order queue, and react to changes—all on a mobile device. On a tablet or phone: a map with dozens of points, a queue of unprocessed orders, and statuses of active deliveries. The UI requirements are tighter than in a customer app, and reliability demands are higher than in a courier app. Below, we break down how we solve these tasks using a modern stack including Flutter, Google Maps SDK, and WebSocket.
How to Ensure Map Responsiveness with Dozens of Couriers?
Two types of markers on one map: green dots for available couriers, red dots for active deliveries. When zooming, clustering is needed to prevent the map from turning into a mess of icons. According to Google Maps SDK documentation, clustering is mandatory for more than 100 markers. MarkerClusterManager (Google Maps Android) or GMUClusterManager (iOS) with a custom ClusterRenderer—the cluster color shows the type of objects inside.
More about clustering
Clustering groups markers into clusters, reducing the number of rendered elements. When zooming, clusters break apart. We use a distance-based algorithm (20 pixels) and limit the maximum number of markers on screen to 50.Tap on a courier marker—a popup card appears: name, current status, orders in progress, ETA to next point. From that card, assign a new order or call immediately. Tap on an order marker—order details, status, assigned courier (if any), and a reassign button.
Filtering and Zones—Mobile App Development
A courier service may operate by city zones. The dispatcher must filter the map by zone and see only their couriers. Polygon overlay with GMSPolygon / MKPolygon and semi-transparent fill to display zones. Zone switching via a tab or dropdown at the top.
| Component | Tool | Version |
|---|---|---|
| Map | Google Maps SDK | Latest stable |
| Clustering | MarkerClusterManager / GMUClusterManager | — |
| Zone overlays | GMSPolygon / MKPolygon | iOS 14+ / Android 10+ |
How to Automate Order Distribution?
Manual assignment: the dispatcher sees a new order, looks at the map for nearby free couriers (highlighted), and selects from a list. The list is sorted by distance from the pickup point (server-side calculation via PostGIS ST_Distance). On average, a dispatcher processes up to 50 orders per hour. Our algorithms cut distribution time by 30%.
Automatic distribution—an "auto" button triggers a server-side algorithm. The dispatcher can intervene and reassign. When an order is reassigned, the previous courier receives a push notification "order removed." Without this, a courier might arrive at the address only to find the order was already delivered by someone else.
Unprocessed Orders Queue
A real-time list of new orders via WebSocket. DiffUtil (Android) / SwiftUI AnimatedList for animated row addition/removal. Priority: urgent orders are highlighted in color; default sorting by creation time. Badge on the tab icon for unaccepted orders. If the dispatcher doesn't process the queue for more than 5 minutes, an audible alert sounds.
Why Is Courier Chat Important?
Real-time communication reduces errors and speeds up problem resolution. We recommend an in-app chat, but for small teams a deep link to Telegram or WhatsApp with the courier's number suffices. For enterprise solutions, we use Firebase Realtime Database or Supabase Realtime as the chat backend, with a simple RecyclerView / LazyColumn on the client. Voice messages—a priority on the mobile dispatcher. Recording and sending is faster than typing.
Shift Analytics
A simple dashboard: orders accepted / in progress / completed / cancelled. Average delivery interval. Couriers by status. Updates in real time via WebSocket stream. For deeper analysis, we add a metrics table:
| Metric | Description | Period |
|---|---|---|
| Average delivery time | From assignment to completion | Current shift |
| Orders per courier | Number of orders per courier | Per day |
| On-time delivery rate | Delivered on schedule | Per week |
No separate analytics screen needed—just a widget over the map or a side panel on tablets. This allows the dispatcher to quickly assess the situation.
What’s Included in Development?
- Architectural documentation—component descriptions, flow diagrams.
- Source code—under version control (Git) with CI/CD.
- Store access—publication to App Store and Google Play.
- Team training—2 sessions on the admin panel.
- Warranty—bug fixes for 6 months after release.
We have been doing mobile development for over 5 years and have completed 30+ projects for logistics and delivery. Our solutions are battle-tested—we guarantee stability and performance. If you want to improve your courier service, order a mobile dispatcher app development.
Timelines and Cost
Timeline: from 8 to 14 weeks, including integration. Cost is calculated individually—contact us for an accurate estimate. Get a consultation for your project today.







