In-Depth: Overhauling Our Dropship System

Like most online retailers, we don’t stock everything that we sell. Some items, like pressure washers, extractors, and paint thickness gauges are too bulky and/or too pricey for us to stock and ship. In these cases we “dropship” the item, meaning that when the customer orders it we then place an order with the manufacturer to have it shipped direct to the customer.

While these orders are a small minority, they’ve been steadily increasing over the years. Our previous system mentioned to customers during checkout that the item would be shipping direct from the manufacturer, but that was it from their perspective. On our end, we’d get kicked an automated email with that customer’s information so that we could place the order with the manufacturer. If we received tracking information via email, we’d forward that along to the customer.

Why our old system wasn’t working

Over the past year this system started to break down:

  • Customers would often miss the notification on the checkout page and be upset when they got their shipment and it was missing the largest product in the order.
  • There was no way for customers to check on the status of a dropship after checkout. This led to an understandable sense of anxiety about where their order was, especially because these typically take longer to be delivered than an order shipping from us.
  • We had no system internally to track whether or not a dropship had been submitted, nor did we have a way to check on tracking information. This became problematic when our main person would take vacations and pass off coverage to someone else.
  • Dropship related customer service was quickly becoming some our most frequent and time-consuming questions.

We set out earlier this year to entirely overhaul our systems to save time internally and – more importantly – to do a better job communicating to our customers. These customers are often making large purchases and we owe it to them to give them a top notch experience.

It should be noted that we don’t actually refer to dropships as “dropships” to our customers. It’s not a commonly known term, so we use variations of “shipping directly from the manufacturer”

Our new system from the customer’s perspective

We’re now going out of our way to ensure that the customer is in the loop throughout the entire process. It starts on the item page, where beneath the “Add to Cart” button we display a message:

Dropship add to cart

During checkout, dropship items are separated from items shipping from us, with an estimated ship time that is custom to each manufacturer:

Checkout dropship

After placing an order, the Order Status page has dropship shipping information:

Dropship order status

That same information is now on display on the customer’s My Account page when they view the order. Orders can be complex because they can have multiple dropships from different vendors in addition to ordering from us. In this example, they ordered products from us as well so in the “Status” column it has shipping information from us along with “Expand for more details” to let them know to expand for the dropship item. Since each dropship item can have a different status, that’s listed right beneath the individual item:

My Account dropship example

We also introduced a three-email chain to reinforce that the item is shipping from the manufacturer, the approximate ship and delivery times for that manufacturer, and what the current status is:

  • Email #1 – sent immediately after purchase
  • Email #2 – sent as soon as we’ve submitted the order to the manufacturer
  • Email #3 – tracking information

Email #1 and #2 are very similar and in a lot of ways redundant in the information that they provide, however it had become enough of a source of confusion that we decided to default to over-communicating.

Our new system on the back-end

On the back-end, we’re now tracking the status of every dropship order. There should be no more confusion internally about whether an order has been submitted or now. We can use this to mark an order submitted, or to enter the tracking number as soon as the manufacturer sends it over to us.

Most orders get emailed in, so one of the coolest things we built was automatic submission for those manufacturers. Once an order passes through our fraud checks, the system emails the manufacturer with the product(s) and customer’s address, and CC’s us on it. This saves us a ton of time, reduces mistakes, and gets orders out to our customers just that much faster.

Programmatically speaking, this was much more challenging than I had anticipated because of how the items needed to be grouped. You can’t just list them out by DI Order #, because someone could order from multiple dropship vendors, each of which could be in a different status. You could list them out individually irrespective of order and manufacturer, however if a customer orders a handful of products from one manufacturer we want those auto-submitted all in one email. So, ultimately they’re grouped by manufacturer within each Order #, but each item can still get its own tracking information because a manufacturer might not ship two (or more) items together.

Putting this all together, the new flow usually goes something like this:

  • Customer places order.
  • In addition to the normal email receipt, the customer receives Email #1.
  • Once the customer passes our fraud checks, it’s automatically submitted to the manufacturer and they’re sent Email #2. If the order doesn’t need manual intervention for fraud purposes, this can happen in a matter of minutes.
  • The manufacturer sends us tracking information. We add it to our back-end, which triggers Email #3 to the customer.

This system went live earlier in the summer and made an immediate impact. It was one of those projects that kept expanding in scope from a programming perspective. I thought it was never going to end, but the final result is a massive improvement for us and for our customers.