Pack Allocation lets allocation ship your warehouse stock the way it is actually stored: as prepacks (packs), pre-defined bundles of units across sizes, plus loose units called singles for whatever a pack can't cover cleanly. Allocation still works out how many units of each size every store needs. Pack Allocation then decides how those units travel, so your pickers ship whole packs instead of breaking them open. A pack can send a store a few units it didn't need, and a store can receive fewer units than planned when its source runs out of loose units.
💡 Pack Allocation is gated by the isPackAllocationEnabled feature flag. It also needs Pack Ordering (isPackOrderingEnabled), because your pack definitions live there, and day-level allocation (the Day Level Allocation Enabled switch in Allocation Configuration). Reach out to your Customer Success Manager to enable it.
Use Cases
Your warehouse receives vendor case packs and you want stores to receive them unopened.
You want fewer picks in the warehouse: one pack instead of several loose units.
You want to see which purchase order or recommendation each pack shipment was drawn from.
You want to check, for one choice, which packs and loose units are on hand and on order at the locations your stores ship from.
You want to review and adjust one strategy's pack shipments without leaving Allocation Strategies.
You want to find the choices that have prepacks and plan them on their own.
How Pack Allocation Decides What to Ship
Every allocation run first calculates the units each store needs, exactly as it does without packs. Pack Allocation then looks at each shipment: one choice, from one source location to one store, shipped on one transfer date and received on one receipt date. For each shipment it compares shipping whole packs against shipping loose units, and picks the cheaper option.
When a Pack Can Be Used
A pack is only considered for a shipment when all of these are true:
At least half of the pack's units go to sizes the store still needs. This is the minimum fill (see below), and a store's first pack can be exempt from it. The rest of the pack can be sizes the store doesn't need on that date, and those units ship as extra.
The store can receive every size in the pack. A pack that carries a size outside the Size Range the strategy applies to that store isn't used for that store.
The pack is at the source location by the transfer date. Packs on hand are available from the start, until earlier shipments in the same run use them up. Packs on a purchase order become available on its due date, and packs on an approved recommendation on its receipt date.
The receipt date falls inside your Pack Allocation Window, if you've set one (see below).
The pack exists in your pack catalog with the same Pack External ID your inventory and purchase order data use for it.
If no pack meets these conditions, the shipment goes out as singles, up to the loose units the source has for it (see When Loose Stock Runs Short).
Minimum Fill
The minimum fill decides whether a pack can be opened for a store. By default, at least half of a pack's units must go to sizes the store still needs. When a shipment opens several packs, Toolio counts them one at a time: the first pack must meet the minimum on the store's need, the second on the need the first leaves, and so on.
For example, with an S:1, M:2, L:1 four-pack:
The store still needs | Pack units that meet need | Can the pack open? |
M 2, L 1 | 3 of 4 | Yes |
M 2 | 2 of 4 | Yes, exactly half. The S and the L ship as extra. |
M 1 | 1 of 4 | No, unless it's the store's first pack |
A store's first pack. By default, a store's first pack of a choice is exempt from the minimum fill when the store holds none of that choice, on hand or in transit, and hasn't received a pack of it earlier in the run. That pack opens as long as it meets some of the store's need. Every other pack, in that shipment and later ones, still needs the minimum.
Your Customer Success team can change the minimum, turn it off, or turn off the first-pack exemption for your tenant. There's no screen for these settings yet.
Packs or Loose Units
When a pack can be used, Toolio prices each option. Every pack opened and every loose unit shipped counts as one pick, and each unit a pack ships beyond what a size needs counts as overage, including every unit of a size the store doesn't need on that date. Fewer picks win, and a small overage is acceptable when it saves several picks. A unit the store needs and doesn't receive costs more than either, which matters when loose stock runs short.
For example, a store needs M 4 and L 3, the source has enough loose M and L for any option, and the only pack is an M:2, L:2 four-pack:
Option | What ships | Result |
Loose units only | 7 singles | 7 picks |
One pack plus singles | 1 pack, 2 M, 1 L | 4 picks |
Two packs | 2 packs (M 4, L 4) | 2 picks and 1 extra L. Chosen |
The store receives one more L than it needed. That extra unit shows as Pack Deviation on the transfer (see below). Pack Allocation sends fewer units than allocation planned only when the source runs short of loose units.
Which Supply Is Used First
When packs are available from several sources, Toolio draws them in this order:
Packs on hand at the source location.
Packs on purchase orders, earliest due date first.
Packs on approved Recommended Purchase Orders, earliest receipt date first. These are only used if your tenant allocates from approved recommendations.
The order decides where a pack comes from. It doesn't make a pack more expensive, so a pack that's cheaper than loose units is used whatever its source. Your Customer Success team can change this order or how strongly allocation prefers packs; there is no screen for these settings yet.
When Loose Stock Runs Short
Pack Allocation ships only the loose units a source actually has once your inventory data splits that source's units into loose units and packs. A source counts as split as soon as its inventory for the run date reports loose units or pack units for any size of the choice. For each size it then counts:
Loose units on hand at the source location, exactly as your inventory data reports them. A size your data reports only pack units for has no loose units on hand.
Loose units in transit to the source location. Your inventory data doesn't split units in transit into packs and loose units, so all of them count as loose.
Loose units on purchase orders, from their due date.
Loose units on approved Recommended Purchase Orders, from their receipt date, if your tenant allocates from approved recommendations.
Earlier shipments in the same run use these units up. When a source runs short, Toolio ships a pack instead if one passes the minimum fill and covers the missing units for less than the cost of going short. Otherwise the store receives fewer units than allocation planned:
The shortfall shows as a negative
Pack Deviationon that size's rows.A size that gets no units at all has no transfer row for that date.
The units stay at the source, so a later date in the same run can ship them once more loose stock arrives.
Toolio records how many units went short for each of the reasons under Why did a store receive fewer units than allocation planned?. Your Customer Success Manager can ask Toolio to look these up for a recent run.
Make sure each size's loose units and pack units add up to its total units on hand. Toolio uses the loose figure as reported, so when they don't add up, a store can be sent more or fewer loose units than the source holds.
At a source whose inventory data reports neither loose units nor pack units, loose units aren't limited this way. The limit also doesn't apply to transfers Pack Allocation doesn't consider: choices without packs, and receipts after your Pack Allocation Window.
What Allocation Does Not Use
Two pack settings you may already use for Pack Ordering don't affect allocation:
The
Includecheckbox on a choice's Packs tab. In Assortment Plan, open a choice's detail panel and select the Packs tab, next to Size Plan. The checkbox decides which packs a Recommended Purchase Order can be optimized into.A pack's
Status. OnSettings > Configuration > Intelligence > Packs, setting a pack toInactivehides it from Pack Ordering.
Allocation uses every pack that your on-hand inventory, purchase order and approved recommendation data report for the choice, whatever these two settings say. A pack that is excluded on the choice, or set to Inactive, is still shipped if your data reports it at a source location.
Setting Up Pack Allocation
Your Pack Catalog
Allocation uses the same pack definitions as Pack Ordering, at Settings > Configuration > Intelligence > Packs. See Ordering in Packs (Prepacks) on Purchase Orders for how to create and import packs. For allocation, the important field is the Pack External ID: your on-hand inventory and purchase order data name each pack by that ID, and a pack Toolio can't match to the catalog is ignored.
A pack you create in Settings gets a Pack External ID that Toolio generates, and you can't edit it. So either your data sends that generated ID, or you import your packs with your own pack ID as their Pack External ID.
Pack Allocation Window
The Pack Allocation Window limits how far ahead of each run allocation ships packs. Set it at Settings > Module Settings > Allocation > Allocation Configuration, on the Pack Allocation card, in the Pack Allocation Window (Weeks) field.
Leave it blank to fit packs across your whole allocation calculation window. This is the default.
Enter a whole number of weeks, from 1 up to your allocation calculation window. A larger value is reduced to the calculation window when you save.
With a window of, say, 2 weeks, shipments received within 2 weeks of the run date can ship in packs. Shipments received later go out as singles, and pack purchase orders or recommendations due after the window aren't used for packs.
Reading Pack Shipments on the Recommended Transfer Orders Screen
On the Recommended Transfer Orders screen, rows are ordered by lane: one source location, one store, one transfer date and one receipt date. Within a lane, each pack shipment shows as one row per size it carries, and every one of those rows names the pack in Pack Name, Pack Ratio and Pack Count. The lane's loose units follow as Singles rows, one per size.
To see one row per shipment, group the grid by Pack Group Id. Each group row is one pack shipment, named by its pack, choice, store and transfer date, and expands to the sizes it carries. The loose units in view are grouped under Singles. You can also group by Pack Configuration or Pack Name.
Pack Name
The pack's name. Loose-unit rows read Singles.
Pack Ratio
The units of each size in one pack, for example S:2, M:4, L:2, XL:2. This uses the same format as the Pack Detail column on the Packs settings page. Singles rows show a dash.
Pack Configuration
Pack on the rows of a pack shipment, Single on loose-unit rows. Filter on it to see only pack shipments or only loose units, or group by it to compare the two.
Pack Count
How many packs the shipment carries. On the screen the header reads Pack Count (Pack Recommended Transfer Order), because the pack purchase order columns also have a Pack Count. Every size row of a shipment shows the shipment's pack count, and its In Transit To Ship Units is the pack count times that size's units in the pack. On a group row, Pack Count totals the packs of the shipments in the group, counting each shipment once. You edit it on a Pack Group Id group row (see Editing a Pack Shipment).
System Pack Count
The pack count allocation recommended, before any manual edit. It's read-only, so you can always compare your edit against the original recommendation. A group row totals it the same way as Pack Count.
Units in Packs, Single Units and Pack Breakdown
These columns split a group row's units. Units in Packs totals the units the group ships in packs and Single Units the units it ships loose. Pack Breakdown lists the packs it ships with their counts, for example Core 4-Pack ×12, Core 6-Pack ×3. On a size row, Units in Packs or Single Units shows the row's units, whichever applies. You can't sort or filter on these three columns.
Pack Deviation
How many units the row carries above or below what allocation planned for it. +1 means the pack added one unit the store didn't need; 0 means the packs fit exactly. A negative figure means the row ships fewer units than planned because the source ran short of loose units (see When Loose Stock Runs Short).
Non-zero cells are highlighted, and hovering one shows how many units more or fewer than the ideal the row ships. A Pack Group Id group row always totals the rows in it. Other group rows show a total once you total the column.
A pack can carry a size the store didn't need on that date. That size still gets its own row in the pack shipment, and its Pack Deviation equals its units, because allocation planned none of them.
On a pack row it follows your Pack Count edits. On a Singles row it keeps the figure from the run. When a size ships in both packs and loose units, its deviation is shared across its pack rows and its Singles row shows 0. You can sort, filter and total the column.
Extra units a pack sends today are counted as on their way to the store, so they lower what the store needs on later dates in the same run. Units a row ships short work the other way: the store still needs them, so a later date can ship them.
A shortfall that carries over to later dates is counted once. On a later date, a row shows only the units it ships short beyond the previous date's shortfall, so it can read 0 while the store is still short. For example, a store that ships 3 units short of a size on one date shows -3. If it is still 3 units short on the next date, that row shows 0, and if it is 5 units short, -2.
Pack Deviation is blank on transfers Pack Allocation didn't consider, such as choices without packs and receipts after your Pack Allocation Window.
Order Columns
Each pack row names the order its packs came from, in that order type's own columns:
Packs from a pack purchase order fill the columns labeled (Pack Purchase Order Item), for example
Po Number (Pack Purchase Order Item)andDue Date (Pack Purchase Order Item).Packs from an approved recommendation fill the (RPO Line Item) columns, one line per size.
Packs from stock on hand fill neither, the same as a singles shipment from warehouse stock.
To find every pack from one purchase order, add Po Number (Pack Purchase Order Item) to your view and filter on it.
When a Filter Hides Some Sizes
A filter can leave only some of a pack's sizes in view. A Pack Group Id group row totals only the rows your filters leave in view, so its units and Pack Deviation then cover the sizes you can see. Its Pack Ratio and Pack Count still describe the whole pack.
Editing a Pack Shipment
To change how much a store receives in packs, group the grid by Pack Group Id, edit Pack Count on the shipment's group row and save. Toolio recalculates every size row's units from the pack ratio. You can't edit units or dates on a pack's size rows, because a pack can't ship a partial ratio. Singles rows stay editable. You can also edit Pack Count on a strategy's Recommended Transfer Orders tab (see below).
In
Single Pagemode the grid is read-only.The next allocation run replaces your edits with a new recommendation.
Recalculate Capacity ConstraintssetsPack Countback toSystem Pack Counton the shipments it resets.
The Recommended Transfer Orders Tab
The Recommended Transfer Orders tab shows one strategy's transfer orders without leaving Allocation Strategies. Click the arrow icon on a strategy's row to open its details panel, and select the Recommended Transfer Orders tab.
One row per pack shipment. Each pack shipment is one row, with its
Pack Name,Pack Ratio,Pack CountandSystem Pack Count. The sizes it carries aren't listed separately. Loose units show asSinglesrows, one per size.Grouped by transfer date. The tab opens grouped by
Transfer Date. Each group row counts the destinations, the packs (with the units in them) and the single units for that date, from the rows in view. UseGroupto change or remove the grouping.The
Transfer Summarycard.Inventory PacksandOn Order Packscount the packs on hand and on order at the strategy's source locations, the same figures as the Source Inventory tab; your search and filters don't change them.Packs to Transfer,Units In Packs,Single Units,Destinations(out of the stores in the strategy) andTransfer Datesdescribe the rows in view. TheSummarybutton shows or hides the card.Editing. If you can edit allocations for this choice, you can change
Pack Counton a pack row and the units and dates ofSinglesrows, then save. Leaving the tab with unsaved edits asks whether to discard them.The full screen.
Open in Recommended Transfer Ordersopens the Recommended Transfer Orders screen filtered to the strategy's choice.
The Source Inventory Tab
The Source Inventory tab shows, for one choice, the packs and loose units on hand and on order at the locations its stores ship from. Open Allocation Strategies, click the arrow icon on a strategy's row to open its details panel, and select the Source Inventory tab.
The tab lists every location the strategy's stores receive from directly. A distribution center that only supplies another distribution center isn't listed, because allocation never ships from it for this strategy.
On-Hand Inventory
Packs and loose units on hand at each source location: Location, Pack, Ratio, Size, Pack Count and Units. Each location lists its packs first, from your most recent pack inventory data, where Units is the pack count times the units in one pack. Its loose units follow as Singles rows: one per size the run reads at that location, in size order (for example S, M, L), with sizes at 0 included. A size your inventory data reports only pack units for shows 0. A location with no packs on hand shows only Singles rows.
A triangle in the top-right corner of a Singles row's Units cell means the run didn't read that size's loose units from today's inventory. Hover the cell to see why:
Marker | Hover text | What the run does |
Info | No on-hand entry for today. The run uses the week-start value. | Uses the loose units on hand at the start of the week. |
Warning | No singles on-hand figure found. The run counts this as 0. | Counts no loose units for that size. Your inventory data reports neither loose units nor pack units for it today. |
A location whose inventory data reports neither loose units nor pack units shows no Singles rows, and allocation doesn't limit its loose units (see When Loose Stock Runs Short). With week-level allocation the tab shows no Singles rows at all, because Pack Allocation doesn't run.
On-Order (Purchase Orders)
Packs and loose units arriving at the source locations: Order Type, PO #, Location, Due Date, Pack, Ratio, Size, Pack Count, Units and Status, earliest due date first. Within one order, loose lines are listed by location, then in size order.
Order Type | Status | What it is |
|
| An open purchase order from your purchase order data, in packs or loose units. |
|
| An approved Recommended Purchase Order, in packs or loose units. Shown only if your tenant allocates from approved recommendations. |
The grid lists orders due from today up to the strategy's end date, or up to your allocation calculation window if that comes first. Approved recommendations are listed a little further out, by the strategy's order cycle and safety stock, because allocation can still use them in later periods.
Why a Pack Row's Size Is a Dash
A pack spans several sizes, so its own Size cell shows a dash and the Ratio column names every size in it. Loose-unit rows read Singles in the Pack column and show their size in Size.
Finding Choices with Prepacks
On the Allocation Strategies grid, add the Pack On Hand, Pack On Order and Has Prepack columns from the column picker:
Pack On Handcounts the choice's packs on hand at the locations that supply your stores, from your latest pack inventory data.Pack On Ordercounts its packs on open pack purchase orders to those locations.Has Prepackis ticked when either count is above 0.
On the Allocation Plan, filter on Has Prepack to plan only the choices that have prepacks, or only the ones that don't.
These columns aren't live. They refresh when Toolio recalculates your choice metrics on its regular schedule. If you don't see the columns or the filter, ask your Customer Success Manager.
What Doesn't Reconcile Yet
Some totals on these screens are not expected to match yet. This is a known limitation, not a problem with your data.
On-Hand Inventory against Source Current Inventory. Until your inventory data reports loose units separately from packs, the tab's on-hand units count packs only, and
Source Current Inventoryon the Allocation Strategies grid counts loose units only. Once your data reports both, the tab's pack andSinglesrows andSource Current Inventoryall count packs and loose units. They still cover different locations:Source Current Inventorycovers every location that supplies your stores, and the tab covers only the sources of this strategy's stores.Pack On Handagainst the tab's pack rows.Pack On Handcounts packs at every location that supplies your stores. The Source Inventory tab and theTransfer Summarycard count only the sources of this strategy's stores.On-Order against Source On Order.
Source On Ordercounts loose units on open purchase orders only, over a different number of weeks. It never includes approved recommendations, and it doesn't include pack purchase orders yet.A recommendation and the pack purchase order placed from it. Both are listed, and allocation can use both, while the recommendation is still
Approved. Once the recommendation moves on, for example when it's issued or canceled, only the purchase order is listed.The tab against what allocation used. The tab lists orders past your Pack Allocation Window; allocation doesn't use those for packs. In the other direction, if your inventory or purchase order data names a location by one of its aliases instead of its location code, allocation still uses those packs, but the tab doesn't list them.
❗ Exports of recommended transfer orders don't include pack details yet. A pack shipment exports as its size rows with their units, without the pack name or pack count.
FAQs
Why did a store get loose units instead of a pack?
The pack may fail the minimum fill: less than half of its units would go to sizes the store still needs. Other reasons: the pack carries a size outside the store's Size Range, no pack was at the source location by the transfer date, the receipt date is past your Pack Allocation Window, or loose units were the cheaper option for that shipment. On a shipment with a very large number of possible pack combinations, Toolio also skips packs that carry sizes the store doesn't need, to keep the run fast.
How do I see one row per pack shipment?
On the Recommended Transfer Orders screen, group the grid by Pack Group Id. Each group row is one shipment, and that's where you edit its Pack Count. For one strategy, open its Recommended Transfer Orders tab in Allocation Strategies, which lists one row per shipment without grouping.
Why don't I see the Source Inventory or Recommended Transfer Orders tabs, or the pack columns?
Pack Allocation and Pack Ordering both need to be enabled for your tenant. Reach out to your Customer Success Manager.
Why do I see the pack columns but every row is Singles?
Pack Allocation only ships packs when day-level allocation is on, the Day Level Allocation Enabled switch in Allocation Configuration. The pack columns and the strategy tabs appear as soon as Pack Allocation is enabled, but with week-level allocation every transfer ships as loose units, and the Source Inventory tab shows no Singles rows. Turning day-level allocation on changes how all of your allocations are calculated, not only packs, so talk to your Customer Success Manager first.
Why does a pack shipment show more units than the store needed?
Shipping a whole pack was cheaper than shipping the same units as loose singles, even with a unit or two extra. A pack can also carry a size the store didn't need on that date, as long as at least half of the pack goes to sizes it does need. The extra units show in Pack Deviation.
Why did a store receive fewer units than allocation planned?
Its source ran out of loose units for that size, and no pack made up the difference. The shortfall shows as a negative Pack Deviation. If the store stays short on later dates, those rows show only the units short beyond the previous date's shortfall (see Pack Deviation). Toolio records how many units went short for each of these reasons:
No pack in your catalog holds that size.
No pack that holds it is at the source by the transfer date, or every such pack carries a size the store can't receive.
The minimum fill held back the pack that would have covered it.
Going short cost less than any combination of the packs left that passes the minimum fill.
Your Customer Success Manager can ask Toolio to look these up for a recent run.
Does location capacity cut pack shipments?
No. Capacity constraints only reduce transfers that aren't part of a pack shipment. Pack shipments still count toward a location's projected inventory.
What happens to my Pack Count edits?
They're saved, and System Pack Count keeps the original recommendation. The next allocation run replaces them with a new recommendation, and Recalculate Capacity Constraints sets them back to System Pack Count on the shipments it resets.
Why is Pack Deviation or System Pack Count blank?
Pack Deviationis blank on transfers Pack Allocation didn't consider, such as choices without packs and receipts after your Pack Allocation Window. On aPack Group Idgroup row it's blank when one of the shipment's rows is blank.System Pack Countalways shows a dash onSinglesrows, because they carry no packs.On transfers created before these columns existed, both stay blank until the strategy runs again.
Can I choose which supply is used first?
Yes. By default, packs on hand are used first, then purchase orders, then approved recommendations. Your Customer Success team can change this order for your tenant; there's no screen for it yet.
Why don't I see pack rows on a very large view?
If a view covers more than 10,000 pack shipments, you'll see Pack rows could not be loaded. Showing the transfer orders without packs. Narrow your filters to see the pack rows.
