Why we ask you to type a cancel reason
A list of preset reasons is easy to tap and almost useless to read. We replaced it with one honest question, and a gentle check that keeps "aaaa" out.
Nobody likes cancelling an order. If you are doing it, something went wrong: the wait got too long, you ordered from the wrong address, plans changed, or the restaurant called to say an item was out. Whatever it was, it is the single most useful thing you can tell us, because it points straight at what we need to fix.
For a long time, we asked in the least useful way possible.
The trouble with presets#
When you cancelled an order, the app showed a short list of reasons with round buttons next to them. Pick one, tap Cancel, done. It looked tidy. It produced tidy charts. And the charts were mostly fiction.
When people are in a hurry, they tap the first option that is close enough, or simply the first option. A list of three or four choices cannot hold “the restaurant said the chicken is finished, so I’ll order later” or “I put the wrong landmark and the rider can’t find the lane”. Those end up as “Other”, or worse, as whichever reason sat at the top of the list.
We saw the same thing on the rider side first. Riders cancelling an order picked from a list that included things like “insufficient fuel” and “customer refused the order”. When we looked closely, the reasons did not match what had really happened. The list made it easy to give an answer and hard to give the true one.
One question instead of a list#
We changed the rider app first. To cancel an order, a rider now types a short reason in their own words. “Bike puncture near Dhulabari chowk” tells our operations team far more than a radio button ever did, and it reaches every screen they use to review that order.
Our next customer app update does the same for you. The cancel sheet asks one question:
Why do you want to cancel?
There is a text box, a Cancel order button and a Keep order button. That is all. It is the same sheet whether you cancel from the live tracking screen or from the order details page, on iPhone and on Android.
Keeping “aaaa” out, politely#
A free text box has an obvious weakness. If someone just wants to get through the screen, they will type “hhh” or “jjjj” or mash the keyboard. That is no better than a random preset.
So the app checks the reason before it is sent. It is not trying to judge your reason, only to make sure it is a real sentence. A reason is turned away if it:
- has no letters at all,
- is mostly the same letter repeated,
- is the same word over and over,
- is a run of keys from one keyboard row, like “asdf” or “qwerty”,
- is a single word, or too short to say anything.
Reasons written in Nepali are welcome and skip the checks that only make sense for English letters.
We tried hard to make the check feel calm rather than strict. While you are typing a short reason, the app shows a quiet hint with how many more characters are needed. It only shows an error if what you typed looks like keyboard mashing, and only after you pause for a moment, so it does not flash red at you mid-word. If you tap Cancel order with a reason that is too short, the box gives a small shake and tells you what is missing.
And one rule we did not bend: Keep order is never blocked. You can always change your mind and keep your food.
Why we did not make the server strict#
You might expect the server to reject short reasons too. We decided not to. Older versions of the app still send preset reasons, and some of those are short. If the server suddenly demanded a long typed reason, people on an older app would be unable to cancel at all, which is much worse than a short reason. The check lives in the app, and everyone gets it as they update.
What we lose, and why it is fine#
Free text is harder to count than a list of five buttons. Some of our internal charts that grouped cancellations by reason are messier now. That is a trade we made on purpose. Our main view of cancelled orders already groups them by who cancelled and when, which does not depend on the reason text at all. The typed reasons sit on top of that, one order at a time, and they are true.
A tidy chart of guesses was never going to help us make deliveries faster or restaurants more reliable. One honest sentence per order will.
What happens to your reason#
Your reason is attached to the order and read by our support and operations team. When the same kind of reason keeps appearing for a restaurant, an area or a time of day, that is where we look first. If something went wrong on our side, the reason is also what lets support follow up with you properly instead of guessing.
So the next time you cancel, and we hope it is rare, a sentence or two is all we ask. We do read them.