Restocking Inventory on Shopify: Step-by-Step Workflows, Automation, and Best Practices
Restocking inventory on Shopify is more than changing numbers in a spreadsheet. It’s a repeatable workflow to forecast demand, reorder with confidence, receive accurately, and allocate stock across locations and channels without stockouts or overstock.
This guide gives Shopify-native, click-by-click steps for restocking, plus SOPs, automation tips, and metrics you can apply immediately.
Restocking on Shopify: What It Means and Why It Matters
Shopify restocking covers everything from forecasting to receiving and updating on-hand counts. The goal is to maintain target availability with the least cash tied up.
How Shopify tracks inventory by SKU, variant, and location
Inventory is tracked at the variant level and per location.
Each variant has a single SKU and barcode; quantities are location-specific.
Order routing allocates from the highest-priority location with available stock.
Apps and 3PLs can control inventory for specific locations, making them read-only in admin.
Stockouts vs overstock: impact on sales and cash flow
Stockouts reduce conversion, harm SEO from frequent “out of stock,” and increase support load.
Overstock ties up cash, increases carrying/aging costs, and raises markdown risk.
Effective restocking balances service level targets with cash constraints.
Choose a restocking method that fits your catalog
Min–Max (continuous review): Use for fast movers. Reorder when at Reorder Point (ROP) up to Max level.
Periodic review (weekly/biweekly): Use for slow/medium movers or high MOQs. Replenish to target stock on a set cadence.
EOQ (economic order quantity): Use when purchase/holding costs are stable and MOQs are flexible.
JIT (just-in-time): Use for made-to-order or supplier-direct items with reliable short lead times.
Decision guidance:
High velocity + variable demand: Min–Max with safety stock.
Medium velocity + MOQs: Periodic review with rounding to MOQ.
Low velocity + long lead time: Periodic or EOQ; consider discontinuation rules.
Custom/seasonal: JIT or preorders with clear customer messaging.
Before You Restock: Setup and Data Hygiene
Good data makes restocking accurate and fast.
Enable inventory tracking and configure locations
Turn on tracking:
Products > All products > Select product > Variant > Inventory > Check “Track quantity.”
Set locations:
Settings > Locations > Add locations for warehouse, POS, 3PL, dropship.
Set order routing:
Settings > Shipping and delivery > Order routing preferences > Arrange fulfillment priority.
SKU, barcode, and vendor defaults
Use unique SKUs across variants; avoid duplicates across products.
Store barcodes (UPC/EAN/ISBN) for scanning; keep formats consistent.
Set a default vendor per product (Product > Vendor) to speed purchase orders.
ABC classification using Shopify reports
Go to Analytics > Reports > Sales > Sales by product (last 90–180 days).
Export, sort by revenue, compute cumulative % of total revenue.
Classify:
A: Top ~70% revenue (tight control, frequent review).
B: Next ~20% (balanced control).
C: Bottom ~10% (infrequent review, consider discontinuing).
Use ABC to set review cadences and cycle count frequency.
Lead time, MOQ, and cost data you must collect
Supplier lead time (average and 90th percentile).
MOQ and order multiples.
Unit cost and expected landed cost components (freight, duty, fees).
Variability: recent on-time delivery % and lead-time range.
More time, More Sales
How to Restock in Shopify Admin (Fast Methods)
Use these native workflows to update available quantities quickly.
Adjust a single product or variant quantity
Products > All products > Select product > Variant > Inventory.
Choose the location from the dropdown and adjust Available.
Optionally add internal notes (using tags or notes fields) for audit context.
Use for one-off corrections or small manual adjustments.
Bulk edit inventory across multiple SKUs
Products > Inventory.
Filter by location and product type/collection as needed.
Select items > Click “Open bulk editor” or “Edit quantities.”
Add columns for each location if needed. Enter new Available quantities.
Save to apply changes across SKUs at once.
Tips:
Use filters to isolate “low stock” products.
Sort by Available ascending to prioritize critical items.
CSV import for large updates (with template)
Export a CSV to get the correct structure:
Products > Inventory > Export (current page or all).
Update fields offline. Key columns commonly used:
SKU
Location
Available
Incoming (optional)
Import:
Products > Inventory > Import > Upload CSV > Review > Import.
Mapping tips:
Ensure Location names match exactly.
Keep one row per SKU per Location.
If you don’t use SKUs, use handle + variant options to match—but SKUs are strongly recommended.
Common errors (tracking off, read-only locations)
Tracking disabled: Enable “Track quantity” on the variant or your changes won’t apply.
Read-only locations: If a 3PL/app manages a location, quantities may be locked. Update via the provider/app instead.
Duplicate SKUs: Causes incorrect matches in CSV updates. Enforce uniqueness.
Location mismatch: CSV import fails if the location name doesn’t match exactly.
Missing variants: Ensure the variant exists; inventory import does not create variants.
Receiving Inventory from Suppliers
Use POs and Transfers to record incoming stock accurately.
Create and receive purchase orders with Stocky (POS Pro)
Install Stocky (included with POS Pro).
In Stocky:
Purchase orders > New PO > Select supplier and destination location.
Add items by search, SKU, or scanner. Enter quantities and expected arrival date.
Add freight/duty to landed cost fields if used.
When shipment arrives:
Open PO > Receive > Scan items (or mark lines received).
Partial receipts: Receive only the arrived units; backorder remaining.
Post receipt to Shopify: Stocky updates on-hand at the destination location.
SOP checklist:
Verify carton count vs packing list.
Scan each unit or carton barcode.
Record discrepancies and damage separately.
Attach invoice/freight docs for landed cost reconciliation.
Use Transfers to receive into locations
Shopify Admin > Products > Transfers > Create transfer.
From: Supplier (or another location). To: Destination location.
Add items and quantities; Mark as “In transit.”
On arrival: Open transfer > Receive items (scan or mark received).
Use Transfers if you don’t use Stocky or for inter-location moves.
Barcode scanning for accurate receiving
Use a compatible scanner with Stocky or Shopify mobile app.
Scan the product barcode; avoid manual SKU entry to reduce errors.
Print shelf or bin labels immediately after receiving.
Landed cost and partial receipts
Track partial receipts to avoid overstating available inventory.
If using Stocky, allocate freight/duty across received items to maintain accurate unit costs.
If not using Stocky, maintain landed cost in your accounting/ERP and update product costs periodically.
Automate Restocking Signals
Turn replenishment from reactive to proactive.
Reorder point and safety stock formulas
Average daily demand (ADD) = Units sold over period / Days in period.
Reorder point (ROP) = (ADD × Lead time in days) + Safety stock.
Safety stock (simple) = Z × σLT, where:
Z is the service level factor (e.g., 1.65 for ~95%).
σLT is demand standard deviation during lead time.
Practical shortcut:
Safety stock ≈ (Max daily sales × Max lead time) − (Average daily sales × Average lead time).
Per-location:
Calculate ROP separately for each location based on local demand and local lead time.
Build low-stock alerts in Shopify Flow
Create a product metafield “reorder_point” (number) per variant or per location via tags/metafields.
Flow recipe:
Trigger: Scheduled (daily) or “Inventory quantity changed.”
Condition: Available at location < reorder_point.
Actions:
Send email/Slack to purchasing.
Add product tag “REORDER.”
Create a row in a Google Sheet via HTTP request for PO prep.
Auto-create draft POs or Slack/Email alerts
If using Stocky, use Flow’s app actions or HTTP requests (where supported) to create a PO draft.
Otherwise, post to your procurement tool or Google Sheet with all required PO fields (SKU, qty, supplier, location).
Include ETA and lead time so buyers can prioritize.
Back-in-stock notifications for customers
Enable a back-in-stock notification app on product pages.
Trigger emails/SMS when inventory becomes available to recover lost demand.
Coordinate with Flow tags to pause ads for out-of-stock SKUs and resume on restock.
For spreadsheet calculators and example Flow exports, see the inventory planning tools.
Multi-Location and Channel Allocation
Control where stock is held and how orders are fulfilled.
Set per-location quantities and priorities
Products > All products > Variant > Inventory > Set quantities for each location.
Settings > Shipping and delivery > Order routing preferences:
Choose priority: ship from location with most inventory, or closest to customer, etc.
Consider dedicating a location for online vs POS to avoid channel conflict.
Reserve stock for online vs POS
Maintain per-location safety stock buffers (e.g., POS min-display stock).
Adjust routing so POS locations are lower priority for online orders.
For high-velocity items, increase POS buffer during weekends or events.
Transfer stock between locations
Products > Transfers > Create transfer.
From: Source location; To: Destination location.
Add SKUs and quantities; Mark in transit; Receive at destination on arrival.
Use barcodes to scan out/in to minimize shrinkage.
Dropship/3PL locations and synchronization
Settings > Locations > Add a location and assign it to the fulfillment app/3PL.
Inventory may become read-only for that location; updates flow from the 3PL/app.
Ensure your 3PL syncs:
Inventory levels (per location).
Fulfillment status updates and tracking.
ASN/receiving confirmations for inbound POs.
Special Cases: Variants, Bundles, and Preorders
Handle edge cases that often distort counts.
Variants and parent-child restocking
Restock by variant, not just parent product.
Use the bulk editor to ensure all sizes/colors are updated.
For size runs, use transfers to pre-allocate by location demand (e.g., more M/L at POS).
Bundles/kits and component-level stock rules
Shopify doesn’t natively decrement components when a bundle sells.
Options:
Pre-kitted bundles: Track as their own SKU with separate stock.
Virtual bundles: Use an app that maps bundle SKU to component SKUs and syncs inventory.
Reordering: Drive POs from component demand, not bundle demand, to avoid shortages.
Preorders and continue selling when out of stock
Products > Variant > Inventory > Check “Continue selling when out of stock.”
Add clear preorder messaging and estimated ship dates on PDP and order confirmation.
Keep separate locations for preorder vs on-hand if you must split promise dates.
Returns: restock items and adjust counts safely
Orders > Select order > Return items.
Choose items, reason, and return-to location; check “Restock” when goods are received and salable.
For damaged/unsellable returns, do not restock; instead, create a write-off adjustment at the returns location.
Avoid double-counting by only restocking upon physical receipt and inspection.
Forecasting and Planning
Forecasting converts uncertainty into actionable reorder quantities.
Use Shopify reports to estimate demand
Analytics > Reports > Sales by product (90–180 days) for baseline velocity.
Analytics > Reports > Sales by product variant for size/color curves.
Analytics > Reports > Inventory > Sell-through rate for aging and demand strength.
Export and model seasonality uplifts or promotions separately.
If you prefer an app-driven approach, consider the Verve AI Shopify inventory forecasting app to generate SKU-level demand and reorder points.
Seasonality and promotions
Build seasonal indices per SKU or category (e.g., holiday uplift factors).
Model promo uplifts based on historical campaigns or channel plans.
Adjust ROP and order quantities for upcoming events.
MOQ negotiation and supplier SLAs
Share your forecast and variability with suppliers to negotiate:
Smaller MOQs or staggered shipments.
Faster or guaranteed lead times (SLA with penalties/credits).
Reserved capacity for peak seasons.
Scenario planning for lead-time risk
Maintain three scenarios: Base, Optimistic, Risk-adjusted (P90 lead time).
Use the risk-adjusted scenario for A-items to protect service levels.
For C-items, accept lower service levels to conserve cash.
Measure, Audit, and Improve
Close the loop with metrics and disciplined audits.
KPIs: turnover, days of supply, stockout rate
Inventory turnover = COGS / Average inventory.
Days of supply (DoS) = On-hand / Average daily demand.
Stockout rate = % of sessions or days with zero availability per SKU.
Track service level (fill rate) for A-items separately.
Cycle counts and audit SOP
Count A-items weekly, B-items monthly, C-items quarterly.
Use scanners and blind counts; reconcile discrepancies same-day.
Investigate root causes: receiving errors, shrinkage, mis-picks, bundling sync issues.
Slow-mover liquidation and cash recovery
Identify SKUs with low sell-through and high DoS.
Tactics:
Strategic markdowns or bundles with fast movers.
Channel-specific promotions.
Supplier returns or swaps where possible.
Continuous improvement checklist
Review forecast accuracy (MAPE) monthly; recalibrate ROPs.
Update lead times and MOQs quarterly.
Audit Flow automations and alert thresholds after major season changes.
Train staff on receiving and transfer SOPs; refresh barcode labels regularly.
For deeper, ongoing tips, browse our inventory management blog.
Tools, Templates, and Integrations
Make the process repeatable and scalable (e.g., the Verve AI WooCommerce inventory forecasting plugin).
Reorder point calculator (download)
Inputs per SKU-location: Average daily demand, lead time (avg and P90), service level, demand variability.
Outputs: Safety stock, ROP, suggested order quantity (by min/max or periodic review).
Host your calculator centrally and share with purchasing. A maintained set of calculators and templates is available in our inventory planning tools.
CSV import template and mapping tips
Keep a master SKU-location sheet with columns:
SKU, Title, Variant options
Location
Available, Incoming
Reorder_point, Safety_stock
Use Shopify’s exported inventory CSV as your base to avoid column mismatches.
Flow automation recipes
Low-stock Slack ping:
Trigger: Inventory quantity changed.
Condition: Available < reorder_point.
Action: Send Slack message to #purchasing with SKU, location, and qty.
Daily reorder digest:
Trigger: At 8am daily.
Action: Query SKUs below ROP; post CSV/JSON to Google Sheet for buyers.
PO draft creation:
Trigger: SKU tagged “REORDER.”
Action: HTTP request to your purchasing tool to create draft POs grouped by vendor.
API and 3PL integration considerations
Use webhooks (inventory_levels/update, fulfillments/create) to keep systems in sync.
REST/GraphQL endpoints:
InventoryItem, InventoryLevel for stock and locations.
FulfillmentOrder for routing and reservations.
With 3PLs:
Exchange ASNs for inbound POs.
Require per-location inventory snapshots daily and after each receipt.
Validate EDI/CSV mappings for SKUs, barcodes, and case packs.
Soft CTA:
If restocking still feels reactive, pick one area—forecasting, receiving SOPs, or Flow alerts—and improve it this week. Small, consistent upgrades compound into fewer stockouts and healthier cash flow.
FAQs
How do I quickly restock multiple Shopify products at once?
Go to Products > Inventory, filter the list, then use “Open bulk editor” to edit quantities across SKUs and locations.
For hundreds of SKUs, export the inventory CSV, edit Available by Location, and re-import.
For large receipts, create a Transfer or use Stocky POs to update counts as you receive goods.
What’s the difference between adjusting quantities and receiving a PO/Transfer?
Adjusting quantities directly changes Available and is best for corrections.
Receiving via PO (Stocky) or Transfer reflects inbound stock accurately, supports partial receipts, and preserves audit history and landed cost.
How do I set up low-stock alerts or automatic reorder reminders in Shopify?
Store a “reorder_point” value per SKU (metafield or tag).
In Shopify Flow, trigger on schedule or when inventory changes; if Available < ROP, send Slack/email, tag the product, or create a row in a purchasing sheet.
For advanced automation, use HTTP requests to interface with your purchasing app.
How do I handle preorders or sell when a product is out of stock?
Enable “Continue selling when out of stock” on the variant.
Add preorder messaging and estimated ship dates on the product page and confirmation emails.
Track preorder demand separately and align supplier lead times to avoid missed promises.
What’s the best way to manage inventory across multiple locations and POS?
Set order routing priorities (Settings > Shipping and delivery).
Maintain per-location safety stock buffers, especially for POS.
Use Transfers to move stock between locations and receive accurately with scanning.
How do I restock bundles or kits that draw from component inventory?
Pre-kitted bundles: receive and track as their own SKU.
Virtual bundles: use an app that decrements component SKUs upon bundle sale.
Base reorders on component demand, not just bundle sales, to avoid component stockouts.
How do returns affect inventory counts and restocking accuracy?
Only restock upon physical receipt and inspection; mark damaged items as non-restock.
Return items to the correct location to maintain accurate per-location counts.
Use reason codes internally to analyze defect or damage patterns.
Can I integrate a 3PL or supplier to automate restocking updates?
Yes. Add the 3PL as a managed location; inventory becomes read-only and is synced by the 3PL app.
Use webhooks and API endpoints to pass ASNs, receipts, and inventory updates.
Require SLAs with your 3PL for update frequency and accuracy.
Additionally, if you operate on multiple platforms, a WooCommerce inventory forecasting plugin can help align planning across channels.
