Packing Slip Routing Optimization: How Our Expanded Warehouse Made Our Packing Slips Obsolete & How We Improved Them

We recently completed our warehouse renovation just in time for Memorial Day. I snapped a quick photo of the new space, which you can see we’re already utilizing:

Pure Adapt Warehouse Expansion

The big advantage of this new space is that we have almost 6,000 sq-ft more to dedicate to products. That means we can space products out better and reduce the usage of separate overstock areas. It also keeps the aisles and shelves more organized.

Deciding on the new shelving layout and product flow was pretty easy. We consulted with our employees, came up with an initial design, did another small set of tweaks, and then executed our plan as soon as we had the space available to us.

The resulting layout ended up adding quite a bit of complexity to our picking operation. We’ve long used the inventory zone system I wrote about in 2010 (and slightly improved upon in 2017). It became clear pretty quickly that this would not work for the new layout. Let me illustrate.

Before, we had a relatively simple layout. The shelves faced each other to allow for quicker picking, easier stocking, and the ability to have a team doing each at the same time without interfering with each other.

When picking, employees would simply grab a box and the packing slip would route them through the warehouse in zone order. So from Aisle 1 to Aisle 6, and within each Aisle from Unit 1-18. Pretty simple, and it was pretty effective for us.

However, with the new layout below, you can see pretty quickly that problems arise with that simple approach. With the introduction of a cut-through aisle, employees can now enter an Aisle from the Front, Middle, or Back.

If the Units outlined in red above had items in an order, the ideal route would look something like this:

Which isn’t in Aisle/Row + Unit order anymore necessarily. It’s much more complex. Almost like a GPS system.

We couldn’t think of any shortcuts, so I set out to build an entire routing optimization system to minimize steps. Essentially, at each step it’s looking at every other item on the packing slip, calculating the number of steps to get to that item by Front, Middle, and Back aisle entry, sorting all of those step counts, and then picking the item and entry point with the least amount of steps. Then for the next item, it does it all over again. It has a few other rules to minimize steps and ensure good flow, like it won’t bounce between Aisles (Aisle 1 needs to be complete before Aisle 2, Aisle 2 before Aisle 3, etc).

Unlike most projects, the volume of possible scenarios made it tough to test. I built the system in December and January, unsure of when we’d need to use it. By May we’d made some tweaks, and I’d run as many test simulations in as many ways that I could think of, but I really had no idea how it would work in practice, and no way to test it out slowly. The launch would be all or nothing during our peak season. The thought of this going wrong was very stressful.

Thankfully it all went well. There was only one minor bug that took a few minutes to fix on Day 1, and other than that it’s gone pretty smooth so far.

A system like this is really key for us. We strive for fast and affordable shipping on every single order. The “fast” part of that requires that we have very efficient warehouse operations. Our employees don’t waste steps, which is good for them and good for us. We’re able to ship out a lot of orders in a very short time, with minimal mistakes, and a pretty small crew.

4 comments on Packing Slip Routing Optimization: How Our Expanded Warehouse Made Our Packing Slips Obsolete & How We Improved Them

  1. Rob says:


    Looks awesome.

    It seems like you could have avoided the routing system by renumbering the racks though? I’m sure I must be missing something but I can’t figure out what.

    • Adam McFarland says:

      Thanks Rob. That’s a pretty detailed diagram! We actually didn’t consider that specific option, and it’s pretty close. Had we thought of that, we might have just rolled with that and saved the effort lol. Where it comes up short is in a scenario where you have items in your Aisle 1 – Unit 3, Aisle 2 – Unit 1, and Aisle 2 – Unit 27. After the first item, you’d want to go back out front and go to Aisle 2 – Unit 27 before Aisle 2 – Unit 1. But if the first item was Aisle 1 – Unit 19, you would want Unit 1 first, but you’d want the packing slip to specify using the Back entry instead of Middle entry. Maybe that’s not the best example, but there just seemed to be a lot of little scenarios like that where we could save a few steps or clarify the entry point for our picker.

      • Rob says:


        In your example, why would you want to do unit 27 first? That would mean carrying that item down to the far end of the warehouse and back. Whatever the routing system, one way or another you’d be walking down to the far end of the warehouse.

        In the second example – this could perhaps me mitigated by making your “box” aisle aisle 1, or making the box aisle open at the end furthest from the loading doc and then reversing all the numbering on the other aisles.

        I also made the assumption that the shelves don’t go right to the wall on the side furthest from the doc, so you only have to walk each aisle once, rather than doubling back to get out and into the next one. Same reason I numbered them alternating sides.

        I dunno – I’m sure there are a bunch of situations where your system is superior but I hate complex systems if they can be avoided!

        I have to say, your stowing and pulling aisles are a neat idea, I suppose the stowing aisles serve as extra case storage and ensure proper stock rotation too.

        • Adam McFarland says:

          Ah, you’re right. It’s been a long day. I was thinking in terms of minimum steps to the last product because that’s how I programmed, but really steps to the packing area matter too. We just decided not to program for those since it’s variable based upon shipping service and how busy the packing area is.

          The more I think about it, in terms of ordering items on the packing slip, the two are probably functionally equivalent. And like I said earlier, had we thought of your idea we probably would have rolled with it. I’m slightly embarrassed that we didn’t!

          However, I can still think of a few things where our method is better for us: a more logical / easy to remember numbering system (always start at 1 in the front, larger numbers are in the back), and specific instructions on whether to enter the row from the front, middle, or back because we know which one is the least amount of steps. Both make training new employees easier, and the latter takes away the thought of “which way is fastest to my next item”. When you’re standing there deciding whether to go left or right hundreds of times per day, I can see this making a small but noticeable difference.

          So, I’m not sure now that I’d necessarily do it this way again lol, but it was more or less a one-time programming project that we should reap the benefits of for a long time, so I don’t necessarily regret it either.

Comments are closed for this post.