Stock in the right place, order sent to the wrong one
You have a main warehouse, a second unit, and perhaps a shop or two that hold stock. An order comes in from Glasgow for items that are all in the northern unit, and it goes to the main warehouse in the south, which has to take one item from the other site first. Another order gets split into three parcels because one item was short at the first location, when a single other location had everything.
Staff notice and move orders between locations by hand. On a quiet day that is fine. On a busy one the orders that needed moving are the ones that slip.
Why the routing goes wrong
Shopify assigns orders to locations using its order routing settings, and those have become more flexible over time. For a simple setup they are enough. The trouble comes when your real rules are more specific than the settings allow, or when the stock figures the routing relies on are not accurate.
- Rules that depend on things Shopify does not know, like which site has capacity today or which courier collects from where.
- Preferences that change: shops keeping display stock, or a location that should only ship when others cannot.
- Stock that is not accurate at each location, so routing trusts a number that is wrong.
- Splitting that makes sense for some products but not for others, like fragile items that should never ship alone.
What bad routing costs
| Problem | Effect |
|---|---|
| Shipping from the far site | Slower delivery and higher courier cost |
| Needless split shipments | Several parcels, several labels, several delivery charges |
| Transfers to cover orders | Staff time and stock in transit that cannot be sold |
| Shops losing display stock | Empty shelves in-store to fill online orders |
| Manual reassignment | Someone watching the order list all day |
Courier costs are where this shows up first, but the transfer work is often bigger. Each time stock is moved between sites to complete an order that should have gone elsewhere, someone picks it, packs it, books it and books it in again at the other end. None of that appears as a line on a report, so it tends to be accepted as normal.
How we build order routing
- Write down the rules. Which location for which postcodes, when to split, what to protect, what capacity each site has, what each courier costs from each location.
- Fix location stock first. Routing is only as good as the stock figures behind it, so we make sure each location's stock is accurate and updated as it changes.
- Use native routing where it fits. If Shopify's order routing rules can express what you need, we configure them and stop there.
- Build a routing service where it cannot. A small service listens for new orders through webhooks, scores each possible location against your rules and moves the fulfilment order to the best one through the Admin API.
- Record the reason. Each routing decision is logged with why that location won, so staff can see the logic and you can adjust rules with evidence.
- Leave room for people. Orders that no rule handles well, like very large or unusual ones, are held for a person to decide rather than forced through.
Rules are kept as settings where possible, so moving a postcode area or protecting a shop's stock over a weekend does not need a developer.
Orders landing where they should
Peak periods are where the difference is clearest. When one site is swamped, a capacity rule can send more orders to the quieter one without anyone reassigning them by hand, and switching that rule back afterwards is a settings change.
Orders land at the location that makes sense, most of the time without anyone looking. Split shipments happen when they are the better option, not by accident. Shops keep what they need on the shelf. The person who watched the order list now looks only at the few held orders, and can see why every other order went where it did.
Is your routing working against you?
- Staff move orders between locations by hand.
- Orders split into several parcels when one site had everything.
- Orders are often fulfilled from the site further from the customer.
- Shops lose stock to online orders they should not be filling.
- Nobody can easily explain why an order went where it did.