Our New Customer “Self Service” System Is a Game Changer

The massive project that I referred to a few weeks ago is what we’re referring to internally as “customer self service” because it allows customers to instantly resolve a variety of issues without needing to contact our customer support team. It’s been live now for a few weeks and we can already see the huge impact that it’s going to have on our business.

What It Does

There aren’t very many online retailers with functionality like this, and I’m sure one of the reasons why is the massive amount of systems that need to interact seamlessly to make it work.

Customers can add to their order, remove items from their order, or cancel their order before it ships. After it’s shipped, they can report missing, damaged, and incorrect items in their shipment by selecting the affected items, uploading photos, and selecting whether they want a reshipment, refund, or store credit. There are a bunch of ways to access these features, but the most common way is within a customer’s My Account page as the image below illustrates.

Detailed Image My Account Options

This was as challenging of a programming problem as I’ve tackled in a long time. We literally spent years talking through these features because they open up a pandora’s box of crazy scenarios. For instance, if a customer is adding to their order and we ship the order, what happens? Should we hold the order until they finish? What if they start adding to it and forget? If we do hold it, how long should we hold it for? Will customers be upset if they get their order late because they were mid-add when we would have shipped it? And so on.

(In this situation we came up with what I think is a pretty elegant solution. When a customer adds to their order (which can only be started before the order ships), they’re effectively placing an entirely new order with free shipping, the same shipping service as the original order, and the same shipping address. From their standpoint there are only a few clicks and we do a pretty good job of walking them through the process in a reasonably fool proof fashion. We already had a “merge order” system in place for orders going to the same address with the same shipping service. This allows our warehouse team to combine packages to save us on shipping. In these cases, we’ll merge the orders if we can, but if something happens – like a product in either order goes out of stock or we ship the original order while they’re checking out – we just send a second shipment. But I digress…)

There were dozens of similar scenarios that took a long time to plan out before launching. I could go on and on. However, an entire post about the programming challenges is less interesting I think than the reasons why we’d build such a system and what it means for us moving forward.

Why We Built It

This is an awesome feature for our customers, especially our power-users. By our estimates customers can take care of ~95% of the edits to their order on their own now instantly. Convenience aside, we hope there is a measurable ROI on this project by making it dead simple to add to an existing order.

There are also some HUGE wins for us internally:

  • We have less pressure to cover customer service during nights, weekends, and holidays because most customers can resolve most urgent issues on their own
  • We’ll receive less customer service email, which will delay hiring another full-time customer support employee
  • When we do hire, it will be much easier to train a new person
  • If someone is on vacation or out due to an emergency, there’s a lot less urgent customer service to cover
  • We’ll have better data for reporting purposes, in particular for the missing/damaged/incorrect items

Essentially, we’re scaling by automating.

The 6 Week Version

I could have easily spent several months developing this, if not longer. We had scoped out complex variations that went much further and would have taken much longer. Ultimately though, that’s not a good business decision. I was able to release the 6-week version that covers most situations a few weeks before Thanksgiving. The system got used a ton during our busy holiday stretch, and subsequently I’ve spent the past few weeks tweaking things and fixing bugs. As I write this about a month after launch, the system is much much better than it would have been if I had spent another month refining it before releasing it. There is no substitute for the real world stress test.

Just as we were releasing this system David Heinemeier Hansson wrote a timely post entitled Constraints only work if they hurt. I think the 37Signals/Basecamp 6-week development cycle makes a ton of sense:

This might make it sound easy to ship great software on time, but of course it’s not. Because like any good constraint, it hurts when its working. We have to kill our darlings all the time. Features, settings, considerations that we really think are important have to be cut constantly. When something you believe to be important doesn’t make it, it hurts.

But it’s also the right thing to do. We’ve proven that time and time again. Things we thought were terribly important in the heat of the argument frequently turns out not to matter at all. And above all, the discipline and the habit of shipping software every six weeks (or thereabouts) is worth some real sacrifice.

So Far, So Good

The very first customer to use the system put a big smile on my face. They were a new customer who spent around $100 on their first order with us. A few hours later they added an applicator pad to their order. We combined the applicator pad into the original package and shipped it out. The only Detailed Image that customer knows is one where it is super simple to edit or cancel your order.

The feedback we have received has been almost universally positive. I’ve seen several variations of “thanks for making it so easy to do this!” With all of the usage we have had, we haven’t heard from a single customer who couldn’t figure out how to use the system.

As far as trends go, there have been a lot of people adding to their order, especially during the big sales. When people have removed or canceled, most of the time they’ve placed another order shortly thereafter. Even if they don’t, I think we still win by making it so easy for them. They’ll hopefully remember that next time they shop for detailing supplies.

This is one of those projects that I’m really proud of for so many reasons. It was very challenging, and therefore very rewarding to see come to fruition. I’m excited to see how it impacts the business during the busy season this Spring, as well as how it changes things internally as we continue to grow our team.

6 comments on Our New Customer “Self Service” System Is a Game Changer

  1. Scott says:

    A very timely article – at least for me. Not an hour ago I placed a two-item order on Amazon. Immediately after I placed the order I thought, “Ya know, I’d like to add an item”. I logged into my account and found that I could not add to the order – I could change a lot of things or cancel it but (unless I overlooked it) there was no way to add to the order. So…for now the other (implulse) item goes unpurchased (a virtual “abandoned cart” that they never knew was there). Your self-service feature is a double win. A) Increased customer satisfaction and B) Increased sales.

    Your 6 Week Version also mirrors one of my favorite quotes. “A good plan violently executed now is better than a perfect plan executed next week”. – George S. Patton

    Keep up the good work (And I’m not even a customer – I just enjoy your blog)

    • Adam McFarland says:


      Thanks for reading, I’m glad you’re enjoying the blog.

      Honestly, I’m shocked that Amazon doesn’t have that feature. I thought for sure that they did, although now that I think about it I’ve only canceled orders. I did some Googling and couldn’t find anything conclusive. A few sites mentioned that after you place a second order Amazon will sometimes display a “Want to combine orders?” button, but that’s an entirely different consumer experience (although from a tech standpoint, it’s exactly what we’re doing).

      I love that Patton quote too!

      – Adam

      • Chris Hynes says:

        I think Amazon does the combining automatically under the covers, depending on what is coming from what warehouse. I’ve definitely had some things shipped next day that combined with items I ordered using slow shipping, which was a nice surprise to get the items earlier.

        If you’re not paying for shipping anyway, it doesn’t really matter to the customer which “order” its in, does it? Amazon will run logistics and combine whatever outstanding items it can into the most efficient set of shipments. Although receiving a quarter inch plastic fitting all by itself in a 12″x12″x6″ box can’t be _that_ efficient — I’ve had that happen several times.

        • Adam McFarland says:

          That’s true Chris, good points. Multiple warehouse makes things much more complex. I’ve also had orders combined from them. I don’t pay for shipping as a Prime member, but if I was paying shipping on both items I wonder if they’d refund some of the shipping charges if the orders got combined?

          Just like you I’ve also received small things in gigantic boxes from them and it always makes me wonder whether they’re so big that it doesn’t matter to them, or if it’s a problem they just haven’t tackled yet. I would think at their volume it would matter, but who knows what type of shipping arrangements they have with USPS/FedEx/UPS. They might not pay DIM weight rates. If that was the case they’d only pay by weight and wouldn’t care about box sizes.

  2. Tim says:

    Congrats Adam, quite an impressive bit of functionality you added. A great example that no one will understand how much effort, planning, thought and testing went into creating a “simple” feature.

Comments are closed for this post.