Most DTC founders have an intuitive sense that some products do better on Shopify and others do better on Amazon or Faire. What they usually lack is a structured way to make that call systematically — before they've spent 18 months building out the wrong channel for the wrong SKUs.
The framework that follows isn't complex. It uses two variables, produces four quadrants, and forces exactly the kind of explicit decision most brands avoid making. It won't cover every edge case, but it will surface the conversations you need to have.
The Two Variables That Actually Matter
When you're trying to figure out where a SKU belongs, there are dozens of variables you could consider: order frequency, customer acquisition cost per channel, return rates, storage costs, seasonal demand curves, brand positioning. Most of them are downstream of two root variables:
- Contribution margin per unit on that channel — after COGS, channel fees, fulfillment, and returns. Not gross margin. The real number.
- Velocity on that channel — units sold per month, normalized for any promotional activity. This is your demand signal, not your revenue signal.
Contribution margin tells you if making a sale on that channel is economically worthwhile. Velocity tells you if the channel can absorb meaningful volume of that SKU. The intersection of those two dimensions defines the correct strategic action.
The 2x2 Matrix
Plot every SKU-channel pair on a simple 2x2:
| High Contribution Margin | Low Contribution Margin | |
|---|---|---|
| High Velocity | PUSH Scale aggressively. Protect this channel allocation. These are your growth engine SKUs. |
FIX OR EXIT Volume without profit is a cash flow trap. Fix the margin or reallocate the inventory. |
| Low Velocity | PROTECT Profitable but not moving. Investigate the demand constraint before adding marketing spend. |
SUNSET Low margin, low velocity. This SKU-channel combination is a slow bleed on working capital. |
Working Through a Real Scenario
Consider a personal care brand doing around $8M in annual revenue, with 34 active SKUs across Shopify DTC, Faire wholesale, and Amazon Seller Central. They have one hero SKU — a vitamin C face serum — that accounts for roughly 28% of DTC revenue. When they plot their SKU-channel pairs using this matrix, a few things become immediately visible.
The serum is a high-velocity, high-margin PUSH on Shopify. Contribution margin runs around 58% after a 4.2% Shopify fee, 3PL pick-and-pack at $4.10/unit, and a 6% DTC return rate that averages out to about $2.20/unit in restocking and refund cost. Clear winner — invest in awareness here.
On Amazon, the same serum is high-velocity but contribution margin has collapsed to 31% after Amazon's 15% referral fee, FBA fulfillment at $6.80/unit, and a return rate that runs nearly double the DTC rate. That's technically above zero, but it's using inventory velocity and working capital that could be allocated to the Shopify channel. It sits in the FIX OR EXIT quadrant.
On Faire, the serum velocity is moderate (not high) and contribution margin is 43% — a reasonable wholesale margin, but not high. That's a PROTECT: profitable enough to maintain, but not something to aggressively grow without improving the retailer count and turnover rate.
Setting the Margin Threshold: What "High" and "Low" Actually Mean
The threshold between "high" and "low" contribution margin is specific to your business and product category. For a supplement brand with 25-35% COGS, high might mean above 55% contribution margin. For an apparel brand with 40-50% COGS and meaningful return rates, high might mean anything above 40%.
The working principle is: contribution margin needs to cover your fixed overhead allocation, generate cash to fund inventory replenishment, and leave enough to justify the working capital cost of the channel. A rough minimum floor for most DTC brands in the $3-20M revenue range is 35-40% contribution margin per unit on any channel where you're actively pushing volume. Below that, you're likely scaling yourself into a cash flow problem even as top-line revenue grows.
For velocity thresholds, use your own category median. If your average SKU on Shopify moves 180 units/month and you have SKUs doing 400+ and SKUs doing 50, set your high/low velocity threshold at your median — not an arbitrary number.
The Channel That Usually Surprises Founders: Amazon
Amazon deserves special mention because the velocity signal on Amazon is often misleadingly strong. High rank, strong BSR, good review count — it looks like a PUSH candidate until you calculate the contribution margin. FBA fees plus referral fees plus the higher return rate (especially in beauty, where Amazon's return policy is more permissive than most 3PLs) can put a product that seems like a winner firmly in the FIX OR EXIT quadrant.
We're not saying Amazon is a bad channel — it can be excellent for commodity repeat-purchase SKUs with low COGS and low return rates. We're saying that velocity alone does not tell you whether Amazon is generating profit or just generating revenue, and the two are not the same thing.
What This Framework Doesn't Tell You
The 2x2 is a snapshot. It shows you where you are now — not where you'll be in 6 months if you run a Faire advertising campaign or drop Amazon pricing by 12% to defend rank. The margin calculation is also backward-looking: it uses your current COGS, current fees, and current return rate. Any of those can shift on a production run change, a new 3PL contract, or a policy update.
The framework also doesn't account for strategic reasons to run a channel at break-even. Some brands keep an Amazon presence explicitly to own their branded search terms and prevent unauthorized resellers from diluting their price integrity, even if Amazon contribution margin is thin. That's a legitimate call — but it should be a deliberate decision with eyes open on the cost, not a default assumption.
Putting It Into Practice
Run this analysis quarterly. Your SKU-channel matrix should not be a one-time exercise — it needs to reflect current COGS (which changes with production run pricing, duty rates, and supplier negotiations), current platform fees, and current velocity. A SKU that was a PROTECT six months ago might be a PUSH today if you landed a better freight rate and reduced landed cost by $1.40/unit.
The practical sequence:
- Pull per-SKU contribution margin by channel — include every variable cost line, not just COGS
- Pull 90-day sell-through velocity by channel (exclude promotional spikes)
- Plot each SKU-channel pair on the matrix
- Flag every FIX OR EXIT and SUNSET pair for a specific decision within 30 days
- Document your PUSH pairs so marketing and reorder budgets are aligned to them
The discipline is in making the decision when you have the data, not waiting until the inventory problem or margin problem makes the decision for you.