Telemetry HQ

Mobility ops metrics and KPIs that actually move the needle

A practical set of mobility ops metrics and KPIs that improve service, reduce chaos, and make performance discussions more honest.

City traffic at dusk, representing mobility operations and service pressure.

Most mobility teams measure what is easy to count, then wonder why nothing improves.

I have a simple test for an operations metric: can someone change what they do on the next shift because of it? If the answer is no, the metric may still be useful for reporting, but it is probably not an operating metric.

If we want metrics that change outcomes, they need to do two things. They need to match how work actually happens, and they need to lead to actions that are realistic for the team that owns them. Otherwise the numbers become a monthly ritual and the operation stays the same.

This post is meant to be generic and usable. If you want the technical context behind the data, read tracking and telemetry system architecture, alert fatigue in mobility ops, and ideal IoT update intervals.

Metric #1: on time is a range, not a single number

“On time” sounds simple until you define it. Arrived within 2 minutes? 5 minutes? 15 minutes? And which timestamp counts, the first arrival at the pin, or the first arrival where the rider actually boards?

The best operators treat on time as a distribution. They look at how performance behaves on normal days and how it behaves under stress. Averages hide peak pain. Percentiles reveal it.

A useful KPI review sounds less like “we were 92 percent on time” and more like “we were fine until 4:30 p.m., then curb dwell blew up and the 90th percentile got ugly.” That kind of conversation gives ops something to fix on the next shift. A single blended average usually does not.

I would also separate planned time from operational reality. If a pickup window is unrealistic, the metric will blame the field team for a promise the schedule never had a chance to keep. If the planned time is reasonable but execution is inconsistent, then the metric points toward dispatch, staging, driver behavior, or field constraints.

The definition matters. Use one timestamp for operational control and another for customer experience if needed. “Vehicle arrived near the pin” and “customer boarded” are not always the same event.

Metric #2: cancellations and no shows tell you where your promise is breaking

Cancellations are often the earliest honest signal that your promise is slipping. Customers cancel when they stop believing. Drivers cancel when the work feels chaotic or unworkable. Operations cancels when the system is forcing bad choices.

Do not lump all cancellations together. If you cannot tell the difference between customer initiated, driver initiated, and ops initiated, you cannot fix the root cause.

I would also track when the cancellation happened. A cancellation 12 hours before service has a different meaning than one that happens after a driver is already nearby. Late cancellations can be a symptom of bad ETAs, poor customer communication, driver availability, confusing app flows, or unrealistic dispatch rules.

No-shows deserve the same treatment. A customer no-show may be a customer behavior issue, but it may also mean the pickup location was unclear, the vehicle arrived at the wrong entrance, or the notification system failed. If the metric stops at “no-show,” the team may miss the operational cause.

Metric #3: dispatch override rate is a truth serum

If you have any kind of automation, optimization, or rules engine, you should measure how often humans override it. Not to blame people, but to find where the system is misaligned with reality. This is one of the fastest ways to tell whether your dispatch workflow and routing logic actually fit the day you are running.

A rising override rate usually means one of three things. Inputs got worse, the model is wrong for the day, or the workflow is missing an exception path so operators do the only thing they can do.

This is also why “time saved” claims can be misleading. If a tool saves time on paper but increases overrides, the operation pays the cost somewhere else.

The override reason is more important than the override count. If operators override because of bad addresses, fix address quality. If they override because wheelchair capacity is wrong, fix vehicle attributes. If they override because customers call with last-minute changes, the workflow needs an exception path.

We should not treat overrides as disobedience. Often they are the most honest feedback the system gets.

Metric #4: freshness and staleness should be visible, not buried

If your dashboards show a location pin but hide that the last update was 12 minutes ago, you are setting people up to make bad decisions with confidence.

Measure staleness. Make it visible. Track how often staleness shows up during active service windows. Many teams find this metric explains more operational arguments than any routing KPI. It is also one of the easiest ways to connect the dots between geofence failures and reporting cadence.

A practical freshness metric might split assets into fresh, delayed, and unknown. The thresholds should depend on the operation. A dispatch-heavy shuttle may treat 90 seconds as delayed. A low-motion asset tracker may be fine with 30 minutes.

The point is not to force every device into one definition. The point is to stop pretending every map pin has the same quality. When we make freshness visible, dispatch conversations become less emotional because people can see whether the data deserves trust.

Metric #5: cost per completed job, but only when the definition is stable

Cost per completed job is one of the few metrics that executives and operators can both respect, but it is easy to game if definitions change.

If you change what counts as completed, if you move work in and out of scope, or if you do not account for rework and support load, the metric becomes political. Keep the definition stable and the metric becomes useful.

I would pair cost per completed job with service quality. Cost without service quality rewards under-serving the operation. Service quality without cost can reward heroics that do not scale. The useful view is usually cost per completed job at an acceptable service level.

Metric #6: recovery time after disruption

Most teams measure whether service was disrupted. Fewer measure how quickly they recovered.

Recovery time matters because mobility problems compound. A late vehicle creates a queue. The queue increases dwell time. Dwell time makes the next trip late. If the team recovers in 15 minutes, the incident is contained. If the same disruption takes two hours to stabilize, it becomes the whole shift.

This metric pairs well with mobility service recovery. Define what “stable” means for the operation: headway back inside target, late queue below threshold, cancellations no longer rising, or active jobs back inside promise. Then measure time from trigger to stable.

How I would review the metrics

A useful weekly review should not have 40 charts. It should have a small set of metrics tied to decisions:

  • What got worse?
  • What constraint caused it?
  • Who owns the next action?
  • How will we know if the action worked?

If the team cannot answer those questions, the metric is probably too abstract or too far from the work. For example, “customer satisfaction is down” is a lagging signal. “Pickup window misses are concentrated between 4:00 and 6:00 in Zone B because dwell time doubled” is an operating signal.

Good metrics make the operation more honest. They surface constraints early and guide tradeoffs when volume spikes. If a metric does not change what someone does on the next shift, it is probably just reporting.