Numbers don't match Shopify
Why StockSweep metrics may differ from Shopify reports and how to validate specific items.
Show all sections (19)
- 2) Refunds and cancellations
- 3) Variant-level vs. product-level
- 4) Different scope (dead stock vs. store-wide)
- 5) Timezone boundaries
- Quick validation (the single-item test)
- Step 1: Pick one flagged variant
- Step 2: Note StockSweep's data
- Step 3: Find the same variant in Shopify
- Step 4: Compare dates
- Step 5: Determine if the flag is correct
- Specific mismatch scenarios
- "Shopify says it sold last week, but StockSweep says 60+ days"
- "StockSweep shows more dead stock items than I expected"
- "Frozen capital in StockSweep doesn't match my inventory report"
- When to contact support
- Related articles
Differences between StockSweep and Shopify reports are common and usually explainable. This guide helps you identify the cause and validate individual items.
Estimated time: 6–10 minutes
What you'll accomplish
- Identify the most common sources of mismatches
- Validate a single item end-to-end (instead of debating totals)
- Know when to escalate to support and what data to include
The 5 most common reasons for differences
1) Paid vs. created timestamp
This is the most frequent cause. Shopify records two key dates for every order:
| Date | When it is set |
|---|---|
| Created at | When the customer clicked "Place order" |
| Paid at | When payment was confirmed |
These can differ by minutes, hours, or even days (e.g., bank transfers, manual payments). StockSweep uses orders/paid events, while some Shopify reports use created_at. A sale at 11:55 PM "created" can be "paid" the next day — shifting it across day boundaries.
Impact: an item might show "sold yesterday" in Shopify but "sold 2 days ago" in StockSweep (or vice versa), which can push it across a threshold boundary.
2) Refunds and cancellations
StockSweep tracks sales for the purpose of detection (determining when an item last sold). Depending on timing:
- A fully refunded order may be excluded from StockSweep's "qualifying sale" count
- A cancelled order (before fulfillment) may not count as a sale
- A partial refund where the item itself was not returned may still count
Shopify revenue reports include different refund treatments depending on the report type.
3) Variant-level vs. product-level
StockSweep tracks sales at the variant level (e.g., "T-Shirt / Small / Black" separately from "T-Shirt / XXL / Yellow"). Shopify's standard reports often show product-level aggregates.
Impact: Shopify may show "T-Shirt sold 5 units this month" while StockSweep correctly identifies that the XXL/Yellow variant has not sold in 90 days — even though other variants of the same product sold.
4) Different scope (dead stock vs. store-wide)
Shopify reports cover your entire store. StockSweep only tracks items that meet your dead stock detection criteria:
- Items with inventory on hand
- Items that have not been excluded/archived
- Items evaluated against your specific threshold (30/60/90 days)
Total counts and revenue will never match because StockSweep intentionally shows a subset.
5) Timezone boundaries
Shopify stores have a configured timezone, but reports can render differently depending on the viewer's timezone or the report's internal timezone handling. A sale at 11:58 PM EST might appear as the next day in UTC.
Impact: daily counts or "last sale date" can shift by one day at the boundaries.
Quick validation (the single-item test)
Instead of comparing aggregate totals (which will always differ due to scope), validate a single item:
Step 1: Pick one flagged variant
Open the Dead Stock Table and choose an item that seems wrong (e.g., "this sold recently, why is it flagged?").
Step 2: Note StockSweep's data
Record:
- Last sale date (as shown in the Dead Stock Table)
- Days without sale
- Your threshold (30/60/90)
Step 3: Find the same variant in Shopify
Go to Shopify Admin → Orders and search for orders containing that specific variant. Find the most recent order.
Step 4: Compare dates
| StockSweep last sale date | Shopify order date | Explanation |
|---|---|---|
| Same date | Same date | No mismatch — the threshold calculation may be off by 1 day due to timezone |
| 1 day different | Different | Likely a paid-vs-created or timezone shift — normal |
| Several days different | Different | Check if the Shopify order was refunded, cancelled, or if you are looking at the wrong variant |
| No sale date in StockSweep | Order exists in Shopify | The order may have been created before the 90-day import window, or it may be refunded/cancelled |
Step 5: Determine if the flag is correct
Calculate: today - last qualifying sale date. If the result is >= your threshold, the flag is correct regardless of what Shopify's aggregate reports say.
Specific mismatch scenarios
"Shopify says it sold last week, but StockSweep says 60+ days"
Most likely causes (check in order):
- You are looking at the product in Shopify, but StockSweep is tracking the variant. A different variant of the same product sold — not the flagged one.
- The order was refunded or cancelled after being placed.
- The order is in pending payment status (created but not yet paid).
"StockSweep shows more dead stock items than I expected"
Most likely cause: variant-level tracking. A product with 5 variants where only 2 are selling will show 3 variants in the dead stock list — even if the product as a whole appears "active" in Shopify.
"Frozen capital in StockSweep doesn't match my inventory report"
Most likely cause: frozen capital = dead stock quantity x cost per item. If cost data is missing or outdated in Shopify, the calculation will differ. Also, StockSweep only includes items flagged as dead stock, not your entire inventory.
When to contact support
If the single-item validation reveals a genuine data issue (the dates and statuses are correct in Shopify but StockSweep shows clearly wrong data), contact support with:
| What to include | Why |
|---|---|
| Store domain | So support can access your data |
| Product/variant link | Direct URL to the variant in Shopify Admin |
| Screenshot of StockSweep row | Shows days without sale, last sale date, threshold |
| Shopify order ID | The order you believe should count as a sale |
| Order status | Paid / Pending / Refunded / Cancelled |
This gives support everything needed to investigate without back-and-forth.
Related articles
Was this article helpful?
Let us know — your feedback helps us improve our documentation.