Manage multi-location inventory in your store by assigning each variant only to locations that physically stock it, setting per-location reorder thresholds based on sales velocity (not a fixed minimum), and configuring alerts on days-of-cover rather than absolute unit counts. Reconcile weekly against your source of truth.
- Static thresholds are lag indicators; days-of-cover is a lead indicator.
- Only assign locations that physically stock the SKU.
- Retail and web should share a location only if you can sync in near real time.
- Weekly reconciliation catches drift before customers do.
Assign products to real fulfilment locations, set per-location thresholds, and alert on velocity — not just static minimums.
Location assignment
Each variant has an inventory row per location. Only assign locations that actually stock the SKU — an unnecessary zero-inventory row on a location causes 'unavailable' errors during checkout routing.
Thresholds
Static thresholds ignore sales velocity. Days-of-cover — units on hand divided by daily sell-through — is a better signal for bestsellers. A 10-unit threshold on a product selling 20/day is a stockout in 12 hours.
The reorder decision matrix
Combine days-of-cover with supplier lead time to make the reorder call.
| Days of cover | Supplier lead time | Action |
|---|---|---|
| > 30 | Any | Hold |
| 14–30 | ≤ 7 days | Watch |
| 14–30 | > 14 days | Reorder now |
| < 14 | Any | Reorder + expedite |
Reconciliation
Weekly checks against your source of truth catch drift before customers notice. The most common drift sources are unbooked returns, cancelled orders that didn't release inventory, and manual retail transactions typed after the fact.
Routing Logic and Order Fulfillment Priorities
Shopify’s default fulfillment behavior relies on a priority list that dictates which location fills an order when inventory is available in multiple spots. Merchants with high shipping costs must refine these rules to minimize split shipments and transit distances. By grouping locations into tiers, you can ensure regional hubs fulfill orders within their zone before the system pulls from a central warehouse. When a specific item is out of stock at the primary location, Shopify checks the next location in your priority list. It is vital to review these settings after adding new physical stores or pop-up locations to prevent the system from defaulting to a distant warehouse with slower delivery times. Advanced merchants often use third-party apps to automate location selection based on shipping rates or carbon footprint, but the native Shopify 'Fulfillment Priority' setting remains the foundational layer for cost control and delivery speed.
- 1Access Location Settings
Navigate to Settings > Shipping and Delivery and scroll to the Fulfillment Priority section.
- 2Rank Your Locations
Drag and drop locations so that regional hubs or retail stores with low walk-in traffic are prioritized first.
- 3Activate Multi-Origin Shipping
Ensure shipping profiles are configured to calculate rates based on the specific location fulfilling the item.
- 4Verify Routing Rules
Test a checkout scenario where a product is stocked in two locations to confirm the priority logic holds.
Managing Transfers and Transit Inventory
Moving stock between locations creates a visibility gap where inventory is neither in the source nor the destination. Shopify’s 'Transfers' feature tracks this movement by shifting units from 'Available' to 'Unavailable (Incoming)'. This prevents overselling during the 2–5 days items are in a truck. A common pitfall is failing to mark transfers as received immediately upon arrival, which results in 'ghost stock' that a store associate might see on a shelf but a customer cannot buy online. We recommend a strict 24-hour receiving window for all internal transfers. Furthermore, using a standard naming convention for transfers, including the date and vehicle ID, allows operations managers to audit bottlenecks in the supply chain. If transit times exceed four days for domestic routes, it usually indicates a breakdown in your logistics provider's performance or a delay in your warehouse's outbound processing.
If you consistently see 48-hour delays at receiving docks, increase your lead time settings in your replenishment calculations to account for this 'dark period' where stock is physically moving.
Virtual Locations for Specialized Stock
Advanced inventory management often requires 'Virtual Locations' to isolate specific stock pools. For instance, you might create a location called 'Quality Control' or 'Returns processing' that is not linked to your online sales channel. This allows you to log the physical presence of an item without making a damaged or unverified unit available for purchase. Shopify allows you to toggle whether a location's inventory is 'Available for Online Sales.' By leveraging this, you can reserve stock for VIP customers, wholesale orders, or marketing influencers without it being snatched up by general web traffic. This separation is critical during high-growth periods when return volumes increase; without a dedicated 'in-processing' location, your 'Available' counts will be inflated by items that are currently sitting in a box waiting to be inspected by your team.
- Create a 'Returns' location to isolate uninspected stock.
- Disable 'Online Sales' for dedicated retail-only stock pools.
- Use 'Wholesale' locations for restricted-access inventory.
- Monitor 'Unavailable' counts daily to find stagnant return units.
- Set up a 'Damaged' location for tax-deductible write-offs.
Calculating Safety Stock by Location Velocity
Applying a flat safety stock number across all Shopify locations is a recipe for either stockouts or capital inefficiency. Instead, safety stock should be calculated based on the standard deviation of daily sales and lead time variability for that specific node. For example, a flagship store in a high-traffic urban area may require a 14-day safety buffer, while a remote satellite location only needs a 5-day buffer. our 'ABC Analysis' data helps identify these high-velocity 'A' items. Merchants should audit their safety stock levels every 90 days, adjusting for seasonal spikes. A common benchmark for e-commerce is a 95% service level, meaning you have enough stock to meet demand 95% of the time. If your 'B' and 'C' items carry the same safety stock as your 'A' items, you are likely tying up 15-20% more capital than necessary in slow-moving inventory.
| Item Category | Sales Velocity | Suggested Safety Buffer | Review Frequency |
|---|---|---|---|
| Category A (Top 20%) | High (>10 units/day) | 14-21 Days | Weekly |
| Category B (Next 30%) | Moderate (2-9 units/day) | 7-10 Days | Monthly |
| Category C (Bottom 50%) | Low (<1 unit/day) | 3-5 Days | Quarterly |
Integrating POS and Warehouse Synced Data
When using Shopify POS alongside a warehouse management system (WMS), data latency is the primary enemy. In-store purchases must decrement the global inventory count in real-time to prevent the web store from selling the last unit of a product that a customer just walked out with. While Shopify handles this natively within its ecosystem, third-party integrations can occasionally experience sync lags ranging from 5 to 30 minutes. To mitigate this risk, set an 'Inventory Buffer' within your integration settings that hides products online when the stock count drops below a specific threshold (e.g., 2 units). This provides a margin of safety for synchronizing systems. Additionally, ensure that your POS staff are trained on the 'Fulfill from Store' workflow versus the 'Ship to Customer' workflow, as mixing these up can cause duplicate decrements or fail to trigger the correct warehouse picking list.
Avoid using 'Direct to Store' shipping for items not yet in your Shopify system. If stock is physically sold before the digital record is created, the system may show negative inventory once synced.
Low-stock and out-of-stock alerts across locations, delivered where you work.
Learn moreFrequently asked questions
The most common questions merchants ask us about inventory.