ShipStream Knowledge Base
Warehouse

Replenishment Policies

A pick face that runs dry is usually only noticed when a picker arrives at an empty shelf. Replenishment Policies let ShipStream watch for you: a Policy pairs a group of Products with a Replenishment Lane and measures each SKU's coverage in days of inventory (DOI) — the quantity on hand in the Lane's destination Location Profile divided by the SKU's recent daily pick rate. When a SKU's coverage falls below the Policy's Trigger DOI, ShipStream flags it along with the quantity needed to restore coverage to the Target DOI.

Daily pick rates come from ShipStream's Product Velocity data, so a Policy can flag not only SKUs that are running low in the Profile, but also SKUs that are selling and were never stocked there in the first place. Each Policy chooses which picks count toward that rate with its Demand Basis — see Choosing a Demand Basis.

Understand ShipStream: How Much Stock?

Stocking targets answer how much to keep within reach of your pickers. Giving every Product the same space does not give each one the same coverage: a fast-selling Product runs through its share sooner. Giving every Product the same number of days of stock can require very different amounts of room, especially when Products differ in size.

ShipStream lets you choose the balance. Policy (single DOI) gives matching Products the same days-of-inventory band. By Slot Type lets a cubby, shelf, and pallet face use different bands, while Product Overrides handle individual exceptions. For DOI-based sizing, daily demand multiplied by Target DOI gives the target quantity. More coverage takes more room; less coverage can mean more frequent replenishment. ShipStream uses your settings rather than automatically choosing an optimal division of space.

The example below holds demand and physical pick faces constant. Change the targets to see which fit. Use one DOI makes the tailored targets identical to equal-time stocking, so you can see that the benefit comes from the settings you choose, not a different calculation.

Stocking quantity is separate from placement priority. Understand who gets first choice of a preferred Location to see how the three Rank Formula options compare.

How to Create a Replenishment Policy

  1. Navigate to System -> Operations -> Replenishment Policies.
  2. Click Create Replenishment Policy.
  3. Choose the Warehouse first — it scopes the Lane and Handling Class choices, and it cannot be changed after the Policy is saved.
  4. Fill in the remaining fields (see the reference table below) and click Save Replenishment Policy.
FieldDescription
NameA descriptive name for the Policy.
ActiveWhether the Policy participates in evaluation. An inactive Policy's Products fall through to the next Policy.
WarehouseThe Warehouse the Policy operates in. A Policy stays in the Warehouse it was created in.
MerchantsLimits the Policy to specific Merchants. Leave empty to apply the Policy to all Merchants.
Product Profiles and Profile Match ModeLimits the Policy to Products in the selected Product Profiles; the match mode controls how multiple selections combine. Leave empty for all Product Profiles.
Handling ClassesLimits the Policy to Products with the selected Handling Classes. Leave empty for all Handling Classes.
LaneThe Replenishment Lane this Policy fills. The Lane's destination Location Profile is the stock group this Policy measures. An inactive Lane can be selected but is labeled as inactive, and a Policy in an inactive Lane is skipped.
DOI BasisPolicy (single DOI) uses one DOI band for every matching SKU. By Slot Type selects a band from the SKU's resolved Slot Type. See Choosing a DOI Basis.
Trigger DOI / Fallback Trigger DOICoverage in days below which a SKU is flagged. The field is labelled Fallback Trigger DOI when using By Slot Type.
Target DOI / Fallback Target DOICoverage in days to restore. The field is labelled Fallback Target DOI when using By Slot Type. It may equal the trigger, but then a SKU can be flagged again after the next pick.
Slot Type DOI OverridesOptional per-Slot-Type DOI bands owned by this Policy. These are available only with By Slot Type, and an override takes precedence over that Slot Type's default.
Top-OffWhen Yes, the Policy also flags a SKU whose Inventory Position falls below a percentage of its target level, so a pick face can be topped up before it reaches the trigger. See Top-Off.
Top-Off ThresholdThe percentage of the target level (above 0 and at most 100) below which a top-off is flagged. Required while Top-Off is enabled.
Top-Off ScheduleOptional windows, in the Warehouse's local time, during which a top-off may act. No windows means a top-off is eligible at all times.
Demand PeriodThe velocity window used to derive daily demand. The choices are the velocity periods configured for Product Velocity.
Demand BasisWhich picks count as demand — Pickable (only picks made from pickable Locations) or Overall (every pick). See Choosing a Demand Basis.
Sort OrderPolicies are evaluated from the lowest sort order upward, and the first qualified match wins.

After a Policy is saved, its form also shows two read-only rows: Qualification (whether the Policy participates in evaluation, with an explanation when it does not) and Replenishment Build (whether the figures come from the latest published calculation, and the current Flagged SKUs count).

An administrator with access to only some Merchants can create and edit Policies limited entirely to those Merchants. A Policy that also applies to other Merchants is shown read-only in the grid without the other Merchant names or result counts. A Policy that applies only to inaccessible Merchants is hidden.

How Policies Are Evaluated

Each SKU is governed by at most one Policy. Policies are evaluated from the lowest Sort Order upward, and the first qualified Policy whose subject (Merchants, Product Profiles, Handling Classes) matches the SKU wins; later Policies never see that SKU. Administrators with access to all Merchants can adjust precedence directly from the grid using the editable Sort Order column.

For each SKU the winning Policy governs, ShipStream divides the quantity on hand in the Lane's destination Location Profile by the SKU's average daily pick rate over the Demand Period, on the Policy's Demand Basis, to get its days of inventory. A SKU whose coverage is below the Trigger DOI is flagged, along with the quantity needed to bring coverage back up to the Target DOI.

How a Policy's DOI band flags a SKUDay 0 · At Target
00 d122 d244 d366 d488 d6010 dunitsdaysDay 0Day 7Day 14Day 21Target 10 d = 60 uTrigger 3 d = 18 uOKTriggerNone eligibleDOI10 daysInventory Position60 unitsShortfall

The pick face starts at its Target level: 10 days × 6 units/day = 60 units. Coverage falls one day per day as picks happen.

A line chart of one SKU's Inventory Position over 21 days. It starts at the Target level and falls one day of coverage per day as picks happen. When it drops below the Trigger level (Trigger DOI times daily demand) the SKU is flagged with the quantity needed to restore the Target; a day later the stock is moved and the line jumps back to Target. With Top-Off enabled the flag fires earlier, at a percentage of the Target level. Sliders change demand, Trigger DOI, Target DOI, and Top-Off, and the chart re-derives. Coverage always falls one day per day; changing demand only changes how many units that is. Set Target DOI equal to Trigger DOI to see the SKU flagged again after the very next pick. The move is assumed to happen one day after the flag.
Set Target DOI comfortably above Trigger DOI so each replenishment buys several days of coverage. When the two are equal, a Product can be flagged again after the next pick.

SKUs that Slotting Rules forbid in every Location of the Profile are excluded automatically — there would be nowhere to put the replenished stock — and are reported in the Slotting Forbidden count instead.

A SKU that matches Policies in several Lanes produces a need only in the Lane with the lowest Sort Order; the other matches are listed under Suppressed In on the Replenishment Report so demand is never counted twice.

Top-Off

The trigger fires when coverage has already dropped below Trigger DOI. Top-Off lets a Policy act earlier: when a SKU's Inventory Position falls below the Top-Off Threshold percentage of its target level, the SKU is flagged with a Top-off trigger on the Replenishment Report. This is useful when replenishment runs on a schedule and you would rather fill a face to its target during a quiet period than wait for it to run low during a wave.

The Top-Off Schedule limits when a top-off may act. Click Add Window and choose a Day, a Start Time, and an End Time, or tick To end of day to run to midnight. An end time earlier than its start is an overnight window that ends the next day. Windows must not overlap. When a SKU meets the threshold outside every window, the report shows it as Waiting for Top-off window with the time it next becomes eligible.

Choosing a DOI Basis

Choose Policy (single DOI) when every matching SKU should use one Policy trigger and target. Choose By Slot Type when the amount of stock held in different kinds of pick face should control the replenishment band.

You can switch between the two choices while editing without losing unsaved override values. If you save the Policy with Policy (single DOI) selected, ShipStream removes its Slot Type DOI Overrides because they do not apply in that mode.

When using By Slot Type, ShipStream finds the SKU's classified Location in the selected Location Profile with the lowest Location priority (and then the lowest Location ID when priorities tie). It uses that Location's Slot Type to resolve the schedule in this order:

  1. A Slot Type DOI Override on the Policy.
  2. The Slot Type's Trigger DOI and Target DOI from its Replenishment Defaults.
  3. The Policy's Fallback Trigger DOI and Fallback Target DOI.

The selected Slot Type chooses only the DOI band. DOI itself still uses all on-hand quantity in the Policy's Location Profile, not just the selected Location or Slot Type.

The Effective DOI Schedule Preview shows one row for each Slot Type present in the selected Location Profile. DOI values and the DOI Source use the current unsaved form values. The SKU count comes from SKUs assigned to that Policy by the latest completed Replenishment build.

For each row, ShipStream multiplies the published daily demand by the current Target DOI and compares it with known Slot Capacity. When no authoritative capacity is available but both the Slot Type and SKU have dimensions, the preview labels and uses a slot-cube divided by unit-cube estimate. It reports how many assessable SKUs exceed capacity, how many could not be assessed, and how many used dimension estimates. If Slotting is forbidden for a SKU in that Slot Type, the preview shows a separate warning rather than treating it as a capacity failure.

Assignment warnings use current Locations in the Location Profile for the latest build's winning SKUs. Location-priority and Location Profile membership changes appear after the Warehouse's next Replenishment rebuild. Ordinary inventory movements do not change the selected Slot Type. A Pending rebuild, Building, or Build failed badge warns when the latest completed build may lag current changes; unavailable figures are not shown as false zeroes.

Choosing a Demand Basis

A SKU's daily pick rate is only as broad as the picks you count, and that is what Demand Basis decides.

  • Pickable counts only picks made from pickable Locations. A SKU that ships entirely out of reserve records no demand at all, so it is never flagged. Choose this when the Policy is maintaining pick faces that are already working — the demand you are sizing against is the demand that pickable Locations actually serve.
  • Overall counts every pick, including those served from reserve. A SKU that sells but has never been slotted now carries its full pick rate, which is what makes it eligible to be flagged to Slot. Choose this when the point of the Policy is to find SKUs that ought to be in the Profile and are not.

A SKU with no picking history at all is never flagged on either basis — there is nothing to measure.

Both bases count picks from across the whole Warehouse, and both are measured against the on-hand in one Location Profile. Overall counts at least as many picks as Pickable, so a SKU's daily demand can be higher, its coverage can be lower, and more SKUs can be flagged. The difference is the demand served from reserve. Review your Trigger DOI after switching an existing Policy because it may trigger earlier than before.

Reading the Grid

The grid at System -> Operations -> Replenishment Policies shows each Policy's Name, Warehouse, Active state, Subject (the Merchants, Product Profiles, and Handling Classes it selects), Lane, Location Profile (the Lane's destination), fallback Trigger DOI and Target DOI, Demand Period, Demand Basis, Qualification, Sort Order, result counts, Replenishment Build, and Updated At.

The three result counts come from the Warehouse's latest published replenishment calculation. They are empty until the Warehouse publishes its first result; after that, a zero is a real finding and shows as 0.

Replenishment Build shows whether those counts are Current, Rebuild pending, Building, Build failed, or Not built yet. Previous data shown means the numeric counts are still from the last successful build while a newer one is pending, building, or failed.

ColumnMeaning
Flagged SKUsSKUs whose coverage fell below the Trigger DOI, each flagged with the quantity needed to restore the Target DOI.
Skipped SKUsSKUs that matched this Policy's subject but fell through to lower Policies — for example because the Policy was inactive or disqualified when the result was calculated.
Slotting ForbiddenSKUs excluded because every target Location in the Profile is hard-forbidden by Slotting Rules.

Qualification

The Qualification column shows whether a Policy currently participates in evaluation. A Policy that cannot be evaluated is skipped, and its Products fall through to the next matching Policy.

StateMeaning and Remedy
QualifiedThe Policy is evaluated for the Products it selects.
InactiveThe Policy is turned off, so its Products fall through to the next Policy. Set Active to Yes to include it again.
Disqualified (Profile building)The Location Profile is still building its first revision, so it has no Locations to measure yet. Wait for the build to complete.
Disqualified (Profile build failed)The Location Profile could not be built. Open the Profile to see the failure and rebuild it.
Disqualified (Profile never built)The Location Profile has never published a revision, so it has no Locations to measure. Open the Profile and save it so a revision is built.
Disqualified (empty Profile)The Location Profile is ready but currently matches no Locations, so there is nothing to measure. Adjust the Profile's Location Match criteria.
Disqualified (Lane inactive)The Lane this Policy fills is inactive, so the Policy is skipped. Activate the Lane or move the Policy to an active one.
Disqualified (demand period unavailable)The velocity period this Policy uses is no longer configured. Edit the Policy and choose a configured Demand Period.

For Profile-related disqualifications, the Qualification row on the Policy's form links directly to the Location Profile so you can open and fix it.

Product Overrides

Most SKUs should follow their Policy's sizing, but some deserve their own numbers: a promotional item that needs deeper coverage, a bulky Product whose pick face only holds so much, or a SKU that should always be topped up to a fixed shelf quantity. Product Overrides carry those exceptions.

Open a saved Policy and scroll to Product Overrides. A new Policy must be saved before overrides can be added, because each override belongs to exactly one Policy. Click Add Product Override, choose the Product with Choose Product... (the picker offers only Products the Policy selects and hides Products that already have an override on this Policy), and pick one Sizing Mode:

Sizing ModeMeaning
Days of Inventory pairTrigger DOI Override and Target DOI Override replace the Policy's band for this SKU. Coverage is still measured from its pick rate.
Fixed quantity pairFixed Minimum Quantity and Fixed Maximum Quantity replace coverage math entirely: the SKU is flagged when its Inventory Position falls below the minimum and is restored toward the maximum, even when it has no recent picks.

Click Save Product Override. On the Replenishment Report the row's Sizing Source reads Product override. A disabled Product keeps its override, which takes effect again when the Product is re-enabled. If the Policy later stops selecting the Product, the override is marked Out of subject and produces nothing until you delete it or return the Product to the Policy's subject.

Replenishment Move Size

Replenishment usually moves whole handling units, such as a case or an inner pack, rather than loose units. An override can record that in two ways under Replenishment Move Size:

  • Move Multiple on its own, for example 5 when the SKU is moved in stacks of five. This is advisory and shows a Confirmation of Not applicable.
  • UOM Product, the case or pack Product this SKU is replenished from. ShipStream derives the multiple from the two Products' quantity Bill of Materials and shows Confirmed. A value typed in Move Multiple is only checked against that derivation.

If the Bill of Materials between the two Products later changes, the override becomes Stale: the last confirmed multiple stays visible but is not used for new work until you review it and click Reconfirm UOM with a reason. An override whose multiple the Product can no longer hold shows Unusable and must be edited or cleared.

Locking and Audit History

Lock pins an override so routine edits cannot change it. A locked override refuses ordinary saves and deletes; users with the Edit Locked permission may still save it with a fresh Edit Reason, without releasing the lock. Unlock is its own action. Each of these asks for an Action Reason so whoever reads the history later knows why.

Every change (create, edit, lock, unlock, reconfirm, delete, and the automatic invalidation after a Bill of Materials change) adds a row to Product Override Audit History below the overrides grid, with the user, the reason, and the before and after values. History is never edited or removed and survives the override's deletion. If two people edit the same override at once, the second save is refused with a request to reload, so nothing is overwritten silently.

Product Override access is controlled by the System -> Operations -> Replenishment Product Overrides role permissions. View, Create and Edit, Edit Locked, Lock, Unlock, Reconfirm UOM, and Delete are granted separately, and all of them also require the Replenishment Policies permission.

Deleting a Replenishment Policy

A Replenishment Policy whose results are still part of the Warehouse's published calculation cannot be deleted yet. Set the Policy's Active field to No first; once the Warehouse publishes an updated result without it, click Delete Replenishment Policy on the Policy's form.

Access is controlled by the System -> Operations -> Replenishment Policies role permission, which is not granted automatically. Grant it — along with System -> Operations -> Replenishment Lanes and System -> Operations -> Location Profiles — to any role that should manage replenishment. See User Roles.