Just-in-time and safety stock represent two opposite philosophies about inventory risk. Most Shopify merchants apply neither consistently — and end up with the worst of both worlds.
Inventory strategy is fundamentally about where you put your risk.
Just-in-time (JIT) puts the risk on your supply chain: you hold almost no stock, so if your supplier is late or demand spikes, you stockout. Safety stock puts the risk on your balance sheet: you hold extra buffer stock, so if your supplier is late or demand spikes, you are protected — but your capital is tied up indefinitely.
Neither is universally correct. The right approach depends on your product, your supplier, your demand pattern, and your tolerance for the specific failure modes each strategy creates.
Just-in-time inventory is the practice of holding as little stock as possible — ordering only what you need, when you need it, to fulfil near-term demand.
In its purest form, JIT means your restock arrives precisely as your current stock runs out. No buffer. No safety stock. Perfect synchronisation between supply and demand.
JIT was developed by Toyota in the 1950s for manufacturing environments with highly reliable, local suppliers and predictable, stable demand. In that context, it eliminates waste brilliantly.
For most ecommerce merchants, the conditions that make JIT work in a Toyota factory do not exist.
JIT works when supply chains are reliable, lead times are short and consistent, and demand is predictable. When any one of those three conditions is absent — and in ecommerce, all three are often absent — JIT converts into a stockout machine.
Safety stock is the buffer inventory you hold above your expected demand to protect against two specific risks:
Safety stock is not "extra stock because we are not sure." It is a mathematically calculated buffer sized to give you a specific service level — typically 90–99% — meaning you want to have stock available for 90–99% of demand events.
The standard safety stock formula:
Safety Stock = Z × √(Lead Time) × σ_demand
Where Z is the service level multiplier (1.65 for 95%, 2.33 for 99%), and σ_demand is the standard deviation of your daily demand.
In practice, most Shopify merchants face conditions that make some level of safety stock necessary:
Supplier lead times are variable. A supplier who quotes 14 days delivers in 10 days sometimes and 21 days other times. That 7-day variance is risk that needs coverage.
Demand is unpredictable at the SKU level. A product can go viral on TikTok, get picked up by a publication, or benefit from a competitor stockout — and spike to 5× normal demand in 48 hours. No order placed after the spike will arrive in time without safety stock.
Shipping disruptions are common. Container delays, customs holds, courier failures — freight has inherent variability that is outside your control and your supplier's control.
Stockouts destroy customer relationships. A customer who hits an out-of-stock product and goes to a competitor often does not come back. The carrying cost of safety stock is usually far lower than the customer acquisition cost of replacing those customers.
JIT is genuinely the right strategy for some products and some merchants:
Print-on-demand and made-to-order products. If your product is manufactured only after an order is placed, you are naturally JIT. There is no inventory to hold.
Very expensive, slow-moving items. A product that costs £500 per unit and sells 2 per month has enormous carrying costs. Safety stock of even 2 units ties up £1,000. If your supplier can reliably deliver in 5 days, you may be better served with minimal buffer and a strong supplier relationship.
Perishable or trend-sensitive products. Products with short shelf lives or fast fashion cycles carry obsolescence risk that can outweigh the cost of occasional stockouts. Here, the risk of over-ordering is as real as the risk of under-ordering.
Dropshipping. If you do not hold any stock — your supplier ships directly to your customers — you are operating a JIT model by default. Your risk is now entirely your supplier's reliability.
JIT is not inherently wrong — it is wrong when applied to products with variable demand, unreliable suppliers, or long lead times. The strategic question is not "JIT or safety stock?" but "what are the specific risks for this SKU, and which strategy better manages them?"
Rather than picking one strategy for your whole store, apply the right strategy per product type:
Choosing the wrong strategy for a SKU is expensive in both directions:
Excess safety stock on a slow mover: You hold 6 months of buffer on a product that sells 20 units per month. That buffer costs you carrying cost every month and ties up capital that could be used for faster-turning stock.
No safety stock on a fast mover: Your best-selling product stockouts during your biggest sales period. You lose direct revenue, potentially lose the customers who bounce to a competitor, and your Shopify velocity metrics take a hit that can affect search and recommendation placement.
The asymmetry matters: the downside of a stockout on a Class A product during peak season is typically 3–5× greater than the downside of holding excess safety stock on the same product.
Most merchants currently operate on intuition: "I try to keep a few weeks of stock." This is neither JIT nor safety stock — it is an inconsistent middle ground that inherits the risks of both strategies without the benefits of either.
A practical path to systematic inventory strategy:
Step 1: Run an ABC analysis. Identify your top 20% of SKUs by revenue — your Class A products.
Step 2: For Class A SKUs, calculate proper safety stock using the formula above. Set reorder points that trigger orders in time to receive stock before safety stock is breached.
Step 3: For Class C SKUs (bottom 5% of revenue), move toward JIT. Order only what you need for the next replenishment cycle. Accept occasional stockouts on low-revenue products — the carrying cost savings justify it.
Step 4: Review Class B SKUs quarterly. As you get better demand data, classify them more precisely.
Step 5: Revisit safety stock levels when supplier performance changes, when you enter new sales seasons, or when a product's demand pattern shifts significantly.
InsightCore calculates per-SKU safety stock recommendations based on your actual demand standard deviation and your supplier's historical lead time variance. For each SKU, you see a recommended safety stock level, the carrying cost of that buffer, and whether your current stock is above or below the recommended threshold.
Rather than choosing JIT vs. safety stock for your whole store, you get a SKU-by-SKU view that applies the right strategy to each product based on its actual risk profile.
JIT and safety stock are not competitors — they are tools for different jobs.
JIT minimises carrying costs and works beautifully when supply chains are reliable and demand is stable. Safety stock protects revenue and customer relationships when variability — in supply or demand — makes lean stock dangerous.
For most Shopify stores: apply JIT thinking to your slow-moving Class C products, apply proper safety stock calculations to your revenue-driving Class A products, and use your Class B products as a testing ground as you build better demand data.
The goal is not to pick a philosophy and apply it universally. The goal is to make the inventory risk trade-off consciously, per SKU, with numbers — rather than by feel.
CoreCaptain detects phantom stock, sync errors, and inventory discrepancies automatically. 14-day free trial, no credit card required.
Start Free Trial