How to use SKU-Level Profitability

Metricuno
May 23, 2026
7 min read
How to use SKU-Level Profitability — How to calculate true contribution margin per SKU on Shopify — load shipping, returns, and discounts to find the products quietly losing you money.
Quick answer

Store-wide margin hides the long tail of products that bleed cash once shipping weight, returns, and discount depth are loaded in. Here's how to compute contribution margin per SKU and act on it.

Definition
Profitability

SKU-Level Profitability

Contribution margin calculated per individual SKU after variable costs — shipping, returns, payment fees, and discount depth — not blended store-wide.

SKU-level profitability is the practice of computing contribution margin for every product variant you sell, after loading the variable costs that move with each unit: COGS, inbound freight, pick-and-pack, outbound shipping weight, payment processing, returns rate, and the actual discount each SKU absorbs.

The point is to escape the average. A blended 42% gross margin can comfortably contain a quarter of your catalogue running negative once shipping and returns are properly attributed. Surfacing that distribution is the input to every rationalization decision — what to delist, what to reprice, what to bundle, and where to spend paid acquisition.

Also known as
product-level margin
per-SKU contribution margin
unit economics by SKU

Most Shopify stores grade themselves on store-wide gross margin and a top-line revenue dashboard. Both are misleading. Revenue dashboards reward whichever SKU shipped the most units, even if every unit lost €3 after returns. Store-wide gross margin averages a 70%-margin hero product against a 12%-margin bulky accessory and reports a healthy-looking blend.

The fix is mechanical, not magical. Load every variable cost onto the SKU that caused it, subtract from net revenue per unit, and rank the catalogue. The shape of that ranking — usually a long left tail of loss-makers — is the conversation.

The variable costs to load

Five cost buckets matter, in roughly this order of impact. COGS is the easy one — your invoice cost per unit, including inbound freight and duty amortised across the shipment. Pick-and-pack is a near-flat per-order cost that you allocate to whichever SKUs were in the order, weighted by line items.

Outbound shipping is where most stores lose the plot. If you offer free shipping over €50 and a 1.4kg ceramic mug costs €7.20 to ship, that mug carries the €7.20 — not a blended €4.50 average. Carriers bill by weight and volume, so your margin model has to as well. The same logic applies to dimensional weight on bulky-but-light items like pillows or lampshades.

Returns are the silent killer. A 28% return rate on apparel means each gross sale costs you the outbound shipping, the inbound return shipping, the QC labour, and the discount-bin recovery on roughly a third of units. Load the expected return cost onto every unit sold of that SKU, not just the returned ones — that's how you price it correctly going forward.

Discounts are a per-SKU cost, not a marketing line

If a SKU is only ever sold during 20%-off campaigns or via a 15% welcome code, its effective discount depth might be 17% even though the list price suggests full margin. Allocate the actual discount each SKU absorbed in the period — not the storewide promo average — or your hero product will subsidise your dogs in the model the same way it does in the P&L.

Calculating contribution margin per SKU

Contribution margin per unit is net revenue minus variable cost. Net revenue is list price minus discount absorbed minus payment processing (roughly 1.8-2.9% depending on mix). Variable cost is COGS + allocated pick-and-pack + outbound shipping + (return rate × full return cost cycle).

Then rank. Sort your catalogue by absolute contribution margin in euros per month — units sold × per-unit contribution. You will typically see a Pareto shape: the top 15-25% of SKUs generate 80%+ of total contribution, the middle band breaks roughly even, and the long tail destroys margin while consuming warehouse slots, photography budget, and ad spend.

Chart

Typical SKU contribution distribution for a mid-size apparel store

-10.0k€0€10.0k€20.0k€30.0k€40.0k€50.0k€Top 10%11-20%21-30%31-40%41-50%51-60%61-70%71-80%81-90%Bottom 10%Monthly contribution (€)SKU decile (by contribution rank)

The bottom three deciles are the rationalization candidates. They don't necessarily get delisted — some are essential to a collection's completeness, some are deliberate loss leaders for acquisition — but every one of them needs an explicit decision rather than a default of "it's still selling, keep it."

Where the margin lives by category

Different product categories carry very different cost structures, so "good" contribution margin is category-relative. Apparel takes a heavy returns hit. Beauty has near-zero returns but tighter COGS percentages. Homeware ships heavy. Electronics carry warranty exposure.

Use the table below as a sanity check on what a healthy per-SKU contribution should look like in your category. If your apparel SKUs are running below 22% contribution margin after returns, you're either pricing too low, discounting too deep, or carrying a freight burden you haven't acknowledged.

Benchmark

Typical per-SKU contribution margin ranges by category (after all variable costs)

CategoryTop quartile SKUsMedian SKUBottom quartile SKUsTypical return rate
Apparel & footwear38-48%26%-5% to 12%22-32%
Beauty & skincare55-68%44%18-28%3-6%
Homeware & decor32-42%22%-8% to 8%8-14%
Consumer electronics18-26%11%-2% to 5%10-18%
Food & supplements42-55%32%12-20%2-5%
Accessories (small)48-62%38%15-25%6-10%

Cross-reference your own distribution against these ranges before deciding what to act on. A homeware SKU at 9% contribution is a median performer; an apparel SKU at 9% is a problem. Category context prevents you from delisting something that's actually doing its job.

Turning the analysis into action

Once you have a ranked list, four levers are available per SKU. Reprice — a 6% list price increase on a loss-making SKU often costs single-digit conversion and flips the unit positive. Repackage — bundle a low-margin item with a hero product so the basket contribution lifts. Restrict — pull the SKU from free-shipping eligibility or paid acquisition feeds. Retire — delist and run down stock.

Rationalization isn't a one-off project. Re-run the analysis monthly during the first quarter you do this, then quarterly once the catalogue is healthy. Returns rates drift, carriers raise rates, and discount campaigns concentrate on different SKUs each season — last quarter's hero is next quarter's drag. SKU-level profitability is one of the strongest contribution margin levers you have because it compounds: every unprofitable unit you stop shipping frees working capital and warehouse slots for the SKUs that earn.

The rationalization win

A €4M apparel store we modelled cut its catalogue from 1,840 active SKUs to 1,210 over two quarters using this analysis. Revenue dropped 6%. Contribution margin grew 19% in absolute euros. The freed warehouse capacity absorbed the next season's launches without renting a second pick zone.

Frequently asked

Frequently asked questions

No. Shopify reports revenue and units per SKU and a basic cost-of-goods field if you populate it, but it doesn't allocate shipping, returns, payment fees, or discount depth back to the SKU. You need to build the model in a spreadsheet or analytics tool that pulls Shopify orders, your 3PL invoices, and your returns data.

Weight-and-volume share is the cleanest method. If a 2kg order costs €8.40 to ship and contains a 1.4kg mug and a 0.6kg candle, the mug carries €5.88 and the candle €2.52. For dimensional-weight items, use billable weight rather than actual weight — that's what the carrier charged you.

No — that's full-absorption costing and it makes every SKU look worse than it is. Contribution margin uses variable costs only. Fixed costs are paid for collectively out of total contribution; the question for each SKU is just whether it's adding to the pool or subtracting from it.

Use the category median from your own data as the starting estimate, then reforecast after 60 days of real returns data. For apparel, assume 25-28%; for beauty, 4-5%; for homeware, 10-12%. Erring slightly high is safer than erring low — you'd rather discover a SKU is more profitable than expected than the reverse.

Tag them explicitly in the model as "acquisition SKUs" and measure them on a different metric — new-customer acquisition cost or downstream LTV — rather than per-unit contribution. The point of the analysis isn't to eliminate every loss-maker, it's to make sure each one is losing money on purpose.

Unit economics is a broader concept that includes CAC, LTV, and payback period at the customer level. SKU-level profitability is narrower: contribution margin per product unit. SKU analysis feeds unit economics — you can't reason about LTV-to-CAC ratios properly if your contribution margin per order is based on a blended average that hides loss-making products.

Monthly during the first quarter you implement it — that's when you find the surprises and need to act quickly. After the catalogue stabilises, quarterly is enough, with an extra refresh after any major carrier rate change or before peak season planning.

It depends on the basket lift versus the shipping cost absorbed. Free-shipping thresholds work when they pull average order value up by more than the cost of shipping the marginal item. Model it per SKU: a free-shipping basket carrying three small accessories may be profitable; one carrying a single heavy item is usually not.

Treat the bundle as its own SKU with its own COGS (sum of components), its own discount depth (the bundle markdown), and its own return behaviour. Don't try to split the bundle margin back across components — that double-counts and obscures whether the bundle itself is working.

Profit-analytics apps in the Shopify ecosystem (Lifetimely, BeProfit, Sourcetable) handle the basic loadings if you connect your shipping and ads data. For deeper analysis — segmenting by channel, cohort, or campaign — you'll want a warehouse-backed analytics setup that joins order data with 3PL and returns feeds.

Get an AI expert review of your site

Paste your URL — Metricuno's AI runs the same heuristic checks a senior CRO consultant would, scoring your page and prioritising the fixes that'll move conversion fastest.