Blog
·10 min read·guides

Ecommerce Profit Margin: What’s Good, What’s Killing You, and How to Fix It

What a good ecommerce profit margin looks like, how to calculate contribution margin, and fast fixes that protect profit.

B

BiClaw

Ecommerce Profit Margin: What’s Good, What’s Killing You, and How to Fix It

Ecommerce Profit Margin: What’s Good, What’s Killing You, and How to Fix It

If you can’t see your true margins, you can’t scale safely. This guide gives you plain‑English definitions, napkin‑math you can trust, a copy‑paste table, and practical fixes you can ship this week. There’s a mini‑case with real numbers, one comparison list (do this, not that), and internal links so you can go deeper.

TL;DR

  • A “good” ecommerce gross margin is typically 40–70% depending on category; contribution margin after variable costs (COGS + shipping + payment + pick/pack + returns) is the real guardrail.
  • Target contribution margin per order ≥ 20–30% before ads; aim for blended CAC that still leaves ≥ 10–20% operating margin after overhead.
  • Biggest margin killers: underpriced shipping, discount depth creep, refunds/returns, payment fees on BNPL, and waste in pick/pack.
  • Fixes that move fastest: raise free‑shipping threshold, trim blanket discounts, bundle to lift AOV, renegotiate rates, and improve PDP clarity to cut returns.
  • Track margin weekly by cohort and channel. Automate a zero‑click morning brief so issues surface before they snowball (see How to Automate Your Shopify Morning Brief).

Authoritative primers for definitions:


Margin basics (the fast, accurate way)

Let’s anchor on four layers. Keep them separate so you can see where money leaks.

  1. Gross margin = (Revenue − COGS) / Revenue
  • COGS = landed product cost (unit cost + inbound freight + duties, if you include them).
  1. Contribution margin (per order) = Revenue − (COGS + shipping outbound + packaging + pick/pack + payment fees + variable platform fees + returns provision)
  • Expressed as $ per order or % of revenue. This is your performance marketing guardrail.
  1. Operating margin (store) = (Contribution margin − fixed overhead) / Revenue
  • Overhead = salaries, rent, software, agency retainers, founders’ pay, etc.
  1. Net profit margin = (All revenue − all expenses, incl. taxes) / Revenue

Why contribution margin matters: It’s where tactical fixes live. Raising AOV $8 at the same variable costs can be the difference between scaling ads and burning cash.

A mini‑case: $58 AOV brand tightens the screws

Context: A DTC accessories brand processes 10,000 orders/month.

  • AOV = $58
  • Product unit COGS = $18
  • Outbound shipping (avg) = $6.40
  • Packaging + pick/pack = $2.10
  • Payment fees (2.9% + $0.30) ≈ $1.98
  • Returns rate = 8% of orders; net cost per return (two‑way ship + handling − resale value) = $5.00 averaged across all orders → $0.40 provision per order
  • Platform fees/apps variable per order ≈ $0.30

Per‑order contribution margin math (before ads):

  • Revenue: $58.00
  • Variable costs: $18.00 + 6.40 + 2.10 + 1.98 + 0.40 + 0.30 = $29.18
  • Contribution dollars: $58.00 − $29.18 = $28.82
  • Contribution margin %: $28.82 / $58.00 ≈ 49.7%

Ad spend guardrail (blended CAC):

  • If you want ≥ 12% operating margin after fixed overhead of $300k/mo on $580k revenue, you can spend up to roughly contribution − overhead allocation.
  • Overhead per order at 10k orders = $300,000 / 10,000 = $30.00. You obviously can’t cover $30 overhead with $28.82 contribution and any ad spend — that’s the wake‑up call.
  • Moves: increase AOV, cut variable costs, or both, before scaling.

Two fixes in 30 days:

  1. Raise free‑shipping threshold from $50 → $65 and introduce a $12 bundle add‑on with 70% gross margin.
  2. Swap carrier service, saving $0.70 per parcel on average.

New numbers after 30 days (mix shift):

  • AOV lifts to $64.50 (bundle attach 22%).
  • Shipping cost drops to $5.70.
  • Everything else constant.

Re‑compute: variable costs = $18.00 + 5.70 + 2.10 + 2.18 (3.4% + $0.30 on higher AOV) + 0.40 + 0.30 = $28.68

  • Contribution dollars: $64.50 − $28.68 = $35.82
  • Contribution %: $35.82 / $64.50 ≈ 55.5%
  • Overhead per order still ~$30 → now you have ~$5.82 left for ads to break even on operating profit.
  • Further step: lift attach rate or reduce returns to create a $10–$12 CAC headroom.

Lesson: You don’t scale spend until contribution margin funds both overhead and a reasonable CAC.

Table: Typical margin bands and quick levers (directional)

Category / modelGross margin (typical)Contribution killersFastest fixes
Apparel (DTC)55–70%Returns, discount depth, shippingSize guides, exchanges over refunds, $ threshold for free ship
Beauty / CPG60–80%Sampling costs, promo packs, 3P feesBundles, autoship discounts tied to margin, smaller samples
Home goods40–60%Heavy parcels, damagesDim weight optimization, packaging tweaks, carrier renegotiation
Electronics20–40%Low gross margin, RMAs, BNPL feesAccessory bundles, protection plans, upsells
Supplements70–85%Chargebacks, subscription churnPrepaid bundles, churn‑sensitive offers, QA labels

Sources: category ranges compiled from merchant benchmarks and standard finance references (see Investopedia and QuickBooks primers above). Your mileage varies — measure your own data.

Channel math: the CAC→margin handshake

Your contribution margin sets the ceiling for paid acquisition. Tie the two explicitly.

  • Define a target contribution % by channel (paid social, search, affiliates, email).
  • Paid channels: CAC must be ≤ contribution dollars − overhead allocation per order − target operating profit per order.
  • Affiliates: treat commission as a variable cost inside contribution, not as “marketing” later.
  • Email/SMS: low CAC but watch discount depth; model discount as a variable cost.

Example (continuing mini‑case): with $35.82 contribution and ~$30 overhead per order:

  • If you target 8% operating margin at $64.50 revenue → $5.16 per order must remain after CAC.
  • Therefore CAC headroom ≈ $35.82 − $30.00 − $5.16 = $0.66. Not viable until AOV increases further or overhead per order drops via volume or cost cuts.

The fix pattern:

Subscriptions vs one‑time: margin shape differs

  • One‑time orders: protect contribution on day 0; your CAC must fit inside it.
  • Subscriptions: first order may be breakeven; model payback with churn.
  • Track cohort contribution: Month 1, 2, 3 contribution per subscriber after COGS, shipping, payment, and cancellation costs.
  • Use a simple “payback window” rule: paid CAC ≤ contribution accumulated by Month N (your tolerated payback).

Where margins quietly die (and how to resuscitate them)

  1. Shipping and fulfillment bloat
  • Symptoms: shipping cost per order creeps up; dim weight surprises; re‑shipments after failed delivery.
  • Fixes: negotiate annual rate reviews; right‑size packaging; add address validation; set a smart free‑ship threshold 10–20% above current AOV; surface pickup options.
  1. Discount dependence
  • Symptoms: sitewide codes every week; AOV flat or down; CR spikes then crashes; margin per order erodes.
  • Fixes: move to thresholds (free ship at $X), bundles, accessory add‑ons, limited category promos. Track discount rate (% of gross) as a KPI.
  1. Returns and refunds
  • Symptoms: refund rate > 2–3% of net sales (varies by category); high size‑related returns; same‑SKU repeat offenders.
  • Fixes: clearer PDPs, size guides, UGC fit photos, exchanges first, prepaid labels with policy gates. Add a per‑order returns provision to your margin math.
  1. Payment fees (especially BNPL)
  • Symptoms: payment fee % rising with BNPL adoption; duplicate capture confusion.
  • Fixes: steer to lower‑fee methods with inline nudges; confirm one purchase event in GA4 to avoid data mismatches; periodically benchmark processors.
  1. Pick/pack and micro‑inefficiencies
  • Symptoms: warehouse minutes per order creeping up; too many box sizes; insert waste.
  • Fixes: standardize SKUs by pack pattern; kit frequent bundles; audit inserts; measure minutes per order weekly.

Comparison list: do this, not that (margin edition)

  • Do: Track contribution margin weekly by channel; Don’t: Judge performance on ROAS alone.
  • Do: Set a free‑shipping threshold above AOV; Don’t: Offer blanket free ship on every cart.
  • Do: Bundle accessories to lift AOV; Don’t: Race to the bottom with sitewide discounts.
  • Do: Use exchanges to save revenue; Don’t: Default to refunds for fit issues.
  • Do: Negotiate carrier and payment fees annually; Don’t: Assume last year’s rates are fine.
  • Do: Add a returns provision into per‑order math; Don’t: Pretend refunds are “edge cases.”
  • Do: Automate a morning brief with refund/discount KPIs; Don’t: Discover margin erosion at month‑end.

Deep dives and practical walk‑throughs:

How to instrument margin in 60 minutes

You don’t need a warehouse and a BI team to see margins weekly. Do this today:

  • Pick your source of truth for money (Shopify Analytics is fine). Link: https://help.shopify.com/en/manual/reports-and-analytics
  • Create a simple sheet with columns: date, orders, revenue, COGS, shipping, packaging, pick/pack, payment fees, returns provision, other variable, ad spend.
  • Compute: contribution $ and %, CAC, and operating margin estimate (allocate monthly overhead ÷ orders).
  • Add targets: contribution % ≥ 45% (example), refund rate ≤ 2%, discount rate ≤ 12% of gross.
  • Automate: set up a 7:30 a.m. brief that posts contribution %, refund rate, and discount rate with arrows vs 7‑day baseline — see How to Automate Your Shopify Morning Brief.

If you need definitions, Investopedia and QuickBooks are useful starting points (linked above).

PDP clarity = fewer returns (and higher margin)

Returns crush margins. The cheapest fix is better product detail pages. Borrow from Baymard’s research and common sense:

  • Size guides with measurements, not vague S/M/L only
  • Real‑world photos on different bodies or use cases
  • Care instructions; material composition
  • Clear shipping/returns policy with exchange option front‑and‑center
  • Q&A or “common fit questions” module

Most brands see returns drop 10–30% on SKUs once PDP clarity improves. That directly raises contribution margin.

Cash conversion and inventory (don’t ignore)

Margins exist on paper until cash clears. Watch cash conversion cycles so profit becomes oxygen, not an accounting story.

  • Shorten time between cash out (inventory purchase) and cash in (order captured).
  • Negotiate vendor terms (net 30→45), especially as volume grows.
  • Avoid over‑ordering slow SKUs that create markdown pressure (a hidden margin killer).
  • Add “days on hand” to your weekly brief and tie marketing to inventory risk.

Your 30/60/90 margin plan

Day 0–30: Find and stop the bleeding

  • Instrument the sheet and morning brief.
  • Set new free‑ship threshold; launch one bundle with 60–80% gross margin.
  • Renegotiate carrier tiers; enable address validation.
  • Tighten discount policy: cap sitewide to 2 events/month; shift to thresholds and bundles.

Days 31–60: Lift AOV and stabilize refunds

  • Add 2–3 accessory add‑ons at checkout; test price points.
  • Roll out exchanges‑first flow; update PDPs on top 20 SKUs.
  • Review payment mix; nudge to lower‑fee options where feasible.

Days 61–90: Systematize and scale

  • Review vendor rates (packaging, 3PL) quarterly; lock in wins.
  • Add a contribution margin gate to campaign approvals.
  • Build a margin dashboard by channel and cohort; audit weekly in a 15‑minute meeting.

Related reading


Ready to protect margin while you grow? BiClaw is a true assistant that ships with ecommerce skills — it watches refund and discount rates, surfaces anomalies, and nudges you toward profitable actions. Start a 7‑day free trial at https://biclaw.app.

Further reading

ecommerce profit margincontribution marginCOGSAOVrefund ratediscount rate

Ready to automate your business intelligence?

BiClaw connects to Shopify, Stripe, Facebook Ads, and more — delivering daily briefs and instant alerts to your WhatsApp.