How Our Calculations Work

StreamStock uses proven statistical methods to analyze your inventory, forecast demand, and generate actionable recommendations. This page explains every parameter, formula, and threshold in plain English.

Written for operations teams, buyers, and anyone who wants to understand exactly what the numbers mean.

Key Settings & Default Parameters

Every calculation in StreamStock builds on a small set of configurable parameters. Understanding these is the foundation for understanding everything else on this page.

ParameterDefaultWhat It Means
Lead Time 14 days How long it takes from placing a purchase order to receiving the stock in your warehouse. This is the most important number for restock calculations — if your supplier takes 14 days to deliver, you need at least 14 days of stock on hand at all times.
Safety Stock 3 days An extra buffer of stock kept above the lead time requirement. This protects against unexpected demand spikes or delivery delays. With a 14-day lead time and 3-day safety stock, you effectively need at least 17 days of stock before you start worrying.
Low Stock Threshold 7 days When a product has fewer than this many days of stock remaining, it is flagged as low stock. This is a general-purpose early warning.
Dead Stock Threshold 90 days If a product has had zero sales for this many consecutive days (roughly 3 months), it is classified as dead stock. Dead stock ties up capital and warehouse space.
Forecast Horizon 30 days How many days into the future StreamStock predicts demand. The system generates a daily forecast for each of the next 30 days.
Target Coverage 60 days The ideal number of days of stock to maintain. When StreamStock calculates how much to reorder, it aims to bring your stock up to this level. 60 days gives you roughly two months of runway.
Analysis Period 90 days The default lookback window for all calculations. Revenue rankings, health scores, and demand averages are computed from the last 90 days of sales data. You can change this in the dashboard filters.
ABC “A” Threshold 80% Products that collectively contribute to the first 80% of total revenue are classified as Class A. This follows the Pareto principle (80/20 rule).
ABC “B” Threshold 95% Products contributing between 80% and 95% of cumulative revenue are Class B. Everything above 95% is Class C.

Three Foundational Concepts

These three terms appear throughout every section of this page. They are the building blocks of all StreamStock metrics.

Average Daily Demand

The average number of units sold per day over the analysis period. Calculated by dividing total units sold by the number of days in the period (default: 90). If a product sold 270 units in the last 90 days, its average daily demand is 3 units per day.

Formula
Average Daily Demand = Total Units Sold / Number of Days in Period

Days of Stock

How many days your current stock will last at the current rate of sales. This is the single most important metric for deciding when to reorder. If you have 150 units in stock and sell 10 per day, you have 15 days of stock.

Formula
Days of Stock = Current Stock on Hand / Average Daily Demand

Reorder Point

The stock level at which you should place a new purchase order. It accounts for both lead time (how long delivery takes) and safety stock (your buffer). When your stock drops to this level, you need to order immediately to avoid running out.

Formula
Reorder Point = Average Daily Demand × (Lead Time + Safety Stock)

With defaults: Reorder Point = Average Daily Demand × (14 + 3) = Average Daily Demand × 17
Example

A helmet that sells 8 units per day:

• Days of Stock (with 200 units): 200 / 8 = 25 days

• Reorder Point: 8 × 17 = 136 units

• Since 200 > 136, this product is above its reorder point — no rush to reorder.

💰
Sales Dashboard

The Sales Dashboard shows your Shopify order data aggregated into daily totals. All sales figures are pulled directly from your Shopify orders during each sync.

Date Range Selection

You can view sales data for different time windows using the period chips: 30, 60, 90, or 180 days. There is also a Custom option that lets you pick an exact start and end date.

When you select a period, all sales metrics recalculate: total revenue, units sold, number of orders, and average order value are all based on the selected window.

How Daily Sales Are Calculated

During each Shopify sync, every order line item is extracted and aggregated into one record per product per day. Each record contains:

Units Sold — total quantity of that product sold on that day

Revenue — total revenue from that product on that day (price × quantity)

The Daily Sales table shows these records summed across all products for each date.

Summary Statistics

MetricHow It Is Calculated
Total RevenueSum of all line item revenue in the selected period.
Units SoldSum of all quantities sold in the selected period.
OrdersCount of distinct orders in the selected period.
Avg. Order ValueTotal Revenue ÷ Number of Orders.

Sorting

Click any column header in the Daily Sales table to sort the data. Click again to toggle between ascending and descending order. The arrow indicator shows the current sort direction. Sorting is performed client-side on the cached data — no additional API calls are made.

Top Sellers

Below the daily sales table, the Top Sellers section ranks products by total revenue within the selected period. This gives a quick view of which products are driving the most income.

📊
ABC Classification

ABC classification uses the Pareto principle (80/20 rule) to categorize products by their revenue contribution. This helps you focus attention and resources on the products that matter most to your bottom line.

How It Works

Products are ranked by their total revenue over the analysis period (default: 90 days), from highest to lowest. StreamStock then computes the cumulative percentage of total revenue and assigns each product a class:

Classification Rules
Class A = Products contributing to the first 80% of cumulative revenue
Class B = Products contributing to the next 15% (80%–95%)
Class C = Products contributing to the remaining 5% (95%–100%)
Example

If your store has 100 products generating £50,000 in 90-day revenue:

Class A: ~15 products generating £40,000 (80%) — your top sellers

Class B: ~30 products generating £7,500 (15%) — steady performers

Class C: ~55 products generating £2,500 (5%) — long tail items

Unclassified Products

Products with zero sales during the analysis period cannot be ranked by revenue. These are labelled Unclassified in the dashboard. They may be new arrivals, seasonal items, or dead stock.

What To Do With Each Class

Class A: Never let these go out of stock. Monitor daily, keep higher safety stock. These are your revenue drivers.

Class B: Regular monitoring. Standard reorder levels. Potential to move to A with promotion.

Class C: Reduce inventory investment. Consider discontinuing if consistently low-performing. Good candidates for bundling with Class A items.

💚
Inventory Health Score

Each product receives a health score from 0 to 100. The score is a weighted composite of five factors, each measuring a different aspect of inventory performance. Higher scores indicate a well-managed product; lower scores indicate problems that need attention.

Stock Coverage
Weight: 30%
Days of stock remaining vs. target
Turnover Rate
Weight: 25%
How quickly inventory is selling
Dead Stock Risk
Weight: 20%
Recency of last sale
Low Stock Risk
Weight: 15%
Current stock vs. reorder point
Stockout Risk
Weight: 10%
Days of stock vs. lead time
Final Formula
Health Score = (Stock Coverage × 0.30) + (Turnover × 0.25) + (Dead Stock Risk × 0.20) + (Low Stock Risk × 0.15) + (Stockout Risk × 0.10)

Score Interpretation

ScoreStatusWhat It Means
60–100HealthyGood stock levels, strong sales, no immediate action needed. Maintain current approach.
30–59WarningSomething is off. Stock might be too low, too high, or sales are declining. Review and adjust ordering.
0–29CriticalSignificant problem. Product may be stocked out, heavily overstocked, or completely dead. Immediate attention required.
50InactiveProduct has no stock, no demand, and no recent sales. Likely phasing out, discontinued, or seasonal. Not a problem — just not active.

Inactive Product Detection

Products that meet all three of the following criteria are classified as Inactive rather than Critical:

No stock on hand (zero or negative inventory)

No demand (zero average daily sales in the analysis period)

No recent sales (last sale was more than 90 days ago, or the product has never been sold)

These products receive a neutral score of 50 so they do not pollute the Critical list. Without this detection, a store with hundreds of discontinued SKUs would see them all flagged as critical, drowning out the products that genuinely need attention.

Filtering options:

• Use the ⚪ Inactive filter chip to view only inactive products

• Check the “Hide phasing out” toggle to exclude inactive products entirely from the inventory table

Inactive products are shown with a dimmed row style and a grey status badge to visually distinguish them from products that need action.

Component 1: Stock Coverage (30% of score)

What it measures: Whether you have enough stock to cover upcoming demand, without having too much. This is the most heavily weighted component because running out of stock (or drowning in it) has the biggest impact on your business.

How it scores:

Zero stock with active demand → Score: 0 (worst case — you are stocked out)

Below lead time (under 14 days of stock) → Score: 0–30 (danger zone — you may run out before a new order arrives)

Between lead time and 3× target days → Score: 70–100 (sweet spot — well-stocked without excess)

More than 3× target days of stock → Score: 50 (overstocked — capital is tied up unnecessarily)

The target for stock coverage is: Lead Time + Safety Stock + 7 days = 14 + 3 + 7 = 24 days. Having exactly this much stock scores highest.

Component 2: Turnover Rate (25% of score)

What it measures: How efficiently your inventory is converting into sales. A high turnover rate means you are selling through stock quickly; a low rate means stock is sitting on shelves.

Turnover Rate Formula
Turnover Rate = (Average Daily Demand × 365) / Current Stock on Hand

How it scores:

Turnover = 0 (no sales at all) → Score: 0

Turnover < 2× per year (slow) → Score: 0–50 (stock is turning over less than twice a year)

Turnover 2–12× per year (healthy) → Score: 50–100 (the ideal range for most retail products)

Turnover > 12× per year (very fast) → Score: 90 (excellent — selling through stock monthly or faster)

Example

A product with 5 units/day average sales and 300 units in stock:

• Turnover Rate = (5 × 365) / 300 = 6.1× per year

• This is in the healthy range → Turnover Score ≈ 71

Component 3: Dead Stock Risk (20% of score)

What it measures: How recently the product last sold. Products that have not sold in a long time are at risk of becoming dead stock. The more recent the last sale, the higher the score.

How it scores:

Sold today or recently (with active sales) → Score: close to 100

Last sale 45 days ago → Score: ~50

Last sale 90+ days ago (dead stock threshold) → Score: 0

Never sold at all → Score: 0

The score decreases linearly from 100 to 0 as the days since last sale approach the 90-day dead stock threshold.

Component 4: Low Stock Risk (15% of score)

What it measures: Whether your current stock level is above or below the reorder point. Being above the reorder point is good; being below it means you should have already placed an order.

How it scores:

Zero stock → Score: 0

Below reorder point → Score: 0–50 (proportional to how far below you are)

At or above reorder point → Score: 50–100 (good — you have enough runway)

No demand (reorder point is 0) → Score: 100 (no risk because nothing is selling)

Component 5: Stockout Risk (10% of score)

What it measures: The immediate risk of running out of stock before a new order could arrive. This focuses specifically on the lead time window.

How it scores:

Already stocked out (0 stock, positive demand) → Score: 0 (too late)

Less than 14 days of stock (less than lead time) → Score: 0–40 (high risk — even if you order now, you may run out)

14+ days of stock → Score: 40–100 (safe — an order placed now would arrive before you run out)

Worked Example — Full Health Score

Product selling 4 units/day, 120 units in stock, last sold 2 days ago:

• Days of Stock: 120 / 4 = 30 days

• Reorder Point: 4 × 17 = 68 units

• Turnover Rate: (4 × 365) / 120 = 12.2×

• Stock Coverage Score: 30 days is in the sweet spot → 85

• Turnover Score: 12.2× is excellent → 90

• Dead Stock Score: last sold 2 days ago → 98

• Low Stock Score: 120 > 68 (above reorder) → 80

• Stockout Score: 30 days > 14 (safe) → 85

Final: (85×0.30)+(90×0.25)+(98×0.20)+(80×0.15)+(85×0.10) = 88 — Healthy ✅

🔮
Demand Forecasting

StreamStock uses two statistical forecasting methods and automatically selects the best one for each product based on the amount of available sales data.

Forecast Horizon

The forecast horizon determines how many days ahead StreamStock predicts demand. You can choose from 30, 60, 90, 120, or 180 days using the period selector on the Forecasts tab. Changing the horizon regenerates all forecasts for the new timeframe.

Shorter horizons (30–60 days) produce tighter, more confident predictions. Longer horizons (120–180 days) are useful for planning purchase orders and seasonal preparation, but carry more uncertainty — reflected in wider confidence intervals.

Simple Moving Average (SMA)

The simplest approach: average daily sales over the last 30 days. Best for products with stable, consistent demand and no strong trend.

SMA Formula
Predicted Daily Demand = Sum of last 30 days of sales / 30

SMA treats every day equally. If you sold 150 units over the last 30 days, SMA predicts you will sell 5 units per day going forward.

Holt’s Double Exponential Smoothing

A more sophisticated method that captures both the current level (how much you are selling now) and the trend (whether sales are growing or declining). It uses two smoothing parameters:

Holt’s Equations
Level: L(t) = α × Y(t) + (1 - α) × (L(t-1) + T(t-1))
Trend: T(t) = β × (L(t) - L(t-1)) + (1 - β) × T(t-1)
Forecast: F(t+h) = L(t) + h × T(t)

Where α = 0.2 (level smoothing), β = 0.1 (trend smoothing)

Alpha (α = 0.2) controls how much weight is given to the most recent sales data vs. historical patterns. A value of 0.2 means recent data gets 20% weight and historical trend gets 80%. This makes the forecast smooth and less reactive to daily noise.

Beta (β = 0.1) controls how quickly the trend itself can change. A low value like 0.1 means the trend adjusts slowly, preventing the forecast from overreacting to short-term fluctuations.

Automatic Method Selection

StreamStock automatically picks the best method for each product based on how much sales data is available:

Sale Days AvailableMethod UsedWhy
Fewer than 14 daysSMA onlyNot enough data to detect a trend. Simple average is more reliable.
14–29 daysBlended: 60% SMA + 40% Holt’sEmerging trend data exists but is not yet strong. Blending gives stability.
30+ daysBest of SMA or Holt’sBoth methods are tested against the last 7 days of actual sales. The one with the lowest prediction error wins.

Backtesting & Error Measurement (RMSE)

To determine which method is more accurate, StreamStock hides the last 7 days of actual sales data, generates a forecast using only the earlier data, and measures how far off the predictions were. This is called backtesting.

Root Mean Square Error (RMSE)
RMSE = √(Σ(actual - predicted)² / n)

Tested on: last 7 days of actual sales vs. predictions
Lower RMSE = better accuracy

The method with the lower RMSE (closer predictions to reality) is selected for that product.

Confidence Intervals (95%)

Every forecast comes with a range of plausible outcomes. StreamStock calculates 95% confidence intervals, meaning there is a 95% probability that actual demand will fall within this range.

Confidence Interval Formula
Lower Bound = Prediction - 1.96 × RMSE × √h
Upper Bound = Prediction + 1.96 × RMSE × √h

Where h = days ahead (1, 2, 3, ... 30)
1.96 = statistical z-score for 95% confidence

The intervals widen the further out you look. Day 1 predictions are narrow (high confidence); day 30 predictions are wider (more uncertainty). This reflects the natural reality that predicting tomorrow is easier than predicting next month.

Example

A product averaging 5 units/day with RMSE of 2.1:

• Day 1 forecast: 5.0 units (range: 0.9 – 9.1)

• Day 7 forecast: 5.0 units (range: 0.0 – 15.9)

• Day 30 forecast: 5.0 units (range: 0.0 – 27.5)

The wider range further out reflects increasing uncertainty.

Confidence Score

Each product’s forecast also gets a confidence score from 0 to 100, displayed in the dashboard. This tells you how reliable the forecast is based on how variable the product’s sales history is.

Confidence Score
Coefficient of Variation (CV) = RMSE / Average Daily Demand
Confidence Score = (1 - CV) × 100, clamped to 0–100

High confidence (70–100): Prediction error is small relative to average demand. The forecast is reliable.

Medium confidence (40–69): Moderate variability. Use as a guideline but expect some deviation.

Low confidence (0–39): Sales are highly erratic or sparse. Treat forecast as a rough estimate only.

Trend Detection

StreamStock detects whether demand for each product is trending up, down, or stable by comparing recent sales to slightly older sales:

Trend Calculation
Recent Average = Average of the last 7 days of sales
Previous Average = Average of days 8–14
Change = ((Recent - Previous) / Previous) × 100%

If Change > +10% → Trend: Up
If Change < -10% → Trend: Down
Otherwise → Trend: Stable

The ±10% threshold prevents minor fluctuations from being labelled as trends. A product needs to show a meaningful shift before the trend indicator changes.

Seasonality Detection

For products with enough sales history (at least 60 sale-days in a year), StreamStock checks for seasonal patterns — months that consistently sell more or less than average.

Seasonality Check
1. Group all sales by calendar month
2. Compute each month’s average daily sales
3. Compute the overall average across all months
4. Seasonal Index for each month = month average / overall average
5. If the variation between months (CV) exceeds 0.15 → product is seasonal

When a product is seasonal, the base forecast is multiplied by the seasonal index for the target month. For example, if December historically sells 1.5× the average, December predictions are scaled up by 50%.

Forecast Priority

Each product forecast is assigned a priority based on how urgently you need to act. This is driven by days of stock relative to lead time:

PriorityConditionWhat It Means
CriticalDays of stock < 14 (lead time)You will run out before a new order arrives. Act immediately.
HighDays of stock < 17 (lead time + safety)You are eating into your safety buffer. Order this week.
WarningDays of stock < 28 (lead time × 2)Stock is getting low. Start planning your next order.
NormalDays of stock ≥ 28Comfortable stock levels. No immediate action needed.

💀
Dead Stock Detection

Dead stock ties up capital and warehouse space. StreamStock identifies products that have stopped selling but still have inventory on hand.

Detection Criteria

A product is flagged as dead stock when it has stock on hand but no sales in the last 90 days (the dead stock threshold). This means three full months with zero units sold.

Velocity Score

Each dead stock item receives a velocity score from 0 to 100. Lower scores mean the stock is “deader” — it will take longer to sell through at historical rates (if it sells at all).

Velocity Score Calculation
Months of Stock = Current Stock / Average Monthly Sales

12+ months of stock → Score: 5 (very dead — over a year to sell through)
6–12 months → Score: 20 (dead — half a year or more)
3–6 months → Score: 40 (moderately dead)
Under 3 months → Score: 60 (still some movement)
No sales history at all → Score: 0 (completely dead)

Recommendations

Velocity ScoreRecommendationWhat To Do
0–9LiquidateClear at any price to recover capital. Donate or recycle if unsaleable.
10–29Heavy DiscountDeep price cuts (50%+ off) to move remaining inventory quickly.
30–49BundlePair with popular Class A items. Use as gift-with-purchase.
50+HoldStill has some velocity. Monitor closely and revisit next month.

📦
Restock Recommendations

StreamStock calculates when to reorder and how much to order for each product based on demand data and your configured lead times.

Reorder Point

The stock level at which you should place a new order, accounting for the time it takes to receive stock plus a safety buffer:

Reorder Point Formula
Reorder Point = Average Daily Demand × (Lead Time + Safety Stock)

With defaults: Average Daily Demand × (14 + 3) = Average Daily Demand × 17

Recommended Order Quantity

When stock drops below the reorder point, StreamStock calculates how much to order to bring stock up to the target coverage level:

Order Quantity Formula
Target Stock = Average Daily Demand × Target Coverage Days
Recommended Order Qty = Target Stock - Current Stock

With defaults: Target Stock = Average Daily Demand × 60
Only generated when Recommended Qty > 0

Urgency Levels

LevelConditionAction
CriticalDays of stock < lead time (14 days)Order NOW — you will run out before the order arrives.
HighDays of stock < lead time + safety (17 days)Order this week — you are eating into your safety buffer.
NormalBelow reorder point but above lead timePlan order in next purchasing cycle.
LowApproaching reorder pointMonitor — no rush, but keep it on the radar.
Full Restock Example

A helmet selling 10 units/day, with 50 units in stock:

• Reorder Point = 10 × (14 + 3) = 170 units

• Stock (50) is well below the reorder point (170) — action needed.

• Target Stock = 10 × 60 = 600 units

• Recommended Order = 600 - 50 = 550 units

• Days of Stock = 50 / 10 = 5 days

• 5 days < 14-day lead time → Urgency: Critical

• Meaning: even if you order today, you will run out in 5 days but delivery takes 14 days. You face a 9-day stockout.

🌱
Growth Opportunities

The Growth Opportunities tool identifies your most successful products that are being held back by low inventory. These are products that sell well but could sell even more if you had more stock.

Which Products Qualify

A product appears in the Growth Opportunities list if it meets all of these criteria:

ABC Class A or B — it is in the top tier of revenue-generating products

• Has at least one stock problem: less than 30 days of stock, health score below 70, or an urgent restock recommendation

Opportunity Score

Each qualifying product gets a score from 0 to 100 that combines three factors:

Opportunity Score Formula
Opportunity Score = (Revenue Factor × 0.40) + (Turnover Factor × 0.30) + (Stockout Risk Factor × 0.30)
FactorWeightWhat It Measures
Revenue Factor40%How much revenue this product generates relative to the top product. A product earning half the revenue of your best seller scores 50.
Turnover Factor30%How fast this product sells through stock. Higher turnover means more opportunity if you increase inventory. Capped at 100.
Stockout Risk Factor30%How close the product is to running out. Fewer days of stock means higher urgency. Zero stock scores 100; 30+ days scores lower.

Estimated Lost Revenue

For products that are stocked out or close to it, StreamStock estimates how much revenue you are losing:

Lost Revenue Formula
Estimated Lost Revenue = Stockout Days × Average Daily Revenue

Stockout Days is based on how far the product is below its lead time coverage. If a product has 5 days of stock but lead time is 14 days, there are 9 potential stockout days. If the product is already at zero stock, the full lead time (14 days) is used.

Recommended Actions

ConditionRecommended Action
Zero stock + high demandUrgent restock — you are actively losing sales
Below lead time coverageExpedite order — you may run out before a regular order arrives
Below 30 days of stockIncrease order quantity — current levels are too tight for a top performer
Health score below 70Review supply chain — something in the stocking process needs attention
Example

Product: Epicurist 2.0 Ash (ABC Class A)

• Revenue: £12,400 / Top product: £15,000 → Revenue Factor = 12400/15000 × 100 = 83

• Turnover Rate: 8.2× / 12 → Turnover Factor = (8.2/12) × 100 = 68

• Days of Stock: 4 days → Stockout Factor = (1 - 4/30) × 100 = 87

Score: (83×0.4) + (68×0.3) + (87×0.3) = 33.2 + 20.4 + 26.1 = 80

• Stockout Days = 14 - 4 = 10 → Lost Revenue = 10 × (£12,400 / 90 days) = £1,378

• Recommended Action: Expedite order

🔔
Alert System

Alerts are generated automatically after each analysis run. They notify you of inventory conditions that require your attention.

Alert Types

TypeSeverityTriggered When
Restock UrgentCriticalA restock recommendation has “critical” urgency (days of stock < lead time)
Stockout RiskCriticalProduct has 0 stock but has sold at least one unit in the last 30 days
Low StockWarningStock is below reorder point with “high” urgency
Dead StockWarningNo sales in 90+ days with velocity score under 30

Deduplication

To prevent alert fatigue, StreamStock checks for existing unread alerts of the same type and product within the last 24 hours before creating a new one. You will receive at most one alert per issue per day, even if the analysis pipeline runs multiple times.

Alert Lifecycle

Alerts start as unread. You can mark them as read (acknowledging the issue) or dismiss them (removing from view). Dismissed alerts are not shown again unless the condition persists in the next analysis run, at which point a fresh alert is created.

Alert Volume Limits

To keep alerts manageable, stockout alerts are capped at 50 products per run. Restock and dead stock alerts are generated for all products that meet the criteria.

🏢
Multi-Warehouse Support

If your Shopify store has multiple warehouse locations (fulfilment centres, 3PLs, retail locations), StreamStock tracks inventory at each location separately.

Per-Location Inventory

During each sync, StreamStock pulls inventory levels from Shopify for every location. Each product can have different stock quantities at each warehouse. The system stores three quantities per location:

On Hand — physical units present at the location

Committed — units reserved for unfulfilled orders

Available — on hand minus committed (what can be sold)

The “All Locations” View

When no specific warehouse is selected in the dashboard, StreamStock aggregates stock across all locations. This gives you the total picture. For example, if you have 100 units in London and 50 units in Portland, the aggregate view shows 150 units.

All analysis metrics (health scores, ABC classification, restock recommendations) are recalculated based on the selected warehouse. Switching to a specific location shows you that warehouse’s stock levels and corresponding recommendations.

Per-Warehouse Restock Recommendations

Restock recommendations are scoped to the selected warehouse. When viewing “All Locations,” recommendations reflect aggregate stock. When viewing a specific warehouse, they reflect only that location’s stock — so you know exactly how much to ship or order for each location.

Warehouse Filter

The warehouse dropdown in the dashboard filters the entire page: inventory table, analysis cards, health scores, and restock recommendations all update to reflect the selected location.

🔗
Data Sources & Sync

StreamStock connects to your Shopify store via the Shopify GraphQL Admin API to pull the data it needs. No manual data entry required.

What Data Is Pulled

Data TypeWhat It IncludesUsed For
ProductsTitle, SKU, vendor, product type, price, image, statusProduct catalogue and identification
Inventory LevelsStock on hand, committed, available — per locationCurrent stock calculations, health scores
OrdersLine items with SKU, quantity, and revenueSales history, demand forecasting, ABC classification
LocationsWarehouse name, city, country, active statusMulti-warehouse breakdown

How Sync Works

Initial sync (first time): Pulls all products, all inventory levels, and up to 12 months of order history. This can take a few minutes depending on store size.

Incremental sync (subsequent runs): Pulls all products (to catch new items and stock changes) and only orders since the last sync. This is much faster.

Daily Sales Aggregation

When orders are synced, StreamStock extracts each line item and aggregates them into daily sales records: total units sold and total revenue per product per day. These daily records are what all calculations (average daily demand, ABC revenue, forecasting) are built on.

Inventory Snapshots

Each sync creates a snapshot of current stock levels. These snapshots accumulate over time, allowing StreamStock to track how stock levels change day by day. Historical snapshots are used to verify trends and provide context for forecasts.

📖
Glossary

Quick reference for every term used in StreamStock.

TermDefinition
ABC ClassificationA method of categorizing products by revenue contribution. A = top 80%, B = next 15%, C = bottom 5%.
Average Daily DemandTotal units sold divided by number of days in the analysis period. The core input for most calculations.
Average Order ValueTotal revenue divided by number of orders in the selected period.
Confidence IntervalA range around a forecast prediction. The 95% interval means there is a 95% chance actual demand falls within the range.
Confidence ScoreA 0–100 rating of how reliable a forecast is. Based on prediction error relative to average demand.
Days of StockCurrent stock divided by average daily demand. How many days your stock will last at current sales rates.
Dead StockProducts with inventory on hand but no sales in 90+ days.
Dead Stock ThresholdNumber of days without sales to classify a product as dead stock. Default: 90 days.
Forecast HorizonHow many days ahead the system predicts demand. Selectable: 30, 60, 90, 120, or 180 days.
Growth OpportunityA high-performing product (ABC A or B) that is constrained by low inventory. Scored by revenue contribution, turnover speed, and stockout risk.
Health ScoreA composite 0–100 score for each product, combining stock coverage, turnover, dead stock risk, low stock risk, and stockout risk.
Holt’s MethodDouble exponential smoothing. A forecasting technique that captures both level and trend in sales data.
Inactive ProductA product with no stock, no demand, and no recent sales (90+ days). Given a neutral score of 50 and excluded from the critical list. Can be hidden with the “Hide phasing out” toggle.
Lead TimeDays between placing a purchase order and receiving the goods. Default: 14 days.
Reorder PointThe stock level at which a new order should be placed. Equals average daily demand multiplied by (lead time + safety stock).
Opportunity ScoreA 0–100 rating for growth opportunity products. Combines revenue contribution (40%), turnover speed (30%), and stockout risk (30%).
RMSERoot Mean Square Error. Measures how far off forecast predictions were from actual sales. Lower is better.
Safety StockExtra buffer of stock kept above lead time to protect against demand spikes or delivery delays. Default: 3 days.
SeasonalityRecurring monthly patterns in demand. Detected automatically when monthly sales vary by more than 15% from the mean.
SMASimple Moving Average. A forecasting method that averages the last 30 days of sales.
Target CoverageThe ideal number of days of stock to maintain. Used to calculate recommended order quantities. Default: 60 days.
TrendWhether demand is going up, down, or staying stable. Detected by comparing the last 7 days to the previous 7 days.
Turnover RateHow many times per year you sell through your entire stock. Higher turnover generally indicates healthier inventory.
Velocity ScoreA 0–100 score for dead stock items. Lower scores mean the stock is harder to sell through.

StreamStock — Inventory intelligence for modern commerce

Back to Dashboard →