How do I track margin by SKU, channel, and customer?
Track margin by SKU and channel by computing contribution margin per cut and allocating channel fees and acquisition cost, so blended store margin stops hiding the losers.
Last updated: June 27, 2026
To track margin by SKU and channel, compute contribution margin separately for each cut: subtract every variable cost from revenue at the order line, then allocate channel-specific costs (marketplace commission, payment fees, acquisition cost) before you roll anything up. The same SKU earns different margin on each channel, and blended store margin hides that.
The blended number on your dashboard is an average of averages. It tells you the store made money last month. It cannot tell you that your bestselling SKU loses money on paid social, breaks even on the marketplace, and prints cash from repeat email buyers. Those three facts live underneath the blended line, and you only see them when you slice contribution margin three ways.
What does it mean to track margin by SKU and channel?
Tracking margin by SKU and channel means calculating contribution margin for each product on each sales channel as a separate figure, instead of one store-wide average. Contribution margin is revenue minus all variable costs for that specific cut. The cut matters because a $72 shirt sold on a marketplace carries different costs than the same shirt sold direct after a paid ad.
Three cuts answer three different questions:
- By SKU: which products earn their shelf space after returns and fees.
- By channel: which sales channel keeps the most of each dollar after its own fees and acquisition cost.
- By customer: which buyers are worth reacquiring and which ones cost you money every order.
Blended margin collapses all three into one number. Cost allocation is the work of pushing each variable cost down to the order line where it actually occurs, so the rollups stay honest.
How do I actually calculate contribution margin per cut?
Calculate contribution margin per cut by starting at the order line, subtracting only the costs that vary with that order, then grouping the results by SKU, by channel, and by customer. Fixed costs like rent and salaries stay out of contribution margin. The variable list is COGS, payment processing, pick and pack, shipping, returns, and any channel commission or acquisition cost tied to that order.
Step 1: list every variable cost at the order line
Pull the costs that move with each order. For a physical product that is COGS, inbound freight and duty baked into landed cost, payment processing, pick and pack, outbound shipping, and the cost of returns. If you are not sure what belongs in true cost, our guide on how to calculate true net margin walks the full stack.
Step 2: allocate channel-specific costs to the channel
A marketplace charges a referral commission. Direct-to-consumer carries payment processing and, for a first-time buyer, acquisition cost. These costs belong to the channel, not the SKU. Allocating them to the channel is what makes the same product show different margin in different places.
Step 3: allocate acquisition cost to the order, then the customer
Take your blended paid acquisition cost (ad spend divided by new customers) and attach it to each first order. A repeat order from the same customer carries no acquisition cost. Roll the orders up by customer and you get customer-level margin, which exposes who is profitable to reacquire.
Step 4: roll up, but keep the line-level detail
Average the line-level contribution margins up to SKU, channel, and customer views. Keep the underlying lines so you can drill back down. The rollup is the summary. The line is the truth.
Worked example: a $72 linen shirt across three cuts
Take one SKU, a linen button-down shirt that sells for $72.00, COGS $26.00. Shipping is $7.50 and pick and pack is $1.20 on every order. The channels diverge from there.
On direct-to-consumer, a first order pays Shopify payment processing of 2.9% plus $0.30, which is $2.39, and carries $18.00 of allocated acquisition cost. On the marketplace, the platform takes a 15% commission of $10.80 and bundles payment processing inside it, with no separate acquisition cost because the marketplace brings the buyer.
| Cost line | DTC first order | Marketplace |
|---|---|---|
| Price | $72.00 | $72.00 |
| COGS | -$26.00 | -$26.00 |
| Payment / commission | -$2.39 | -$10.80 |
| Shipping | -$7.50 | -$7.50 |
| Pick and pack | -$1.20 | -$1.20 |
| Acquisition cost | -$18.00 | $0.00 |
| Variable cost total | -$55.09 | -$45.50 |
| Contribution margin | $16.91 | $26.50 |
| Margin % | 23.5% | 36.8% |
Same shirt. The marketplace order keeps $26.50, the paid first order keeps $16.91. The $18.00 acquisition cost outweighs the marketplace's $10.80 commission by $7.20, so the channel everyone assumes is the expensive one is actually the more profitable one for a first sale.
Now the customer cut. A repeat DTC buyer comes back through email and pays no acquisition cost: $72.00 minus $26.00 minus $2.39 minus $7.50 minus $1.20 leaves $34.91, a 48.5% margin. The same shirt to the same store, sold three ways, earns $16.91, $26.50, or $34.91 depending on the cut.
Here is the figure blended margin hides. Average the two channels at a 50/50 split and you report $21.70, or 30.1%. That single number sits above a SKU losing more than a third of its margin on paid first orders ($16.91) and below a repeat buyer worth more than twice as much ($34.91). The $21.70 blended line is real arithmetic and still tells you almost nothing actionable. The $16.91 versus $34.91 spread, a 2.06x difference on one SKU, is the number that changes what you do tomorrow.
What does this cost you if you skip it?
Skipping the per-cut calculation costs you margin you never see leaving. If you only watch the blended 30.1% on this shirt, you keep buying paid first-order traffic at 23.5% while treating it the same as your 48.5% repeat revenue. You scale the wrong channel, set free-shipping thresholds against an average that does not exist for any real order, and discover the gap only when cash gets tight.
The pattern repeats across the catalog. To find where it is already happening, start with which orders are unprofitable and the SKUs that flip negative once you account for returns, covered in unprofitable SKUs after returns. Revenue growth can mask all of it, which is the point of Shopify revenue versus net margin.
How to find your own three-cut figure
You can build the first version of this in a spreadsheet this week.
- Export 30 days of orders with line items, channel tag, and customer ID.
- Add columns for COGS, payment or commission, shipping, pick and pack, returns, and acquisition cost per order.
- Compute contribution margin per line: price minus the sum of those columns.
- Pivot three times: by SKU, by channel, by customer.
- Compare each cut against your blended margin. The biggest gaps are your priorities.
The spreadsheet breaks the moment order volume climbs or fees change mid-month, because the numbers are a snapshot and your costs move daily. That is the gap real-time tooling fills.
Where Agentis fits
Agentis is a real-time profit governance platform for high-volume Shopify Plus and ShopLine merchants. It monitors margin at the order and SKU level and flags or blocks unprofitable activity before it reaches the P&L. Profit governance is the practice of monitoring and enforcing margin rules in real time across every order, SKU, and channel, so unprofitable activity gets caught and corrected as it happens instead of discovered in a month-end report. For the three-cut analysis above, that means the SKU, channel, and customer margins update on every order instead of waiting for a month-end pivot, and a SKU that drops below your floor on a given channel gets caught the day it happens.
Frequently asked questions
What is the difference between contribution margin and blended margin?
Contribution margin is revenue minus the variable costs of one specific order, SKU, or channel. Blended margin is the store-wide average across everything. Contribution margin tells you which cuts make money. Blended margin only tells you the store did, on average, last month.
Why does the same SKU show different margin on different channels?
The same SKU shows different margin per channel because each channel carries different costs. A marketplace adds a commission. Direct-to-consumer adds payment processing and acquisition cost. In the worked example, the $72 linen shirt earned $26.50 on the marketplace and $16.91 on a paid DTC first order, a $9.59 gap driven entirely by channel costs.
How do I allocate acquisition cost to a single order?
Allocate acquisition cost by dividing total paid ad spend by the number of new customers acquired in the same period, then attaching that figure to each first order. Repeat orders carry no acquisition cost, which is why customer-level margin separates profitable repeat buyers from break-even first purchases.
Can I track margin by SKU and channel in Shopify alone?
Shopify reports revenue and basic profit, but it does not allocate channel commission, blended acquisition cost, or returns down to the order line by default. You need a spreadsheet pivot or dedicated tooling to get true contribution margin by SKU, channel, and customer rather than a blended number.
How often should these margin cuts be recalculated?
Recalculate as often as your costs move. Payment fees, ad costs, return rates, and shipping all shift week to week, so a monthly pivot is already stale when you read it. High-volume stores benefit from real-time updates on every order so a SKU that turns unprofitable on a channel is caught the same day.
Next step today: export your last 30 days of orders, add a contribution margin column, and pivot it by channel. The gap between your best and worst channel on a single SKU is usually larger than you expect.