SKU Performance Analysis: How to Know Which Products Are Actually Making You Money
by Trivas.ai
|
6 min read
Sep 27, 2026
Most brands can tell you their top-line revenue for the month. Fewer can tell you which SKUs actually drove profit, and which ones just drove volume. That gap is exactly what sku performance analysis is supposed to close: knowing, at the individual product level, what's making you money versus what's just moving.
If you sell on Amazon and Shopify, this gets more complicated, not less. The same product can be a top performer on one channel and a break-even dud on the other.
What SKU Performance Analysis Actually Means
SKU performance analysis means tracking revenue, margin, return rate, and sales velocity for each individual product variant, not the category it sits in and not the store as a whole. A "hoodies" category rollup tells you almost nothing useful. Knowing that the size-large, heather-gray hoodie has a 22% return rate and shrinking margin tells you exactly where to act.
This has to be broken out by channel. A SKU selling briskly on Shopify might be barely profitable on Amazon once you account for referral fees, FBA storage costs, and PPC spend. Same product, same COGS, wildly different economics depending on where it's sold. Brands that only look at blended numbers miss this entirely.
The common failure mode is simple: revenue looks fine, so nobody digs deeper. But it's not unusual for 20% of SKUs to be quietly losing money once you factor in ad spend and returns, while a smaller set of high-margin winners carries the rest of the catalog. Without SKU-level analysis, that 20% just sits there, buried in a revenue number that looks healthy on the surface.
Core Metrics to Track Per SKU
Revenue and units sold are the easy metrics. They're also the least useful on their own. Here's what actually matters:
Contribution margin per unit. This means revenue minus COGS, platform fees, and ad spend, allocated at the SKU level, not averaged across the catalog. A SKU can have great gross margin on paper and still lose money once you subtract what it costs to acquire the sale.
Sell-through rate and inventory turns. A SKU sitting in a warehouse for four months isn't just a missed opportunity, it's cash tied up that could be funding a reorder of something that actually moves. Catching dead stock early matters more than most inventory reports make it feel.
Return and refund rate per SKU. A product with strong sales volume and a 18% return rate isn't a winner, it's a slow leak. Return rate needs to sit next to revenue in every SKU review, not in a separate customer service report nobody looks at.
Ad-attributed revenue per SKU, pulled from Amazon Ads, Meta, and Google. Campaign-level ROAS tells you the campaign worked. It doesn't tell you which specific SKU that spend actually supported, or whether the SKU getting the ad dollars is even one of your profitable ones.
[@portabletext/react] Unknown block type "table", specify a component for it in the `components.types` prop
How to Spot Winning and Losing SKUs
Rank SKUs by contribution margin first, units sold second. A SKU with high volume and thin margin will always look impressive on a leaderboard sorted by revenue. Sort by margin instead and it often drops to the middle of the pack, or lower.
A simple 2x2 helps here: velocity on one axis, margin on the other.
High velocity, high margin: keep doing what you're doing, maybe expand inventory.
High velocity, low margin: candidates for a price adjustment or a hard look at ad spend.
Low velocity, high margin: worth promoting harder, they're profitable but underexposed.
Low velocity, low margin: discontinue candidates, plain and simple.
One early warning sign worth flagging specifically: rising ad spend paired with flat or declining margin on the same SKU. This shows up weeks before it shows up in a quarterly P&L. If you're only reviewing SKU performance once a quarter, you'll catch this after you've already spent the money, not before.
Why SKU-Level Data Gets Messy Across Channels
Here's the part that makes this harder than it should be. Amazon reports on ASINs. Shopify reports on variant IDs. Meta and Google report on whatever product identifier got passed through the catalog feed, which may or may not match either of the above cleanly. There's no shared key sitting there waiting for you.
So most teams build a workaround: pull four exports, drop them into a spreadsheet, and manually match rows using VLOOKUPs or a mapping tab someone built eighteen months ago and nobody's updated since. This works, for a while. Then it breaks in the usual ways: one export is from Tuesday and another is from Thursday, someone renamed a SKU and didn't update the mapping tab, or the Amazon date range doesn't line up with the Shopify one because of timezone differences nobody accounted for.
The real issue is structural. Without something joining these sources together, most teams end up with partial SKU visibility per channel, not one blended view. You get an Amazon picture and a Shopify picture and an ads picture, and reconciling them by hand every week is where the hours go. If you're running Amazon specifically, this shows up hardest in reconciling Amazon-side SKU and ad data against everything happening on the Shopify side.
Automating SKU Performance Analysis with Trivas
This is the exact problem Trivas is built to sit on top of. Trivas pulls Amazon, Shopify, and ad platform data (Meta, Google, Amazon Ads) into Redshift, so SKU-level margin and ad spend live in one table instead of four separate exports someone's stitching together by hand every Monday.
Once that data's joined, the Wingman AI layer surfaces anomalies automatically. If a SKU's return rate spikes 3x in a week, you don't need to build a report to catch it, it's flagged. That's the difference between finding a problem in month-end review and finding it while it's still small enough to fix cheaply.
The practical effect: a task that used to take hours of manual VLOOKUPs and cross-referencing becomes a dashboard that refreshes daily. You're not rebuilding the join every week, you're just looking at it. This lives inside Trivas's BI reporting, with the anomaly detection layered on through Insights. For brands running Shopify specifically, the setup is straightforward through Trivas's Shopify integration, or you can see it directly on the Shopify App Store.
Getting Started with SKU-Level Reporting
You don't need to analyze your entire catalog on day one. Start with the SKUs driving 80% of your revenue. That's usually a much smaller list than people expect, and it's where the margin problems, if they exist, will show up first.
From there, a monthly cadence works well for reviewing margin trends per SKU, catching the rising-ad-spend-flat-margin pattern before it compounds. Save the full inventory audit, dead stock, long tail SKUs, the works, for a quarterly pass. Monthly is for catching problems early. Quarterly is for cleaning house.
If you're currently doing this in a spreadsheet with four tabs and a prayer, it might be worth seeing what it looks like with the joins already done for you. You can start a trial and see your own SKU data pulled together automatically, or just keep this as a reference the next time your revenue number looks fine but something underneath it doesn't add up.
Content author and contributor at Trivas.ai, sharing insights on e-commerce analytics, business intelligence, and data-driven strategies to help businesses grow.
Continue Reading
explore more insights
Trivas.ai vs Northbeam: Feature Comparison for Ecommerce Reporting Teams
3 min read
Ecommerce Data Unification Explained: How Brands Actually Combine Shopify, Amazon, and Ad Data
3 min read
Northbeam Alternative for Smaller Brands: What Actually Works