Why a blended margin number is dangerous at scale
A single blended contribution-margin figure across your whole business can look perfectly healthy while masking a channel or SKU segment that's actively losing money, subsidized by a stronger segment elsewhere. This is common and easy to miss: a seller with three channels — one highly profitable, one break-even, one quietly unprofitable — can see an acceptable blended number for months while the unprofitable channel consumes cash, inventory capacity, and operational attention without anyone noticing, because the blended total never goes negative.
What contribution margin means at the SKU/channel level
Contribution margin per unit is revenue minus all variable costs directly attributable to that unit — cost of goods, marketplace/channel fees, payment processing, per-unit fulfillment and shipping cost, and a reasonable allocation of per-unit advertising spend if you can attribute it. It excludes fixed overhead (rent, salaries not tied to order volume, software subscriptions) — those get covered in aggregate once you know how much total contribution margin the business is generating. See the Unit Economics Calculator and Margin & Markup Calculator for the underlying per-unit math this reporting view is built on.
Building the report: the dimensions that matter
By channel: your own website, and each marketplace separately — not "marketplace revenue" as one bucket, since fee structures, typical order value, return rates, and advertising costs commonly differ meaningfully between, say, Amazon and Etsy.
By SKU (or SKU family/category): individual products can have very different margin profiles even within the same channel — a heavier or bulkier item might carry disproportionate fulfillment cost, or a highly-advertised bestseller might carry a lower net margin than its price would suggest once ad spend is allocated to it.
By channel × SKU: the most granular and most revealing view — the same SKU's margin can differ across channels because of different fee structures and different typical price points, and a SKU that's profitable on one channel can be marginal or unprofitable on another.
A worked example
| Channel | SKU | Revenue/unit | COGS | Channel fees | Fulfillment | Allocated ad spend | Contribution margin/unit | Margin % |
|---|---|---|---|---|---|---|---|---|
| Own site | Widget A | $40 | $12 | $1.50 (processing) | $6 | $3 | $17.50 | 44% |
| Marketplace 1 | Widget A | $38 | $12 | $6.50 | $5 | $4 | $10.50 | 28% |
| Marketplace 2 | Widget A | $36 | $12 | $8.00 | $5 | $6 | $5.00 | 14% |
Same product, three very different margin outcomes. Without this breakdown, a seller might see "Widget A is a top seller" as an unambiguous success signal — but Marketplace 2's 14% margin might not clear the bar the business actually needs per unit once fixed overhead allocation is considered, even though it's contributing positively to revenue and even though it's the exact same physical product.
What to do once you have this view
Where a channel × SKU combination is genuinely unprofitable (not just lower-margin, but net negative after all variable costs), the options are: raise price on that specific channel if the market supports it, reduce allocated advertising spend on that combination, negotiate or find a lower-cost fulfillment path for that channel, or deliberately deprioritize that combination in inventory allocation and promotion.
Where a channel × SKU combination is lower-margin but still net positive, the decision is more nuanced — a lower-margin channel that generates incremental volume without cannibalizing a higher-margin channel can still be worth keeping, especially if it serves a strategic purpose (customer acquisition, market presence, review velocity for a newer product).
Common pitfalls in building this report
Failing to allocate advertising spend at the SKU level. Total ad spend is easy to see; which SKU actually consumed it is often harder, especially with automatic/broad-match campaigns spanning multiple products. Without this allocation, ad-heavy SKUs look more profitable than they really are.
Using a single blended fulfillment cost across very different product sizes/weights. A per-unit average fulfillment cost hides real variation if your catalog spans small, light items and large, heavy ones — use actual or closely-estimated per-SKU fulfillment cost where the variance is significant.
Not updating channel fee assumptions when a marketplace changes its fee structure. Marketplace fee schedules change periodically; a report built on stale fee assumptions can show a channel as more profitable than it currently is.
Best practices
- Build the report at the channel × SKU level, not just channel or SKU independently — the combination is where the real insight lives.
- Allocate advertising spend to specific SKUs wherever your ad platform's reporting allows it, rather than treating it as an unallocated blanket cost.
- Refresh channel fee assumptions whenever a marketplace announces a fee change, not on a fixed schedule that might lag a real change.
- Distinguish "lower margin but still positive and strategically useful" from "net unprofitable" before deciding to deprioritize a channel or SKU.
Checklist
- List every channel and every active SKU (or SKU family) in scope
- Gather actual or closely-estimated COGS, channel fees, fulfillment cost, and allocated ad spend per channel × SKU combination
- Calculate contribution margin per unit and margin % for each combination
- Flag any combination that's net negative for immediate review
- Flag any combination that's lower-margin but positive for a strategic-value discussion, not automatic deprioritization
- Set a recurring cadence (monthly or quarterly) to refresh the report, including updated fee assumptions
FAQs
How often should this report be rebuilt? Monthly is reasonable for an actively growing catalog; quarterly can be sufficient once channel and SKU mix is more stable, though a significant fee change or new channel launch should trigger an off-cycle refresh.
Is it worth doing this at the individual SKU level for a very large catalog? For a very large catalog, SKU-family or category-level grouping is often more practical than true SKU-by-SKU granularity — the goal is catching meaningful variation, not achieving perfect precision on every single item.
What do I do if a channel is unprofitable but strategically important (e.g., for brand visibility)? Decide explicitly and knowingly rather than by default — it's fine to run a channel at a loss or thin margin for a deliberate strategic reason, but that decision should be made consciously with the numbers in view, not discovered accidentally a year later.