Sarah had 340 SKUs and $28k/month in revenue. She had no idea she was losing $2,000 every month to a problem she couldn't see. Here's exactly what happened — and how she fixed it.
This is a fictional but representative case study, based on patterns commonly seen across Shopify stores. The numbers, causes, and fixes are realistic and drawn from real merchant scenarios.
Sarah runs a mid-sized Shopify store selling home decor and lifestyle products. At the start of last year, she had 340 SKUs, was doing about $28,000/month in revenue, and felt like things were running smoothly.
She was wrong — but she had no way of knowing it yet.
In February, Sarah started noticing something off. Her team was cancelling more orders than usual — 6 to 8 per week, up from the normal 1 to 2.
The pattern: products showing as in stock when customers ordered, then discovered unavailable when staff went to pick and pack.
Her first assumption was staff error. She sent a reminder email, ran a quick training session, and moved on.
The cancellations slowed down for two weeks. Then came back.
"I thought it was just a busy season thing. We were doing more volume, so more errors made sense to me. I didn't dig deeper."
She was looking at the symptom. She wasn't looking for the cause.
Four months later, Sarah sat down to do her quarterly review. For the first time, she added up the cancellation numbers properly.
| Month | Cancelled Orders | Avg Order Value | Direct Revenue Loss |
|---|---|---|---|
| February | 24 | $58 | $1,392 |
| March | 31 | $61 | $1,891 |
| April | 28 | $55 | $1,540 |
| May | 29 | $59 | $1,711 |
| Total | 112 | $58 | $6,534 |
$6,534 in direct refunds over four months. But that was just what she could see.
When she factored in customer service time (averaging 20 minutes per incident), refund processing fees, and an estimate of lost repeat customers (based on her average customer LTV of $185), the true cost was closer to $8,000 over four months — roughly $2,000 per month.
$2,000/month is 7.1% of her $28k monthly revenue — effectively a silent tax that had been running for at least four months before she noticed it.
Sarah picked the 10 products with the most cancellations and ran a physical count. She'd been dreading doing this for weeks. The results were worse than she expected.
| Product | Shopify Count | Physical Count | Discrepancy | At Risk |
|---|---|---|---|---|
| Ceramic Vase Set (3-piece) | 24 | 11 | -13 | $754 |
| Linen Throw Pillow (Sage) | 18 | 7 | -11 | $363 |
| Wooden Candle Holder | 31 | 19 | -12 | $228 |
| Woven Storage Basket | 15 | 4 | -11 | $275 |
| Glass Terrarium (Medium) | 22 | 14 | -8 | $320 |
| Macrame Wall Hanging | 12 | 5 | -7 | $245 |
| Rattan Side Table | 8 | 3 | -5 | $325 |
| Dried Flower Arrangement | 20 | 9 | -11 | $275 |
| Marble Serving Board | 17 | 8 | -9 | $405 |
| Beeswax Candle Set | 35 | 21 | -14 | $210 |
On just 10 products: 101 phantom units, $3,400 in phantom stock value.
:::screenshot /blog/dashboard-overview-anomalies.png|This is what Sarah's dashboard would have looked like if she'd had CoreCaptain — 10 anomalies flagged, value at risk visible at a glance, root causes identified.|CoreCaptain dashboard with active anomalies :::quote "I remember staring at that spreadsheet for a long time. Some of these products were more than 50% phantom. I had no idea. The dashboard looked completely normal." :::
Sarah dug into the history on each of the 10 products. Over two days of investigation, three root causes emerged.
Her virtual assistant logged all customer returns in Shopify and placed the items back on the shelf — quickly, efficiently, without any condition check.
For the Ceramic Vase Set alone, Sarah found 7 returned sets on the shelf. All 7 had either chipped vases or missing pieces. All 7 had been added back to available inventory. All 7 were generating false available stock.
The same pattern repeated across the Macrame Wall Hanging (fragile pieces), the Dried Flower Arrangement (wilted returns), and the Rattan Side Table (damage from shipping).
Phantom units created this way: ~45 across the 10 products
Sarah's primary home goods supplier regularly sent 24–26 units on purchase orders for 30. Her receiving process: log "received" from the PO number, not from an actual count.
Over 18 months of ordering from this supplier, she conservatively estimated 15 short shipments averaging 5 units short each — 75 phantom units from a single supplier relationship.
When she called the supplier, they acknowledged the issue immediately and credited her account. The short shipments had been happening for over a year. Nobody had caught it because nobody was counting at receiving.
When staff noticed products running lower than expected, they'd occasionally update the Shopify count to match reality. Well-intentioned. But it meant:
Manual inventory adjustments without documentation are one of the most common ways that inventory problems become invisible. The number looks correct now — but the underlying issue is still there, creating the same discrepancy again in 2–3 weeks.
None of Sarah's fixes required new software or significant investment. They were all process changes.
Fix 1: Returns Workflow Overhaul
No return goes back to available inventory without: 1. Physical inspection by a named team member 2. Explicit categorisation: "restock" or "write off" 3. If write off: immediate Shopify inventory adjustment with reason noted
Time to implement: one afternoon to update the process doc and brief the team.
Fix 2: Receiving Verification
Every shipment is now physically counted before logging. Any discrepancy vs. the PO: 1. Logged immediately with photos 2. Supplier notified same day 3. Shopify updated to match actual received quantity (never the PO quantity)
Time to implement: 30 minutes to update the receiving checklist.
Fix 3: Required Notes on All Manual Adjustments
Every manual inventory adjustment now requires: 1. Reason (choose from a dropdown: damage, count correction, return write-off, other) 2. If "other": free text explanation 3. Operations lead reviews all manual adjustments weekly
Time to implement: 20 minutes to set up the process.
Two months after implementing the changes, Sarah ran the numbers again.
| Metric | Before | After (60 days) | Change |
|---|---|---|---|
| Cancelled orders per week | 6–8 | 0–1 | -87% |
| Estimated monthly loss | ~$2,000 | ~$150 | -92% |
| Inventory accuracy (top 20 SKUs) | 68% | 94% | +26 points |
| Receiving discrepancies caught | 0/month | 3–4/month | Now catching them |
| Returns restocked incorrectly | ~12/month | 0 | Eliminated |
"The frustrating thing is that none of this was technically complicated. I didn't need a new tool or a new system. I needed to actually look at what was happening and fix the process. I just wish I'd done it four months earlier."
An automated anomaly detection system would have flagged phantom stock on those 10 products within days of it forming — not four months later in a quarterly review.
The signal was there in the data: inventory depleting faster than sales explained, returns not matching inventory increases, specific SKUs with unexplained count drops.
A human reviewing 340 SKUs manually every week would never catch those patterns. A system monitoring every product every day against its expected behaviour would catch them within 48–72 hours.
The difference: - 4-month problem → 1-week problem - $8,000 loss → ~$500 loss - 112 cancelled orders → ~8 cancelled orders
CoreCaptain detects phantom stock, sync errors, and inventory discrepancies automatically. 14-day free trial, no credit card required.
Start Free Trial