By Diosh — Founder, AHAeCommerce | eCommerce decision intelligence for $50K–$5M GMV operators
A typical apparel operator reports a 62% gross margin and assumes the business has healthy unit economics. The contribution margin on the same revenue, with shipping, returns, payment processing, fulfillment, and variable acquisition cost included, lands at 14–22%. The gap — 40+ percentage points — is not theoretical. It is the difference between an operator who scales profitably and one who scales into bankruptcy. Per Shopify's 2024 commerce report, the median DTC apparel brand reports gross margins of 60–70% and net margins of 1–6%, and the spread is almost entirely accounted for by variable costs that gross margin excludes.
Most operators manage to gross margin because that is the number their accounting system surfaces. The accounting is correct. The decision-making framework around it is wrong. Contribution margin — revenue minus all variable costs — is the only number that tells you whether each marginal sale makes the business healthier or sicker.
What Gross Margin Actually Captures
Gross margin is revenue minus cost of goods sold (COGS). COGS, in standard accounting, includes the landed cost of the product sold and direct labor associated with production. For most eCommerce operators using contract manufacturing, COGS is essentially the supplier invoice plus inbound freight and duties.
This number is what shows up in financial reports, on Shopify Analytics, and in board decks. It is also the number every category benchmark report quotes — Shopify's apparel benchmarks, beauty industry margin reports, the standard CPG margin profile.
Gross margin tells you whether your products, in isolation, are profitable. It says nothing about whether selling them is profitable, because selling them produces costs gross margin excludes:
- Shipping (outbound and returns)
- Payment processing
- Fulfillment labor (or 3PL pick/pack)
- Returns processing and unsaleable inventory
- Variable customer acquisition (the marginal CAC, not the blended one)
- Variable customer service load
- Platform transaction fees on third-party processors
- Refund-driven payment processing fee retention (Stripe, Shopify Payments do not refund the fee)
These costs scale with each order. They are not overhead. Calling them anything other than variable cost — and excluding them from the operating margin you make decisions against — is the single most common cause of profitable-on-paper, broke-in-reality eCommerce businesses.
What Contribution Margin Actually Captures
Contribution margin is revenue minus all variable costs. The formal definition is the dollars left over from a marginal sale to cover fixed costs and contribute to profit. For an eCommerce operator, the practical definition is: out of every dollar of revenue, how many cents are left after I have paid every cost that scaled with that order.
The difference matters for one reason: when you decide whether to spend more on Meta ads, lower your free-shipping threshold, accept that returns rate, or run that promotion, the decision is made on contribution margin, not gross margin. Operators who run the math on gross margin systematically over-spend on acquisition and under-price their products.
A worked example clarifies the gap.
The Worked Example: $80 AOV Apparel Operator
Operator profile: DTC apparel, $80 average order value, 2.4 units per order at $33 retail per unit, $1.5M GMV, US-only, Shopify Advanced + Shopify Payments, ShipBob fulfillment, modal returns rate (per Optoro 2023 retail returns report, apparel returns rate is 24.4% online).
Gross Margin Calculation (the number leadership reports)
| Item | Value | |---|---| | Revenue per order | $80.00 | | COGS (landed cost, $11.50/unit × 2.4 units) | $27.60 | | Gross profit per order | $52.40 | | Gross margin | 65.5% |
This is the number that goes in the deck. By apparel benchmarks, it is healthy.
Contribution Margin Calculation (the number that determines survival)
| Item | Value | |---|---| | Revenue per order | $80.00 | | COGS | ($27.60) | | Outbound shipping (3PL pack + carrier, $7.20 average) | ($7.20) | | Payment processing (2.5% + $0.30 Shopify Payments) | ($2.30) | | 3PL fulfillment (pick + pack labor, $2.40 per order at 2.4 units) | ($2.40) | | Marketing / variable CAC ($24 blended CAC ÷ 1.0 first orders) | ($24.00) | | Returns provision (24.4% return rate × ($7 reverse shipping + $3.50 inspection + $4.20 unsaleable factor)) | ($3.59) | | Refund-driven processing fee retention (24.4% × $2.30 fee, not refunded) | ($0.56) | | Customer service variable (modal 0.18 contacts per order at $4.20 fully loaded) | ($0.76) | | Contribution profit per order | $11.59 | | Contribution margin | 14.5% |
The gross margin says 65.5%. The contribution margin says 14.5%. Every decision the operator makes — pricing, acquisition spend, returns policy, free-shipping threshold — must be made against the 14.5% figure, not the 65.5% one.
The most expensive line item is variable CAC, at $24/order against $11.59 contribution. The second most expensive is COGS, but COGS is fixed by the supplier relationship and product mix. The third — returns — is operator-controllable but rarely modeled at this granularity. The fourth — outbound shipping — is the line operators most often try to optimize through carrier negotiation when the larger leverage is upstream in pricing or downstream in returns.
What the Gap Reveals
The gross-to-contribution gap is the operating cost density of the eCommerce model. For most categories, the gap is 35–50 percentage points. The gap composition reveals where leverage actually exists.
Apparel/Footwear
- Gross: 60–70%
- Contribution: 12–22%
- Gap drivers: high return rates (20–30%), variable CAC ($25–$45), free shipping thresholds erode shipping margin
Beauty / Skincare
- Gross: 65–80%
- Contribution: 18–32%
- Gap drivers: high CAC ($30–$60 for new categories), influencer cost not categorized as marketing, sample/seeding programs
Food / Beverage / Supplements
- Gross: 50–65%
- Contribution: 8–18%
- Gap drivers: heavy/cold shipping, free-shipping threshold below cost, high subscription churn replacement CAC
Home / Furniture
- Gross: 45–60%
- Contribution: 10–20%
- Gap drivers: dimensional weight shipping cost, returns labor and freight, damage and unsaleable rate
Electronics / Accessories
- Gross: 35–55%
- Contribution: 6–15%
- Gap drivers: lower headline margin, high payment processing as % of low-margin order, warranty cost
The pattern: gross margin reflects the supplier cost structure. Contribution margin reflects the operating model. Two operators with identical gross margins can have radically different contribution margins based on returns rate, AOV, fulfillment efficiency, and acquisition channel mix.
The Three Variable Costs Operators Most Underestimate
Returns
Returns are not a fixed percentage cost — they are a compounding cost. A single return generates: reverse shipping freight ($6–$10), inspection labor (~$3.50), restocking labor ($1.50–$3 if saleable), refund processing fee retention ($0.50–$1), and unsaleable factor (15–35% of returns are not resaleable at full value). The full math behind return costs reveals why free returns are often uneconomic at mid-AOV price points.
For a 24% return rate apparel operator, returns cost $3.50–$4.50 per order shipped — roughly 4–6% of revenue. Most operators model this as $0.80–$1.50, accounting only for the headline reverse shipping, and miss two-thirds of the cost.
Variable CAC vs Blended CAC
Blended CAC includes returning customers and organic traffic. Marginal CAC — the cost of the next order — is what matters for contribution margin decisions. For most growth-stage operators, marginal CAC is 1.4–2.0× blended CAC. Decisions made on blended CAC systematically under-price the cost of incremental growth.
Payment Processing on Refunds
When a customer is refunded, payment processors keep the original processing fee. Shopify Payments, Stripe, and most processors all retain the fee on refund. For operators with a 24% return/refund rate, this is a meaningful drag — 24% × ~3% of refunded amount = ~0.7% of GMV evaporated against gross. On $1.5M GMV, that is $10,500/year of pure leak that no accounting system surfaces.
Reframing the Pricing Decision
The most consequential application of contribution margin is pricing. The standard pricing question — "what is our markup multiple over COGS?" — produces gross margin targets. The correct pricing question is: "at this price, what is our contribution margin per order, and is it large enough to cover blended fixed cost plus profit per order?"
Worked through: the apparel operator above has $11.59 contribution per order. Modeled annual fixed cost (rent, salaries, software, agency retainer) at $580K spread across 18,750 orders = $30.93 fixed cost per order. The business loses $19.34 per order at a $80 AOV with these unit economics — and is deeply unprofitable despite a 65% gross margin.
To break even, contribution margin per order needs to rise from $11.59 to ~$31. That is achieved by some combination of: AOV increase (bundles, upsells), CAC reduction (organic mix shift, higher LTV/CAC ratio), returns reduction (sizing tools, better photography, return policy reform), or margin expansion (price increase, COGS reduction).
A 10% price increase with no volume loss would lift contribution per order by $8 (revenue increase minus variable cost on that increase). That alone closes 40% of the gap to break-even. This is the calculation gross margin pricing logic obscures.
What to Track Weekly
Operators serious about contribution margin track a small set of weekly numbers:
| Metric | Target | |---|---| | Contribution margin per order | Category-dependent: apparel 18%+, beauty 25%+, F&B 12%+, electronics 10%+ | | Contribution margin trend (4-week MA) | Flat or rising; falling = leak | | Marginal CAC | Specific to channel mix | | Return rate by SKU | Outlier flagging at SKU level, not category level | | Refund fee leak | Tracked monthly; renegotiable above $5M GMV | | Effective shipping cost per order (incl. free-shipping subsidy) | Trending against AOV |
The discipline is not the table. The discipline is making every decision — pricing, acquisition, returns policy, shipping threshold — against contribution margin, not gross margin.
The Verdict
Gross margin is a useful but insufficient operating metric. Contribution margin is the survival metric. The gap between them is the operating cost density that determines whether each marginal sale makes the business healthier or sicker.
For most operators, building contribution margin into the weekly operating cadence requires nothing more than a spreadsheet that captures all variable costs at the order level — most of the data already exists in Shopify Analytics, the 3PL portal, and the payment processor dashboard. The work is not data collection. It is the discipline of making decisions on the right number.
Operators who run the model usually find the contribution margin is 40–60% lower than they assumed. That gap, made visible, changes pricing decisions, acquisition decisions, and returns policy decisions in the same direction every time: less aggressive growth, more aggressive margin protection.
This Week
Build the contribution margin model for your last full month of operations. Take revenue, subtract every variable cost line item from the list above, and divide by orders. The number you get is the truth about your unit economics. If it is less than your contribution margin needs to be (per the category benchmarks above), the corrective action is not to grow faster — it is to fix the gap before scaling further. Most operators completing this exercise discover the leak is in the three line items the accounting system does not surface: full-cycle returns cost, marginal CAC, and refund fee retention.




