Gross Margin Measurement

A practical framework for measuring gross margin in an online store — defining COGS line by line, separating gross from contribution margin, and choosing the right variant for each audience.
Gross Margin Measurement
The discipline of defining what belongs in COGS, computing gross margin consistently, and reporting the right variant to each stakeholder.
Gross margin measurement is the operational discipline behind a single number that every founder, finance lead, and head of growth quotes — but rarely defines the same way. For an online store, the question is never just revenue minus cost of goods sold; it's which costs count as "goods sold". Landed product cost is obvious. Payment processing fees, pick-and-pack, outbound shipping, returns, and free-shipping subsidies are where teams disagree.
This framework defines a stable COGS scope, separates gross margin from contribution margin, and gives you a stakeholder-by-stakeholder rule for which variant to report — so the number means the same thing in a board deck, a paid-media review, and a SKU-level merchandising decision.
Most online stores carry three different gross margin numbers in three different tools — Shopify's analytics, the finance team's spreadsheet, and the agency's media report — and none of them match. The gap is rarely arithmetic; it's a scope problem. Each tool counts a different set of costs.
Fixing this isn't a finance exercise. It's a measurement contract: agree on what belongs in COGS, write it down, and apply it consistently across SKUs and channels. The rest of this page walks through that contract.
Step 1 — Define what belongs in COGS
The minimum scope for COGS for DTC is landed product cost: unit cost from the supplier, inbound freight, customs and duties, and any per-unit inspection or rework. These are the costs that scale linearly with units sold and would not exist if the order were cancelled before fulfilment.
The contested items are payment processing (typically 2.0-2.9% of order value on Shopify Payments or Stripe), pick-and-pack labour, outbound shipping, packaging inserts, and the cost of returns. A defensible default is to include payment fees, pick-and-pack, and a returns provision in COGS, and to treat outbound shipping separately when you offer free-shipping thresholds that distort it by AOV tier.
Step 2 — Separate gross margin from contribution margin
Gross margin stops at the cost of getting the product to the customer. Contribution margin keeps going — it subtracts variable marketing cost (CAC for new customers, retention spend for repeat orders) to show what each order actually contributes to fixed costs and profit. The split matters because the levers are different: gross margin moves with supplier negotiations and packaging; contribution margin moves with channel mix and creative.
A useful rule: if a beauty brand reports a 62% gross margin and a 14% contribution margin on the same SKU, you're looking at a media-cost problem, not a sourcing problem. The two numbers answer different questions and belong in different conversations. See Gross Margin vs Contribution Margin for the side-by-side.
The most common reporting trap
Reporting blended gross margin across SKUs hides the mix. A €40 hero SKU at 70% margin and a €15 accessory at 25% margin blend to a healthy-looking 58% — until the accessory becomes 40% of orders and contribution margin collapses. Always carry SKU-level (or at minimum category-level) gross margin alongside the blended number.
Step 3 — Match the variant to the stakeholder
Finance and the board want first-order gross margin including payment fees and fulfilment — the closest proxy to what shows up in statutory accounts. Merchandising wants product-only gross margin (landed cost vs. price) so supplier and pricing decisions aren't muddied by fulfilment changes. Paid-media leads want contribution margin after marketing, so they can defend ROAS targets against an actual profitability floor.
Document all three definitions in one place, label them clearly in every report, and use the Gross Margin Calculator to keep the arithmetic consistent across tools. The number you quote should always carry a one-line scope note: "gross margin, post-fulfilment, pre-marketing" beats a naked percentage every time.
The same SKU, four margin definitions
Frequently asked questions
Gross margin = (Revenue − COGS) ÷ Revenue, expressed as a percentage. For an online store, the meaningful version is net revenue (after discounts and refunds) divided by a COGS that includes landed product cost, payment fees, and fulfilment. The Gross Margin Calculator handles the arithmetic; the work is agreeing on what goes into COGS.
Yes, for any reporting variant other than pure product margin. Payment fees scale 1:1 with order value, are unavoidable per transaction, and belong with the cost of converting an order. Excluding them inflates gross margin by 2-3 percentage points without changing reality.
Include the actual shipping cost in COGS — the customer paying or not doesn't change the cost to you. The free-shipping subsidy then shows up as compressed margin on orders just above the threshold, which is exactly the signal you want when setting the threshold.
Two options. Either book returns as a contra-revenue line (reducing net revenue) and only count COGS on shipped-and-kept units, or carry a returns provision in COGS based on a category-level return rate. The first is cleaner; the second is easier to operationalise weekly. Pick one and stick to it.
Gross margin subtracts the cost of producing and delivering the order. Contribution margin keeps going and subtracts variable marketing cost too — so it tells you what each order contributes to fixed costs and profit after you've paid to acquire the customer. See Contribution Margin for the full breakdown.
Apparel and accessories typically land 55-70% product-only gross margin and 35-50% post-fulfilment. Beauty and supplements run higher (65-80% / 45-60%). Electronics and home goods sit lower (30-50% / 20-35%). Below those bands, paid acquisition rarely pencils out at typical CAC.
Yes, at minimum at the category level. Blended margin hides mix shift — a healthy 58% can mask a hero SKU subsidising an accessory line that loses money on every order. SKU-level margin is also a prerequisite for any meaningful merchandising or bundle decision.
Shopify's reports use the cost-per-item you've entered on each product, minus discounts, divided by revenue. It excludes payment fees, fulfilment, and returns by default — so it's closer to product-only margin than to a finance-grade gross margin. Useful directionally; not a substitute for a measurement contract.
Weekly at the blended level for operational monitoring, monthly at the SKU level for merchandising review, and quarterly with a full COGS audit (landed costs, supplier price changes, fulfilment rate updates). Margin drift is usually slow until it isn't.
Three reliable levers: renegotiate landed cost on the top 20% of SKUs by volume, reduce return rate through better sizing and product detail pages, and lift AOV through bundles so fixed per-order costs (payment fees, pick-and-pack) spread across more revenue. Each typically adds 2-5 points without touching the price tag.
See Metricuno on your data
Bring your stack — Google Analytics, Stripe, a CRM, anything — and we'll walk through the metric tree that turns your funnel into one number.