Why do Ride-Hailing App Drivers Accept Your Order then Request You to Cancel it?
I mean, why not reject the order in the first place?
If you are like me, an office worker in Jakarta in your 20s, chances are that you frequently use ride-hailing apps such as Grab or Gojek (Indonesian version of Uber/Grab) for your daily transportation needs. Chances are, you also had your order cancelled several times, or the driver accepts, then he/she calls you and requests that you cancel the order.
Then, you wonder, “If they are not going to take the order, why do they accept it in the first place?”
Earlier today, I ordered a Go-Car ride (like Grab/Uber…but you get cars) from Plaza Indonesia. I used Go-Car since it was still raining pretty hard while I needed to go to a client’s site for work purposes and the transportation cost is reimbursable after all.
A driver accepted my order, then I messaged the driver that I’d be waiting at the lobby just like a good passenger would.
After that, the driver called me.
Driver (D): “Is this Mr. Ivan? I’m your Go-Car driver.”
Me: “Yes, good afternoon. Please pick me up at the lobby as indicated in the app. Thanks!”
D: “I’m sorry Mr. Ivan, can you please cancel the order?”
Me: “Eh?”
D: “My mother is sick and I need to go home, can you please cancel the order? And please don’t tell the app that ‘driver requested to cancel’.”
Hence, as you all would do, I wondered myself, “If your mother is sick and you can’t take my order, then why the hell did you accept my order only to ask me to cancel it? You are wasting my precious few seconds.”
Since I’m cool, I cancelled the order and marked it “I found another means of transport”.
The question sticks. Why? Then I ordered a Go-Ride (Grab/Uber but…motorbike) because somehow the rain had stopped. It was a 12 KM ride. A driver accepted my order and off I go to my client’s site. Along the way, like any good passenger, I spoke a bit with my Go-Ride driver. I asked him why drivers accept orders then they request the customer to cancel it.
“Because if we reject the order, our rating will go down”, he replied.
It makes sense then, for a driver to avoid rejecting orders. But how do orders appear to drivers in the first place anyways?
The Order Accepting Process
To get a better understanding of the issue, it is paramount that we first understand the business process. I performed an inquiry with the Go-Ride driver about the general process of accepting an order to gain a preliminary understanding of the business process. I hope this is somewhat accurate.
So the first thing I noticed from what the driver said was that they only have 5 seconds window to accept or reject an order. Regardless of the accuracy of the time estimation, he said that it causes drivers to not read the order description and just accept them because they are afraid of missing out on orders. Accepting orders is important for their incentive scheme as some of you may already know, Drivers get “points” for completing orders which can be converted into extra money for them.
Hence, the “auto-accept” feature. Which will make them accept every order that appears on their driver app. Since this is automatic, this also causes drivers to not read the order description before accepting them.
That’s why sometimes the driver calls you and requests you to cancel the order because you are too far away (and then you ask again, if the driver is too far then why the hell did they accept?). The process is geared to incentivize drivers to accept orders regardless of the order’s description.
You might think that by lengthening the time limit for accepting order from 5 seconds to…maybe 10 seconds would fix the problem. Except it won’t. There is another reason why drivers are in a hurry to accept orders other than the app only allowing 5 seconds to do so.
They are competing with other drivers for that one order.
So if we lengthen the time window from 5 to 10 seconds, the result would be the same. Drivers would still turn on their auto-accept feature or just outright accept without reading the order description. So we have another problem in our hands. How do we lessen this competition for orders between drivers, or rather, how do we ensure that an order will only reach those in a reasonable position to complete the order? So here we have two problems:
- Drivers accepting every order and not reading the order description because rejecting an order decreases their rating.
- Drivers competing with each other for an order causing drivers to accept rides wantonly and not reading the order description.
How do we make this better? Let’s try to:
- Lessen the competition between drivers.
- Make sure drivers accept only orders they can satisfactorily complete.
Why do Drivers Compete over One Order?
I believe the answer lies in the incentive scheme, the “point” system (it is in Indonesian). In a nutshell, drivers receive “points” for every order they have completed, with additional points if orders are done:
- in a particular area
- in a particular time (16.00–20.00 or in the weekends)
Because the incentive scheme is based on how many orders they have completed, the focus become to complete as many orders as possible. Hence they try to accept every possible orders. If they can’t reasonably complete the order, they’ll just request the passenger to cancel.
What if we change the trigger for the incentive into “points for every order that were satisfactorily carried out?”
We begin by defining what is a “satisfactory” ride. From a passenger’s perspective:
- Driver does not take too long to arrive at the pickup point.
- Driver completes the ride within reasonable time frame (not taking unnecessary detours)
- Driver is not rude (of course), we can ignore this one since it’s already taken care of by the 5-star rating system
For the first point, the idea is to only award points to drivers who do not take too long to arrive to the pickup point. For this to work, the passengers (that’s us) need to have an option to specify on how long we are willing to wait for the driver, like 5 to 10 minutes, or if you are not too picky you can just let the app to randomly match you with the driver with their usual algorithm.
But should you choose to specify that you are only willing to wait for 5 minutes, the app should only match you with drivers that are less than 5 minutes away. So here we are creating some kind of consent between passenger and driver.
The driver then is expected to arrive at your pickup point in less than 5 minutes. Drivers who take longer will not receive point (or a deduction to the points multiplier).
The second point is actually not really related to the issue of drivers cancelling orders. It is more of a fraud prevention measure, the ones using multiple fake driver/passenger accounts. The idea is for the ride-hailing app to always track a humanely possible estimated time of arrival to a destination and track a “ride” for every unnatural speed of completion.
Presumably, fraudulent drivers use hundreds of fake accounts and most likely won’t be able to track every single ride they are creating. These fake orders are presumed to be “completed” faster/slower than if the order is carried out by a real living human (most likely fake orders are completed faster than naturally possible, since the point of creating fake orders is to gain as many points as possible to convert into bonus). Therefore, any order that is completed in an unnatural amount of time compared to the app’s internal estimation would be marked for further investigation.
The point of changing the focus from “completing orders” into “satisfactorily completing orders” is to shift the objective from completing as many orders as possible to gain more points to completing as many orders while still maintaining a decent standard of service.
Why Don’t Drivers Read the Order Detail?
After making the drivers accept only orders which they are confident to be able to satisfactorily complete, drivers are hoped to be warier and pay more attention to the order details. For example, for a Go-Ride order we can put an emphasis on “estimated time to pick-up point” and “order destination” on the notification that appears on the driver’s app. This is to ensure the drivers actually know what they are getting into. In the case of Go-Food order, put an emphasis on “amount of money required” to buy the ordered food. Thus, no more “Sorry miss. I don’t have enough money. Please, cancel the order.”
Anyways isn’t this the UX’s job? (disclaimer: as of this writing, I have not yet seen the actual order prompts from the driver app)
tl;dr
So there you have it, my take on how to improve customer’s experience from a passenger’s perspective. In a nutshell, what I propose is:
- To prevent drivers from accepting orders blindly, we need to make sure that they read the order description, and they are not in so much of a hurry competing for orders with fellow drivers.
- To make sure they are not in such a hurry competing for orders, we make that it is no longer advantageous to merely complete an order. They must do so within several new parameters (such as not taking too long to the pickup point, completing the order in a humane amount of time) to get their “point”. Blindly accepting orders and carrying them out poorly should be penalized.
- The order prompt in the driver app, if possible, should make it clearer of what is required of the driver (such as time and distance to pickup point, destination, money needed for Go-Food order).
I hope that I can at least start discussions about this. Would be happy if any of my ideas is considered by them ride-hailing app bigwigs though. Would even be happier if someone pointed out a better or simpler solution.
Whatever the solution is, what we can all do is to at least think twice before reporting the driver, taking it out on social media, or…feeling angry at the driver.
After all, they cancel your order because the bonus point policies are somewhat designed to incentivize the drivers to accept riders wantonly and cancel later. They are not totally wrong, after all they are still humans, who in turn (borrowing the words of Freakonomic’s authors) respond to incentive.