Bottom line up front: OMS order routing is a set of priority rules that answers one question — "which warehouse ships this order?" It asks five questions in a fixed order: ① Does this warehouse have the inventory? ② Is it close to the customer? ③ Is the cost sensible? ④ Does it meet the promised delivery time? ⑤ Did the channel or the merchant designate a specific warehouse? Get the order wrong, or skip any one of them, and it doesn't matter how well your WMS executes downstream. Routing is the most underestimated item on every go-live night checklist I've ever run.

Why Routing Belongs to the OMS, Not the WMS

Clients always look surprised when I say this in the kickoff meeting: splitting fulfillment across warehouses isn't decided by the warehouse management system. Here's the division of labor: at the moment an order is created, the OMS makes the logical allocation — this order belongs to that warehouse. The WMS just executes — pick it, pack it, ship it, in that warehouse. Routing is the decision; execution is the labor. A wrong decision executed perfectly is still wrong.

I've seen this exact failure three times. The most instructive one was a beauty brand in 2024: three warehouses in Ontario (CA), Dallas (TX), and Edison (NJ), running about 3,000 orders a day. Their routing rule, configured by the original implementer, had exactly one line of logic: route to the nearest warehouse by ship-to address. Sounds reasonable, right? The problem was the missing second rule: nobody configured an inventory availability check.

That September, two hero SKUs went out of stock in Ontario. The routing rule kept cheerfully sending California, Nevada, and Arizona orders to Ontario anyway. Orders arrived, there was no stock, and customer service reps manually transferred them to Dallas one by one. Ground shipping from Dallas to a California customer stretched from 2 days to 4–5, and each parcel cost several dollars more (check your carrier's current published rates for exact figures). In the month before peak season, cross-country transfers burned tens of thousands of dollars in extra freight — plus a pile of "shipping is so slow" one-star reviews. During the post-mortem, the ops director said something I still quote: "We thought the system was automatically picking the optimal warehouse. It was actually just automatically executing an incomplete rule."

The Routing Design Checklist: Six Steps

This is the checklist I walk through before every multi-warehouse go-live. Follow it and you'll dodge roughly 90% of the landmines.

Step 1: Map your warehouse network and service areas. Every facility's address, the states and ZIP ranges it covers, supported shipping methods (ground/air/same-day), and special capabilities (only one site handles hazmat or oversized items, for example). The output of this step is a table, not a vague impression in someone's head. Too many projects do this verbally and pay for it later.

Step 2: Define your routing dimensions — all of them. At minimum five: available inventory, distance to ship-to address, shipping cost, promised transit time, and channel or merchant designation. Each dimension needs a defined data source: is inventory real-time available-to-promise or a stale snapshot? Is distance straight-line or carrier zone-based? Does cost include just freight or also parcel packaging and labor? Any dimension left fuzzy becomes a blame game after go-live.

Step 3: Set priorities and weights — in writing, signed by everyone. This is the most important step and the one that starts the most arguments. My recommended default order: inventory (absolute veto — no stock, out of the running) → channel/merchant designation (absolute veto — if someone designated a warehouse, obey it) → delivery promise (if you promised next-day, stop talking about cost) → cost → distance. Note that distance and cost fight constantly: closer isn't always cheaper, and cross-country isn't always expensive. Carrier zone pricing is the only truth that matters.

Step 4: Write the exception rules. Rules cover 80% of orders; exceptions handle the other 20%. Examples: oversized items only ship from the site with a forklift; a certain channel's orders must ship from a designated warehouse (the marketplace audits ship-from location); high-value orders go through the site with better security. Exceptions belong in the system, not in the ops manager's memory.

Step 5: Define the fallback for when inventory runs short. Three options, and you need to decide in advance: ① split the shipment — ship what's available now, backorder or transfer the rest; ② transfer the whole order — move it to the second-best warehouse and eat the higher freight; ③ hold — wait for replenishment and accept the delay. Routing without a fallback means humans fighting fires when stock runs out. That's exactly what happened to the beauty brand above.

Step 6: On go-live night, create 50 test orders and run them through. Cover every scenario: no stock anywhere, stock in only one warehouse, a ship-to address equidistant from two sites, channel-designated warehouse, oversized items, peak concurrency. Manually verify the routing result of all 50. Two hours of work, and it catches at least half of all go-live incidents.

Close-up of a parcel sortation line where packages are routed to different destinations

Five Routing Strategies Compared

Strategy Logic Best for Cost
Proximity routing Ship from the nearest warehouse to the customer Single/dual-warehouse merchants with healthy stock Ignores inventory and cost; breaks on stockouts
Inventory-first Ship from wherever has stock Merchants with frequent stockouts on hero SKUs May ship cross-country at higher freight
Cost-optimal Rank warehouses by total shipping cost High-volume, thin-margin merchants Complex to compute; transit time may suffer
Speed-first Work backward from the delivery promise Merchants promising next-day or same-day Most expensive; fits high average order values
Designated warehouse Channel or merchant mandates the site Channel orders where the marketplace audits origin Zero flexibility; simplest rules

There is no silver bullet. The healthiest setup I've seen is layered: use "designated warehouse" as a hard constraint, "inventory" as the veto, then score the survivors on speed plus cost. Scoring should live in configurable weights in the OMS — when the business changes, you tune parameters instead of rewriting code.

Four Failure Modes I Keep Seeing

Failure 1: Routing by distance without checking inventory. I've seen this exact failure three times. The first question in routing must be "do we have stock?" — not "is it close?" And the inventory data must be real time. Routing against yesterday's snapshot is decorative during peak season.

Failure 2: No split-shipment rule, so the whole order waits on one missing SKU. An order has five line items; four are in stock at warehouse A, one is not. Without a split rule, the entire order sits for three days. With one, four items ship today and the customer experience is completely different. Splitting costs an extra parcel — settle that trade-off back in Step 3: below what dollar amount is auto-split allowed, and above what amount does it go to a human?

Failure 3: Channel priority silently overriding cost rules. One client joined a marketplace promotion that required shipping from a designated warehouse. Ops added a "channel designation" rule at the highest priority. Every order during the promo got locked to a single warehouse — freight doubled and the site blew its capacity. When channel rules and cost rules conflict, there must be an explicit arbitration order, and finance needs to know about it.

Failure 4: Nobody reviews the routing rules after go-live. You opened a new warehouse, closed an old one, renegotiated the carrier contract, the channel changed its audit rules — any of these can turn yesterday's correct routing into today's wrong one. My practice: review routing rules quarterly. Export the last 30 days of shipments that didn't go from the optimal warehouse, and calculate the ratio and the extra freight. The numbers will tell you whether the rules need tuning.

The Math: What One Bad Routing Decision Costs

Two hundred transferred orders a day for a month is 6,000 orders — tens of thousands of dollars in extra freight, before counting refunds and bad reviews from delays. Fixing the rule took one implementation consultant two days. Whenever someone asks me where the first dollar of a multi-warehouse project should go, my answer is always the same: get the order routing rules right first, then talk about everything else.

One thing you can do tonight: export the last 30 days of shipments from your OMS and check how many orders didn't ship from the optimal warehouse, and why. Missing rule, too many exceptions, or bad data? That number is your routing health score. Below 90 — don't rush to open another warehouse. Fix the rules first.

By Lin Xiao, WMS Implementation Consultant