tags:

views:

73

answers:

4

I am one of the web developers for a small-but-growing e-commerce site. It is now getting about 150 orders per day, and a lot more on Cyber Monday. This is enough volume so that the small fraction of users who have hard-to-reproduce problems are causing significant heacache. My theory is that one of more of the following are true:

  • The customer is on an unusual browser / OS
  • The customer experiences a network glitch
  • The payment gateway takes too long to return a response
  • The customer somehow hits escape or the back button during a critical moment in the ordering process
  • The customer closes their browser
  • The customer's browser just refuses to navigate to the next page

The end result of these problems is usually that a customer unknowingly gets their credit card charged, and often attempts to place a second order. In that case a refund has to be issued on one of these duplicated transactions.

Although I would like to convince my client that there will always be a "normal" percentage of orders that have "weird" glitches, I don't know what "normal" is.

My question is therefore:

In your experience as an e-commerce developer, what is your observed rate of these glitches?

Alternatively, if you can point me towards statistics, that'd be helpful, too! I haven't been able to find any.

Thanks!

ps. I know that it would be ideal to fix the root cause of such problems, but I simply have not been able to reproduce the problem, even after submitting hundreds of test orders.

A: 

Rather than guessing, I'd try to assert how the errors are raised, build a simple form where users can leave you the browser they used, system specs (maybe) and the steps to reproduce the defect that araised.

Then with that information you can debug your app, make unit tests and fix these bugs, or reduce them to a form where they won't impede your users from buying stuff at your site.

Nico
Although we have detailed tracking of user-agent, and web log files, the problem still cannot be reproduced, even across multiple browsers and OS'es. For the purposes of this question, I'm more interested in the rate of "unreproducible" errors.
hbz
A: 

It's very likely that your problems would be caused by the reason you listed above - apart from any bugs in your code, of course.

But is that a good enough explanation for your client? As the application traffic increases these problems are likely to increase as well.

You may need to implement a more robust process that can handle unexpected problems, so that customers are not charged unless you have captured their order or they are notified by email that their order completed / something went wrong / what action they should take.

edit: Your question is when to stop improving the website. I think this depends on the level of service (read: time) you want to give to your client vs their expectations of what they have paid for.

How you deal with it forms part of your business strategy, but my approach would be to very honestly show them a list like this with time estimates to fix each item. Ensure they understand the diminishing returns that each of these fixes achieves. Give them something for free, and charge them for anything else. Negiotiate with them; give them a KPI or performance target that you guarantee to meet. It's important that they understand the costs involved in designing a near-perfect transactional system.

Kirk Broadhurst
This is true. We are planning to add some stronger duplicate order detection here. Still, we won't be able to solve 100% of the problems. And it feels like we are spending exponentially more time on handling sucessively smaller problems (percentage-wise). The big question is: Where do we stop?
hbz
+1  A: 

You know the old saying - "If you have to ask, you can't affort it"?

It applies here.

Scott Weinstein
A: 

Usually it is just one or two people with weird cards or weird browser/OS combo that cause all the headache, while all "normal" people proceed fine.

You better switch to a gateway that supports background processing (customer always stays on your checkout page while order info is packed into XML and posted to the gateway, and it instantly responds with any errors) - this will at least eliminate navigation problems for dummies.

Ilya Vassilevsky
This would be ideal, yes. However, we are trying to reduce our PCI burden, so we are using a browser redirect method. Do you have any experience with these navigation problems? I'd love to hear some statistics.
hbz
Usually all the problems are because PHP "loses" user session while the customer is coping with the third-party payment page. So when the gateway redirects the customer back to the store (to the Return URL), the store greets him like a new one, does not show any confirmation/success page about the order and the customer gets all panic and starts calling store owner and bitch about it :) That's why it is important to not let PHP handle the session stuff, but rather implement your own, more persistent stuff.
Ilya Vassilevsky