All guides

By September 6, 20269 min read

How to Forecast Inventory Across Multiple Shopify Locations

Splitting one forecast across locations makes every history thinner and noisier. When to forecast the total and allocate, and when a location earns its own.

Your store-level forecast does not break when you open a second location. It stops being the number you need. Shopify is blunt about why: "Each location's inventory is independent and can't be shared or pooled with other locations." One forecast of 5 units a day was enough when there was one place to put them. With two, you also have to answer how many go where, and that answer needs a per-location view of demand you may not have enough data to build.

Setting locations up, editing per-location quantities, ordering fulfillment priority and running a transfer are mechanics, covered in managing inventory across multiple Shopify locations. This post starts after that, on the planning question underneath: forecast the store and split the result, or forecast each location on its own thinner history.

Why locations break a forecast

Take one SKU. Cedar & Fig, 250g sells about 5 units a day across the store, costs $7, retails at $18, and takes 12 days to arrive. You run two locations: Portland, which fills most online orders, and Austin, which is newer and smaller.

WeekPortlandAustinStore total
1271239
2221335
326834
423932
527936
6221234
7251035
8241135
Eight-week total19684280

That is 280 units over eight weeks, 35 a week, 5 a day. Portland averages 24.5 a week and Austin 10.5, so the split is 70/30. Now look at the swing rather than the average. Portland ranges from 22 to 27, Austin from 8 to 13. Same five-unit spread in both columns, but five units is a fifth of Portland's weekly average and close to half of Austin's. Nothing has gone wrong at Austin. It is a smaller series, and a smaller series carries more relative noise for the same behaviour.

That is the first problem: dividing one history by the number of locations makes every resulting series thinner. If a location sells a SKU in ones and twos with blank weeks in between, you have crossed into intermittent demand, where the standard averaging methods stop applying. ABC-XYZ analysis is the usual way to sort which SKUs are steady enough to forecast conventionally before you start.

The second problem is that a per-location sales series is not a per-location demand series. Order routing decides which location ships an order after the order already exists, and one of Shopify's stated rules is that "Locations that have all items in stock are prioritized over those that don't." When Portland runs out, orders Portland would have shipped go out of Austin instead, and Austin's history quietly absorbs demand that was never Austin's. That gets its own section below.

Centralized vs. location-level forecasting

There are two ways to produce a number for each location.

Centralized, then allocated. Forecast the store. Cedar & Fig sells 5 units a day. Then split that forecast by each location's historical share of demand: 70 percent to Portland and 30 percent to Austin, giving 3.5 and 1.5 units a day. Every location's number is derived from one series fitted on all 280 units of history.

Location-level. Forecast each location on its own. Fit Portland's 196 units across eight weeks as one series and Austin's 84 as another. Two histories, two forecasts, no shared assumption about how demand splits.

The centralized version is fitted on more data, so it is steadier and less likely to chase a fluke. The price is that the split is a fixed ratio taken from the past. If Austin's share is genuinely rising, a 70/30 allocation keeps under-supplying it until somebody changes the ratio by hand. The location-level version does notice, because Austin's own numbers move. It also reacts to noise: a series that swings between 8 and 13 will cheerfully report demand up 30 percent in a week when nothing has changed.

A store forecast split by a fixed ratio is only as good as the ratio, and the ratio is history.

The same choice turns up one level down, where the thin series belongs to a size or a colour rather than a location: forecasting at the variant level weighs forecasting the parent product and splitting by size curve against fitting each variant on its own history.

There is no universally right answer here. What decides it is how correlated your locations are. If they rise and fall together, driven by the same seasonality and the same promotions, the store total already contains nearly all the information and a central forecast with a deliberate split loses you very little. If they move independently, because one is a retail floor with local footfall and the other is a warehouse serving a national online audience, the store-level series is an average of two different businesses and the split will be wrong at both ends.

The same five-unit swing read against two different averagesThree weekly series are plotted on one vertical scale for eight weeks of Cedar and Fig, 250g sales. The top line is the store total, which averages thirty-five units a week and moves between thirty-two and thirty-nine. Beneath it, Portland averages twenty-four and a half units and moves between twenty-two and twenty-seven, and Austin averages ten and a half units and moves between eight and thirteen. Portland and Austin swing by the same five units week to week, so their lines look equally jagged on the chart, but that five units is a fifth of Portland's average and close to half of Austin's. Each series has a dashed line drawn at its own average so the size of the swing can be compared against the level it is swinging around.Same five-unit swing, two very different signalsCedar & Fig, 250g: units sold per week, weeks 1 to 8Store totalavg 35, range 32-39Portlandavg 24.5, range 22-27Austinavg 10.5, range 8-13week 1week 8Dashed lines mark each series' own eight-week average.Austin's five-unit swing is half its average. Portland's is a fifth of its own.
The two location lines are equally jagged in units. It is the average underneath them that decides whether that jaggedness is signal or noise.

Which approach fits your store

Three tests, in the order worth applying them.

  • History depth per location. Take the location's weekly series, measure the gap between its highest and lowest week, and compare that gap against its weekly average. A gap that is a large fraction of the average means the series is mostly noise. Austin fails this test; Portland passes it.
  • Demand independence. Pick a few weeks where the store total moved sharply and check whether both locations moved with it. If they move together, a central forecast plus a share split captures almost everything. If one moves while the other does not, that location has its own pattern and earns its own forecast once it has the volume to support one.
  • The cost of being wrong. If a transfer between locations takes a day and costs little, a bad split is an inconvenience you correct on Tuesday. If it takes a week, the same bad split is a stockout.

Most stores running two or three locations with one clearly dominant are better served by a central forecast and a deliberate split. Location-level forecasting earns its keep when a location has enough volume for a readable series and a real reason to diverge from the rest of the store. Which method produces the underlying forecast is a separate decision, covered in choosing a forecasting method.

Allocating a central forecast

The default splitter is each location's share of past demand, and it is usually right. The check that a split worked is not that the units look proportionate, it is that both locations end up with the same days of cover, which is the arithmetic worked out in deciding which location should hold which inventory.

What matters here is knowing when share is the wrong splitter. Five cases, all of them common.

  • A new location has no share. The first few allocations are a judgment call, informed by the catchment you opened it for rather than by data you do not have.
  • A share measured through a stockout is wrong twice. The location that ran out looks smaller than it is, the location that covered looks bigger, and both errors get baked into the next allocation.
  • A retail floor does not sell the same mix. Its share of your total demand and its share of demand for one SKU are different numbers. Split at the SKU level.
  • Seasonality can arrive on different calendars. Two locations in different climates will not peak in the same week, and an annual share hides that completely.
  • A routing rule change resets the share overnight. Reorder fulfillment priority and the share you are splitting by describes a store that no longer exists.

All of it rests on getting the store-level rate right first. Turning Shopify sales data into a daily rate covers that job, and the wider inventory forecasting guide covers what to do with it.

The transfer noise problem

A transfer does not inflate your sales. Shopify's transfers move inventory between store locations and every change appears in your adjustment history, so shifting 60 units from Portland to Austin adds nothing to anybody's demand figures. The noise comes from somewhere less obvious.

It comes from routing. Because Shopify prioritises locations that have all items in stock, the location that ships an order is partly a function of which locations had stock that day, not of where the customer was. Every hour Portland spends at zero pushes orders into Austin's fulfillment record. Read naively, Austin's history says demand grew there. It did not. Portland ran out.

There is a second distortion worth checking before you trust any per-location number. What a customer can buy online is the sum of available inventory at locations enabled to fulfill online orders, and switching that per-location toggle off has a documented consequence: "Preventing a location from fulfilling online orders removes any inventory assigned to the location from a product's online quantity." Build a forecast off the online-available figure and a location that is switched off is invisible to it, stock and all.

Since a change published in May 2026, on-hand inventory at a location that does not fulfill a variant "is now shown and can be updated", while available quantity is not shown "because the location isn't used to fulfill new orders", displaying as a dash with a "Location doesn't fulfill this variant" warning. Most published guidance has not caught up, so if you have read that stock at a non-fulfilling location is invisible, that is out of date.

One thing not to take from any blog, this one included: which per-location reports your plan includes. Shopify's own documentation contradicts itself there, so check your admin.

The practical fix is to reconstruct demand rather than read fulfillments. Flag every period in which a location sat at zero, exclude those weeks from its history, and do the same for the location that picked up the slack. It is tedious by hand, which is one honest reason a lot of stores settle on the central forecast.

Pooling safety stock

Safety stock does not divide. This is the standard result in inventory theory, and it is the strongest argument against distributing stock more widely than you need to: one buffer covering combined variability is smaller than the sum of separate buffers held to the same service level, because a heavy week at one location can only be absorbed by a quiet week at another if the units are in the same place. Split the same demand across two locations and your total safety stock goes up, not down.

How much it goes up by depends on the same correlation question that decided the forecasting method. When locations move independently, the pooled buffer was doing a lot of work and splitting it is expensive. When they spike together, pooling was never saving you much. The formula for sizing the buffer, and the service-level choice behind it, are in the safety stock guide.

Before you plan around Shopify's own tooling: it has no per-location reorder point field, and its help centre does not document per-location forecasting or any inventory allocation planning. It routes orders to stock that already exists. It does not recommend how much of an incoming shipment should go where, does not rebalance, and does not flag a location about to run out while another sits on months of cover. Routing is a fulfillment-time decision, not a planning one.

A review routine

Whichever approach you pick, it decays. A monthly pass over four things is enough for most stores.

  • Recompute each location's share of demand for your top SKUs against the ratio you are allocating by. A share that has moved several points needs changing.
  • List the location and week combinations where stock hit zero, and discount those weeks before reading anything into the share.
  • Re-run the noise test on any location you forecast separately. A location that quietened down may have dropped below the point where its series is readable.
  • Check that every location holding stock is set the way you intend for online fulfillment, since that toggle decides whether its units count toward what shoppers can buy.

Four events should pull a review forward: opening or closing a location, changing a routing rule, switching a location on or off for online fulfillment, and a supplier change that moves the lead time.

Doing this by hand across a real catalogue is where most stores stall, so it is worth being precise about what software removes. StockCue forecasts and alerts at the SKU level across your store, with seasonality, on every plan including Free, and Growth adds an explainable breakdown of each recommended quantity. That is the centralized half of this post. It does not forecast location by location and has no per-location reorder points today. Multi-location stock counts start on Starter, and transfers are a Scale feature. The allocation decision stays yours.

STOCKCUE

A central forecast is the half you can automate. StockCue keeps a store-level forecast with seasonality current from your own sales history on every plan including Free, so the only thing left to decide each cycle is the split.

Install StockCue on Shopify →

Frequently Asked Questions

Should I forecast each Shopify location separately?

Only if the location has enough volume for its own sales history to be readable, and a genuine reason to diverge from the rest of the store. For most stores with two or three locations and one clearly dominant, forecasting the store total and splitting it by each location's share of demand is steadier, because the combined series is fitted on all the data. The trade is responsiveness: a fixed split keeps being wrong until somebody updates the ratio by hand.

How much sales history does one location need before its own forecast is worth doing?

There is no month count worth quoting, and any number you have seen is somebody's rule of thumb rather than a finding. The usable test is the location's own weekly series: measure the gap between its highest and lowest week and compare that gap to its weekly average. If the swing is a large fraction of the average, the series is mostly noise and a split of the store forecast will beat it. If the location sells in ones and twos with blank weeks, it is an intermittent series and needs a different method entirely.

Do transfers between locations distort my sales data?

A transfer moves stock, so it lands in your inventory adjustment history rather than your sales figures, and it does not add demand to either location. The real distortion comes from order routing. Shopify prioritises locations that have all items in stock, so when one location runs out, orders it would have shipped are filled by another, and that location's history absorbs demand that was never its own.

Does having more locations mean I need more safety stock in total?

For the same service level, yes, and this is the standard result in inventory theory. One buffer covering combined variability is smaller than the sum of separate buffers, because a heavy week at one location can be absorbed by a quiet week at another only when the units sit in the same place. How much extra you need depends on how independent the locations are: if they spike together, pooling was not saving you much anyway.

Nafisa Hasan Tuli, Inventory and Operations Writer at Devmerx

Nafisa Hasan Tuli

Inventory and Operations Writer

Nafisa Hasan Tuli writes about Shopify inventory operations for Devmerx, the studio behind StockCue: Inventory Forecast.

Need help with your Shopify store?

Devmerx builds and optimises Shopify stores for DTC brands. Book a free 20-minute consultation.