Skip to main content

Hub & Spoke Allocation

Allocate through Hub & Spoke supply chains where a central DC feeds regional hubs that feed stores.

Hub & Spoke Allocation extends Toolio's allocation engine to supply chains with more than one layer. Standard allocation is one-hop: a warehouse feeds a set of stores directly. Hub & Spoke adds support for stock that passes through one or more middle layers. For example, a central DC that feeds a regional hub, which in turn feeds the stores.

Everything the standard one-hop model does still works exactly the same. Hub & Spoke only changes behavior when there is a real chain to cascade through.

Note: Hub & Spoke is enabled at the organization level. Let your customer success manager know if you would like it turned on for your account.

Key Concepts

A Hub & Spoke network is a chain of locations connected by source → destination links. Each location plays a role relative to the link it sits on: the same location can be a destination for the layer above it and a source for the layer below.

Central DC

The main distribution center (DC) that holds all or most of the inventory. It can supply regional hubs, stores, and other channels such as e-commerce or wholesale. It is a source only and does not receive allocation.

Regional Hub

A smaller warehouse that feeds a subset of stores, usually clustered geographically. A hub sits in the middle of the chain: it is a destination of the DC and a source for its stores. A hub can be a pure pass-through (no sales of its own) or sell through its own channels as well; both are supported.

Store

The selling locations at the end of the chain, where real consumer sales happen. Stores receive allocation but do not ship to other locations.

Use Cases

  • A central DC replenishes regional hubs, and each hub replenishes the stores near it.

  • A hub both feeds its stores and sells through its own channel (e-commerce, wholesale, or a store of its own).

  • You want stores filled from a nearby hub first, with the central DC as a fallback source.

  • Any network where stock has to move down more than one layer before it reaches the point of sale.

Setting Up a Hub & Spoke Network

There are three steps: enable the feature, flag each location's role, and draw the source map.

Enable the Feature

Hub & Spoke is enabled at the organization level by your Toolio customer success team. Two settings need to be on:

  • Hub & Spoke allocation itself (the useMultiEchelonAllocation flag), which lets a location be both a source for the stores below it and a destination of the DC above it. Until it is on, a location cannot have its own source, so you cannot build a chain.

  • Day Level Allocations (the useDayLevelAllocation flag). Hub & Spoke runs on day-level allocation only. The engine works out each store's need by simulating its inventory day by day. If your account is on week-level allocation today, ask your customer success manager to switch before you set up a chain. See Day Level Allocations.

Flag Each Location

Under Settings > Configuration > Organization Settings > Locations, open a location to edit it. Each location has toggles that define its role in the network:

  • Is Source Location: the location can ship to others. True for the DC and for any hub.

  • Is Selling Location: the location has real consumer sales. True for stores; optionally true for a hub that sells its own channels.

  • Is Allocation Allowed: the location can receive allocation.

So a DC is source-only, a store is selling and allocation-allowed, and a hub in the middle is a source for its stores and a destination of the DC, optionally selling as well.

Draw the Source Map

Right-click a location and select Manage Sources to list which locations can supply it. Each row is a source → destination pair with two settings the engine uses:

  • Priority: when a destination has more than one possible source, the lower priority number is tried first. This is how you say "fill from the nearby hub first, fall back to the DC."

  • Lead Time(Days): how long a shipment takes on that lane (in-transit days). The engine uses this to decide when a receipt actually lands.

Include the Hub in the Location List

The hub must be part of the allocation strategy's location list for the run to produce a result for it. If the hub is left out of the list, the chain can silently strand, and stock will not cascade down to its stores.

How Allocation Runs Across the Chain

When you run allocation on a Hub & Spoke network, the engine makes two passes.

Pass 1, bottom-up. It starts at the stores and works out what each one needs, then passes that need up to whatever feeds it. The hub sums the needs of its stores (plus its own sales, if it sells) and passes the total up to the DC. By the time the engine reaches the top, the DC knows the demand of the whole network beneath it.

Pass 2, top-down. Inventory then flows the other way. The DC ships down to the hub based on what the hub asked for, and the hub ships down to the stores. When a destination has several possible sources, they fill in Priority order: the highest-priority source fills first, and whatever it cannot cover spills to the next source.

How Each Location Decides What to Order

Every location (store, hub, or DC) answers the same question the same way: how much should I order to stay covered until my next order arrives?

The need is the safety-stock buffer plus expected sales over the order-cycle window, minus what the location already has on hand and what is already on the way to it.

  • Order Cycle is how often the location reorders. The order-cycle window is the sales it expects to cover until its next order lands.

  • Safety Stock is the extra cushion on top, so the location doesn't run dry if sales come in faster than expected.

  • A location only orders if it has dropped to its safety-stock level. If it still has plenty on hand, it skips the cycle.

For a store, "sales" is its real sales. For a hub, "sales" is the demand coming up from its stores, plus its own channel sales if it sells. That is how one formula works at every level.

How a Hub Learns What Its Stores Need

A hub does not simply add up every store's full need every day, which would over-count, because a store you just restocked won't need restocking again the next day. Instead, the hub simulates each store's inventory day by day across its planning window. On each day it checks whether the store would have dropped to its reorder point; if so, it records that store's order on that day and assumes the store received it, then moves forward.

The result is a realistic, spiky demand stream: stores order every few days, not every day. The hub adds up all its stores' orders per day to get the aggregated downstream demand, then plugs that in as its own "sales" and runs the same need calculation as everyone else.

Right-Sizing Safety Stock Across the Network

Each location sets its own Safety Stock and Order Cycle, so you can tune buffers layer by layer. A key benefit of Hub & Spoke is that stores can hold less safety stock than they would when replenishing from a distant central DC. Because a nearby hub can restock a store on a short lead time, the store can reorder little and often instead of carrying weeks of cushion. Keep deeper cover at the hub, and tighten it at the stores it feeds.

FAQs

Do I have to change anything for my existing single-warehouse setup?

No. A network with no middle layer behaves exactly as standard allocation does. When there is nothing downstream to roll up, the engine skips the Hub & Spoke simulation, so a flat warehouse-to-store setup produces the same results as before. You only get Hub & Spoke behavior when there is a real chain to cascade through.

Why are my stores running short even though the DC had stock?

The most common cause is a hub configured with a smaller buffer than the stores it feeds. A hub only simulates its stores as far as its own planning window reaches (its Order Cycle + Safety Stock, plus lead time). If the hub's window is shorter than a store's, the simulation stops early, the hub under-projects downstream demand, and it orders too little. Always set a hub's Safety Stock and Order Cycle to be at least as large as those of the stores beneath it.

Can a hub sell to customers as well as feed stores?

Yes. A hub can be a pure pass-through that only feeds the stores below it, or it can sell through its own channels too. Set Is Selling Location to true for a hub that has its own sales, and the engine includes those sales in the hub's need alongside the demand rolled up from its stores.

If a selling hub can't cover both its own sales and its stores, which comes first?

The hub serves itself first. When the hub's on-hand stock is not enough to cover both, it keeps enough to cover its own consumer sales, and its stores receive whatever is left. The engine reserves the hub's own demand before it works out how much to transfer downstream, so a selling hub effectively takes priority over the stores it feeds when inventory is tight.

Does lead time affect when orders are placed?

Yes. If a lane takes several days, the store's order has to be placed earlier so it arrives in time. The engine shifts each store order backward by the lane's lead time so receipts land when they are needed.

Why does my store's allocation come from the Main DC instead of the Regional Hub?

Source selection is driven by Priority, not by lead time. When a store is eligible to receive from more than one source, allocation fills from the source with the highest priority (the lowest Priority number on its source map) first, and whatever that source cannot cover spills to the next source. So if a store is drawing from the Main DC, the DC is configured as its higher-priority source. Lead time only affects when a shipment is timed to land, never which source is chosen. If a store should never receive from the Main DC, give the Hub the higher priority, or remove the store's eligibility to the Main DC under Manage Sources.

Do per-location Start and Phase Out dates work with Hub & Spoke?

Yes. On the day-level Hub & Spoke path, a location's Start Date and Phase Out Date are honored just as in standard allocation: a store is left out of allocation before its start date and after its phase-out date.

One important exception is that these dates do not stop allocation to a hub or DC. Because a hub feeds the stores beneath it, dropping it would strand those stores, so the engine keeps a source location in the run even if its own start date is in the future or its phase-out date has passed. In practice, set these dates on stores; setting them on a hub has no effect on whether it is allocated. See Start, End and Phase Out Dates for the general behavior.

Did this answer your question?