Every taxi configuration screen lives in the dashboard, under the Taxi & rides group and Configuration in the sidebar. The onboarding wizard collects your Operation Area — the list of cities you plan to run in, capped by your plan's locations limit — and everything below builds on it.
If you haven't picked your cities yet, do that first in Owner Dashboard → Onboarding → Operation Area. Then come back here.
What you're actually configuring
| Concept | Where it lives in the dashboard | What it is |
|---|---|---|
| Service class | Taxi → Pricing → Service classes | A bookable tier (Economy, Premium, XL). Carries pricing parameters and driver/vehicle eligibility rules. |
| Vehicle catalog | Taxi → Vehicles | The makes, models, and colors drivers can pick from. Distinct from individual vehicles registered to drivers. |
| Pricing rules | Taxi → Pricing, the other tabs | Zone fares, group fares, surcharges and time bands that layer on top of a service class. |
| Dispatch rules | Taxi → Dispatch rules | How driver offers are sent (broadcast vs. sequential) and how candidates are scored. |
| Regions and zones | Configuration → Regions | Geographic regions and their zones, each drawn on a map. Used by pricing rules and dispatch. |
| Map starting point | Configuration → Regional Settings | Where maps open when a person's location isn't known. |
The Drivers section is its own surface — see Onboard Drivers.
Step 1: Create your service classes
Open Taxi → Pricing. The Service classes tab shows your existing classes; click New service class to create one.
The form is divided into these sections.
Basic info
| Field | Notes |
|---|---|
| Image | Optional; shown to passengers when picking a tier. Pick a catalog vehicle in your colour, or upload your own. |
| Map marker | How drivers of this class appear on every map. |
| Name | e.g. "Economy". |
| Description | Short blurb shown in the app. |
| Position | Sort order in the picker — lower numbers appear first. |
| Seats | Integer seats. |
| Active | Toggle to hide a class without deleting it. |
| Available for delivery | Lets the class be matched to package deliveries as well as rides. |
Regions
A class is only offered where it is linked. Tick the regions it should be bookable in — an unlinked class never appears in a quote.
Pricing
The economics are pricing-mode-aware. Amounts are in your workspace currency, and percentages are entered as percentages — 20 means 20%.
- Pricing mode —
Fixed(predetermined fee, no driver submission) orMetered(driver submits the final fee at end of ride). Source:backend/crates/taxi/domain/src/services/pricing_mode.rs. - Fee policy — accept any fare, warn if out of range, or reject if out of range.
- Payment timing — authorize before dispatch, charge after the ride, or decide per ride.
- Base fare, Per km, Per minute, Booking fee, and Waiting, per minute.
- Minimum / Maximum fare — optional absolute bounds.
- Lower bound / Upper bound — the accepted fare range, against the estimate.
- Authorization — the share of the maximum fare to hold before dispatch.
Settings
- Passenger confirmation window and Driver fee window — seconds.
- Platform commission — a percentage.
- Commission flat fee — applied on top of the percentage.
Eligibility
This section controls which drivers can take rides for this service class. Driver matching has two modes (backend/crates/taxi/domain/src/services/eligibility_mode.rs):
- Dynamic — drivers automatically qualify if they meet the criteria below.
- Manual — only drivers explicitly included in this class qualify. You include a driver from their own page, on the Eligibility tab. INCLUDE / EXCLUDE overrides in
taxi.driver_service_classlayer on top either way.
In Dynamic mode, the editor exposes:
- Vehicle — maximum vehicle age (years), allowed makes, models and colours, body types, size classes, fuel types, minimum seats, minimum doors. Leave any field empty to skip that requirement.
- Driver — minimum rating (out of 5), minimum completed rides, minimum acceptance rate (last 30 days), maximum cancellation rate (last 30 days), minimum driver tier, and an optional driver-gender filter. Use the gender filter sparingly — only for legally permitted gender-restricted services.
- Customer — the minimum customer tier (Unverified / Basic / Verified / Premium) the passenger must hold, and a VIP eligible toggle for the driver.
- Compliance — documents in date, photo verified, background check passed, and a multi-select of Certifications that points at the catalog you manage in
Configuration → KYC Policies → Certifications.
Step 2: Curate the vehicle catalog
Taxi → Vehicles has three tabs: Makes, Models, and Colors.
Each list mixes two row types:
- Global rows seeded by the platform — every workspace sees them. You can't edit a global row, but you can Hide it so it stops showing up to drivers picking a vehicle. Hidden rows can be brought back with Unhide.
- Yours rows — makes / models / colors you've added for your workspace. These are editable and deletable.
Under Catalog preferences you can turn a whole platform list off, to offer drivers only the entries you add yourself.
Add a custom make with New make. Models live under their make and carry the specifications service classes match drivers on (body type, size class, fuel, seats, doors); colors are flat.
This catalog is what drivers (and the New driver form in the next article) pick from when registering a vehicle. It does not track individual vehicles or vehicle approval — that happens implicitly when a driver is approved (see Onboard Drivers).
Step 3: Define pricing rules (optional)
Back on Taxi → Pricing, the other tabs let you layer zone-specific fares on top of a service class:
- Zone fares — a fixed price for trips from one zone to another. It replaces the distance and time price for those trips.
- Zone groups — named sets of zones in a region.
- Group fares — a fixed price for trips between two zone groups. A zone fare for the same trip wins over a group fare.
- Surcharges — an extra charge for trips that start or end inside a zone, such as an airport.
- Time bands — days and hours, such as nights or weekends, that fares and surcharges can be limited to.
Zones themselves come from Configuration → Regions, where each region carries a boundary drawn on a map and its own list of zones. Each operating city gets a region with a circular boundary automatically; redraw it to match the area you actually serve. You add zones to a region before you can reference them in a fare.
Step 4: Configure dispatch
Open Taxi → Dispatch rules. Dispatch settings are held in configurations. One is enough to run; with several you can split new rides between them and compare how drivers and passengers respond. Open a configuration to edit its settings — saving starts a new version, and every earlier version can be restored.
Strategy
- Broadcast — send requests to multiple drivers at once, in waves.
- Sequential — send requests to one driver at a time, in order.
General
| Field | Unit |
|---|---|
| Request Timeout | seconds |
| Initial Search Radius | meters (where the search starts) |
| Maximum Search Radius | meters (hard ceiling) |
| Radius Expansion | step in meters, interval in seconds, and a maximum number of steps |
Broadcast Settings (when Broadcast is selected)
| Field | Unit |
|---|---|
| Wave Size | drivers per wave |
| Wave Interval | seconds between waves |
| Max Waves | total waves |
| Radius increase per wave | meters added per wave |
Sequential Settings (when Sequential is selected)
| Field | Unit |
|---|---|
| Per-Driver Timeout | seconds |
| Maximum drivers to try | drivers |
| Driver Retry Limit | times |
Fallback
Optionally try the other strategy when the first finds no driver.
Driver Scoring Weights
Values between 0 and 1 for Distance, Driver Rating, Idle Time, and Cancel Rate, plus an optional Minimum score and a "consider only the best N drivers" limit.
Passenger policy
A separate section for per-customer-tier rules:
- Free waiting (seconds) — per tier; how long the driver waits at pickup before billable charges start.
- Booking radius after a no-show (meters) — per tier.
- Automatic rebooking when a driver cancels —
Off, or a minimum tier. If a trip drops and the passenger is at or above this tier, the system automatically attempts to re-match.
Save settings writes the configuration as a new version.
Step 5: Set the map starting point
Configuration → Regional Settings has a Map starting point — where maps open when a person's location isn't known. This is a per-workspace preference, not a per-class one.
What we don't have (so you don't go looking)
A few capabilities that the previous version of this article suggested exist, but don't:
- No single workspace-wide service-area polygon. Boundaries are drawn per region in
Configuration → Regions. - No "Test mode vs. live mode" toggle. There's a per-workspace
is_demoflag that gates demo affordances in the driver/passenger apps, but it's set at workspace provisioning, not flipped from the operator UI. - No vehicle approval queue. Individual vehicles aren't approved separately — they're attached to a driver and reviewed as part of the driver's approval (see the next article).
- No "surge multiplier" field on service classes. Demand-shaping is done through pricing rules and dispatch scoring.
- No dispatch-health view. It was part of the retired ops console app. The Performance section of
Taxi → Dispatch rulesshows how each configuration is doing.
Suggested order on day one
This is advisory — not enforced by the product:
- Set your operation cities (onboarding).
- Check the Region created for each city in
Configuration → Regions, and redraw its boundary to cover your service area. - Create at least one Service Class in Dynamic mode with sensible defaults, linked to that region.
- Save Dispatch settings. The defaults suit a small fleet. If drivers are sparse, raise the Initial Search Radius so the first round already reaches them, rather than only the maximum — the maximum is a ceiling the search grows toward, not where it begins.
- Move on to driver onboarding.
How the search widens
A request starts at the Initial Search Radius and widens by the expansion step at each interval, never past the Maximum Search Radius. If the fully widened search still finds nobody, dispatch makes one last round with no distance limit before cancelling, so a tight ceiling cannot strand a booking that a nearby-ish driver would have taken.
Drivers also set their own pickup radius in the driver app. Both have to accept: a driver 8 km away is inside a 10 km workspace radius, but not inside their own 5 km preference, and will not be offered the ride. A driver who sets no radius has no limit of their own.
What's next
- Onboard Drivers — invite, verify, and approve the people who'll drive for this fleet.
- Plans & Billing — your plan's
locationslimit caps how many cities you can register in Operation Area. - Dashboard Tour — the whole sidebar, in case you're hunting for a setting you remember seeing elsewhere.