Shopify multi-location inventory: planning stock across warehouses
How to plan stock across several Shopify locations, warehouses and 3PLs: giving each location a role, forecasting per location, pooling safety stock and rebalancing with transfers.
Stokrio Team · · 6 min read
Adding a second location feels like a logistics decision: a 3PL on the east coast, a warehouse in another country, a retail store. It's also a planning decision. Your total stock might be fine while one location is empty and the other is drowning. Multi-location inventory is about getting the right stock in the right place, not just enough stock overall.
Key takeaways
- Give every location a clear role before you plan stock for it: main warehouse, regional fulfilment, retail store, or overflow.
- Forecast demand per location, based on where orders are actually fulfilled from, not just where customers live.
- Splitting stock across locations needs more total safety stock than holding it in one place. Know the cost before you add a site.
- Stock in transit between locations belongs to neither location's available stock. Track it as incoming at the destination.
- Rebalance with transfers when one location is short and another has more than its target, and the transfer arrives faster than a new order would.
How Shopify handles locations
In Shopify, each location holds its own inventory quantity for each variant, and your order routing settings decide which location fulfils an order. That's the source of truth for what's sellable where. What Shopify doesn't decide for you is how much each location should hold, when to move stock between them, or how to split a purchase order across them. That's planning.
Step 1: give each location a role
Different roles need different rules:
- Main warehouse: receives most supplier deliveries and feeds other locations. Holds the bulk of safety stock.
- Regional fulfilment centre: serves customers in one region quickly. Needs its own forecast and cover target.
- Retail store: sells to walk-in customers and may fulfil online orders. Needs a minimum display quantity even when the numbers say otherwise.
- Overflow or 3PL: holds excess. Often shouldn't be selling directly at all.
Write the roles down, and set Shopify's order routing to match. If your overflow store is quietly fulfilling online orders, your forecasts for both locations will be wrong.
Step 2: forecast per location
Each location's demand is the orders it fulfils. If you have a US warehouse and an Australian warehouse and total sales of 20 units a day, the split might be 12 a day from the US and 8 a day from Australia. Plan each separately:
- US: 12 a day, supplier lead time to the US 35 days, 10-day buffer: (35 + 10) × 12 = 540 units target
- Australia: 8 a day, lead time 28 days, 10-day buffer: (28 + 10) × 8 = 304 units target
A single pooled plan would target (35 + 10) × 20 = 900 or so, and you'd have no idea how to split it.
A warning about history: if one location was out of stock for two weeks and the other location picked up its orders, the second location's history includes demand that doesn't really belong to it. Our guide to stockout-adjusted velocity covers why sell-outs distort sales history, and the same applies between locations.
Step 3: understand the cost of splitting
Here's the uncomfortable maths of multiple locations. Safety stock protects against demand being higher than forecast. When stock sits in one place, a busy day in one region is often balanced by a quiet day in another. Split it, and each location must protect itself.
Take two regions, each with daily demand varying with a standard deviation of 6 units, a 25-day lead time and a 95% service level (z ≈ 1.65). Using safety stock = z × σ × √(lead time), and √25 = 5:
- Separate locations: each needs 1.65 × 6 × 5 = 49.5, call it 50 units. Two locations: 100 units.
- One pooled location: combined variation is √(6² + 6²) = √72 ≈ 8.49, so 1.65 × 8.49 × 5 ≈ 70 units.
Splitting adds about 30 units of safety stock for that one product, and the effect repeats across your catalogue. It can still be worth it for faster delivery or lower shipping costs, but it's a real cost, and one way to keep it down is to hold most safety stock centrally and replenish regional sites more often.
Step 4: decide how stock reaches each location
You have two main options.
Direct from supplier. Split the PO so each location receives its share directly. Fewer handling steps, but each location carries its own lead time and safety stock, and you need to receive at each site.
Hub and spoke. Everything lands at the main warehouse, and transfers feed other locations. Simpler purchasing and more pooling, but you add transfer time and cost, and regional sites depend on the hub.
Many brands mix the two: fast sellers go directly to each region, and the long tail lives in the hub.
Splitting a purchase order by location
When one PO serves several locations, split it by each location's need rather than by its share of sales. Using the targets from step 2:
- US: target 540, with 200 on hand and 40 on order, needs 540 − (200 + 40) = 300.
- Australia: target 304, with 104 on hand and nothing on order, needs 304 − 104 = 200.
The PO is 300 + 200 = 500 units: 300 to the US and 200 to Australia. A split by sales share (12 ÷ 20 = 60% and 8 ÷ 20 = 40%) would also give 300 and 200 here, but only by coincidence. If Australia had been sitting on 200 units, its need would drop to 104, and a sales-share split would have sent it stock it didn't need while the US went short.
Step 5: rebalance with transfers
Transfers fix imbalances between orders. A simple rule: transfer when a location is below its target and will run short before a supplier order could reach it, and another location holds stock above its own target.
Worked example
Two stores selling the same product, with a target of 30 days of cover each and a 5-day transfer time:
| Location | On hand | Sells per day | Days of cover | Target units (30 days) |
|---|---|---|---|---|
| Store A | 300 | 6 | 50 | 180 |
| Store B | 40 | 4 | 10 | 120 |
Store B has 10 days of cover, which is getting close to the 5-day transfer time plus any buffer. It needs 120 − 40 = 80 units to reach its target. Store A holds 300 − 180 = 120 units above its own target, so it can spare 80.
After the transfer, Store A has 300 − 80 = 220 units (220 ÷ 6 ≈ 36.7 days) and Store B has 40 + 80 = 120 units (120 ÷ 4 = 30 days). Both are at or above target, and nobody bought anything.
Compare that with the alternative: ordering 80 more from the supplier while 120 surplus units sit in Store A.
Track transfers properly
A transfer has three moments: drafted, dispatched and received. Between dispatch and receipt the stock is in transit. It isn't available at the source any more, and it isn't sellable at the destination yet. Plan it as incoming at the destination, the same way you'd treat an open purchase order. Record carrier and tracking so you can chase it, and count it on arrival: transfers go missing more often than people expect.
Step 6: count each location
Every location drifts. Cycle count your fast movers in each location regularly, record adjustments with a reason (damaged, found, miscount), and investigate locations where adjustments keep happening. A location you don't trust is a location you'll over-stock.
In Stokrio
Stokrio's multi-warehouse tools track stock per warehouse and bin location, move stock between warehouses with transfers that you draft, dispatch and receive, with in-transit status, carrier and tracking, and record adjustments with reason codes and a full audit record. The planning ideas above (location roles, per-location targets, pooling and rebalancing rules) apply whatever system you use.