
How GrubHub.com confirms with restaurants that they placed a delivery order - enki
https://www.grubhub.com/img/orderStatusBar.gif
======
Tichy
So they are faking it? I don't completely understand what this is about? Who
is GrubHub?

~~~
leej
It's online food delivery site. It gets orders from customers, routes back to
the restaurant and gets a cut from the process. Basically it's a middleman.

------
patio11
Covered on their blog here:

[http://74.125.153.132/search?q=cache:ZKDGeJv_cpoJ:blog.grubh...](http://74.125.153.132/search?q=cache:ZKDGeJv_cpoJ:blog.grubhub.com/inside-
the-order-trail-at-grubhubcom+grubhub+progress+bar&cd=1&hl=en&ct=clnk)

Actual process:

1) Customer hits submit.

2) Order gets added to outgoing queue. (It will be faxed.) (I don't _know_
that they do it with a queue, but that is the obvious way to do it.)

3) Customer sees next page in flow, including progress bar.

4) Possibly before or after #3, order gets faxed to restaurant.

5) A computer system telephones the restaurant and asks "Did you get that?" If
yes, the order is updated with a timestamp, and a confirmation email is sent
to the customer including the timestamp of when the order was manually
confirmed by the restaurunt. If not, the customer service team gets involved.

So that's what we know. Here's my conjecture: there was a business desire to
tell customers their orders were Good To Go but this could not be done
conveniently within the standard expectation of the HTTP cycle (i.e. really
freaking fast). Since if you call a restaurant yourself you get what most
customers consider 100% assurance that the order is Good To Go (even though,
hypothetically, the kitchen could still throw a FatalOutOfCheeseError), doing
the 100% literally accurate thing and telling the customer "Your order has
been put on the fax queue. It will probably be confirmed within a minute or
two." makes you look less than competitive with the most competitive option,
which is doing the phone call yourself, and will confuse users who do not
understand what status their order is in. They're going to do things like e.g.
call to check, which duplicate effort and cause problems for both GrubHub and
the restaraunt.

Still hypothesizing: some bright person said "Look, everyone knows it
sometimes takes a minute to get an email when you ask for it on a website. The
overwhelming majority of our orders get successfully confirmed by the
restaurant within 2 minutes of hitting the submit button. How about we tell
them its confirmed, _meaning_ that it is on our outgoing queue? We're positive
of that because we can guarantee it in the HTTP request/response timeframe
ourselves. After it goes on the queue, it _will_ get delivered to a human at
the restaurant -- either the employee picks up the phone and confirms it, and
the customer gets an email saying so in the window they expect, or our CS call
them and manually place the order. Is it possible that for reasons beyond our
control that the order could not be placed even with one of our humans on the
line? Yes. But that is the same as the FatalOutOfCheeseException. In that
case, we'll call them back and apologize, tell them this essentially never
happens (which is true), and possibly offer to buy them dinner if they're
upset."

I am about to say something heretical: I do not believe that telling users
untrue things is necessarily a bad thing. For example: most of us understand
that a when our systems say "File deleted!" it really means "File looks like
it is deleted to you!" I don't think that is a bad thing -- it abstracts away
implementation details which most of our users wouldn't understand and can't
be bothered with. Imagine what would happen if we said, e.g., "We have
deallocated the space for the file and it may be deleted at a nondeterministic
time in the future depending on your particular disk usage patterns. Confused?
Here's the number for support."

Let he who accurately and completely explains to a user what deleting a
$RECORD_APPROPRIATE_TO_YOUR_APP actually _does_ cast the first stone.

~~~
endtime
Thanks, that was interesting and thoughtful, and I agree in general. However,
in this case, I don't think it would be so bad to say something like, "Your
order is in our system. We'll confirm that the restaurant got it correctly and
email you in a couple minutes."

I think the most amusing part of this whole thing is that there's no way any
user actually believes there are ~100 discrete steps to the order placement
process, despite the high "progress resolution" of the progress bar.

~~~
patio11
Twenty seven seconds.

Twenty seven seconds is how long it took one of my customers to a) click from
my site to Paypal (T = 0), b) authenticate with Paypal, c) authorize the
transaction, d) return to my site, and e) email me asking me why they hadn't
gotten their Registration Key yet despite the fact that promised it would be
delivered "instantly". (T = 27)

They eventually got their Registration Key in 33 seconds (well, that was how
long it took for them to click the link in it), and a few minutes later got it
resent by me, along with an apology for taking so long. (The cause was the
customer winning the race back to my website with Paypal's IPN trailing
behind. It happens -- their bank took a few seconds longer to authorize it
than usual, it fell into a verification queue, gremlins ate an HTTP packet,
whatever.)

Now, I have a certain amount of luxury in dealing with customers with high
expectations as to my availability, because I clear $30 on every order and if
10% of them want to chat, well, I can deal with getting paid $300 per email I
write. However, if I were running a business which processed thousands of
transactions a day, and I made about a buck an order prior to paying my CS
staff, I would put a significant amount of effort into making sure that you
didn't become an emergency for my CS team just because you had to wait twenty-
seven seconds.

~~~
drusenko
My favorite are customers that email in a problem, then email in again, then
email in again... Then email in that "THEY'VE EMAILED THREE TIMES AND HAVEN'T
GOTTEN A RESPONSE!".

That, obviously, is quite worrying. So you investigate as to why they haven't
gotten a response by their fourth email, and discover that all were sent
within 7 minutes of each other in the dead of night.

Yes, some customers are just too much fun.

------
maxniederhofer
"This call may be monitored to check for awesomeness" always makes me smile.
It's the little things...

~~~
pbhjpbhj
I wonder if they check for anything else if it counts as a violation of ones
privacy.

------
sbhat7
The link is pointing to an image. This is the actual link

<https://www.grubhub.com/>

~~~
dylanz
Not sure why you got down voted. I was a bit confused why when I clicked the
title of the post, I was looking at an animated gif. I actually watched the
entire animation waiting for something to happen.

------
lexx12
OMG, can't believe their progress bar is just a bling-bling.

------
petercooper
Oh thanks.. now I've just placed an order I didn't want. Don't click. It
orders food.

~~~
petercooper
Well whaddyaknow, I have a guy at my door with a vat of falafel. It's quick;
I'll give it that.

