The Number Your Accountant Doesn't Show You (But Should)
Gross profit is a useful metric. Net profit is the final score. But the metric that actually guides operational decisions — the one that tells you whether running a promotion will make you money or lose it — is contribution margin.
Contribution margin is revenue minus all variable costs directly attributable to selling that unit: cost of goods, payment processing fees, shipping costs, packaging, and the variable marketing spend that drove that sale. What's left is what each sale contributes to covering your fixed overhead and generating profit.
For Shopify merchants making operational decisions daily (pricing changes, promotions, ad spend adjustments, product cuts), contribution margin per unit and per channel is the number that matters.
Contribution Margin vs. Gross Profit:The Critical Difference
Gross profit = revenue − COGS
This is what Shopify's built-in profit reports calculate (when COGS is entered). It excludes variable non-COGS costs.
Contribution margin = revenue − COGS − all variable costs
Variable costs include:
- Payment processing fees (typically 1.4-2.9% + fixed fee)
- Shipping and fulfillment costs (per order)
- Packaging materials (per unit)
- Variable customer acquisition cost (ad spend allocated per sale)
- Return handling costs (prorated by return rate)
Why the distinction matters for decisions: A product with 60% gross margin sounds healthy. But if the average order ships for €8, processes payment at 2.5%, and was acquired via Google Shopping at a €12 CPA, the contribution margin on a €40 product is:
- Revenue: €40
- COGS (40% of €40): −€16
- Shipping: −€8
- Payment fees (2.5%): −€1
- Customer acquisition (allocated CPA): −€12
- Contribution margin: €3 (7.5%)
At 7.5% contribution margin, this product barely covers fixed overhead. Running a 15% discount promotion on it means selling at a net loss.
Building a Contribution Margin Model in Shopify
Shopify doesn't calculate contribution margin natively — you need to build a model. Here's the architecture:
Step 1: Ensure COGS is entered for every active variant Navigate to Products → select product → Variants → Cost per item. This is the landed cost (product cost + freight + import duties / units). Without accurate COGS, every downstream calculation is meaningless.
Step 2: Calculate your fixed variable costs For your store, calculate average per-order:
- Fulfillment cost per order (3PL pick-pack fee, or your internal cost estimate)
- Outbound shipping cost per order (or use your shipping rate if customers pay shipping)
- Packaging materials per order
- Payment processing cost (use your actual Shopify Payments or gateway rate)
Step 3: Allocate marketing spend per order Pull your total marketing spend for the period from each channel. Divide by the orders attributed to that channel (using Shopify's UTM attribution or your last-click model). This gives you a blended or channel-specific CPA to allocate per order.
Step 4: Build the model in a spreadsheet Create a Google Sheet with rows per product/SKU:
- Columns: Selling price, COGS, Gross Profit, Shipping cost, Payment fee, Allocated CPA, Return rate adjustment, Contribution Margin €, Contribution Margin %
- Pull Shopify data via Better Reports or Report Pundit into the sheet automatically
Contribution Margin by Channel:Where to Spend More
Channel-level contribution margin analysis reveals which acquisition channels are actually profitable — not just which have the lowest CPA.
A channel with €15 CPA from customers who average €25 AOV and a 15% gross margin is destroying value. A channel with €35 CPA from customers who average €120 AOV, 60% gross margin, and a 2.5x repurchase rate is your highest-priority investment.
How to calculate:
- Segment your Shopify orders by acquisition channel (UTM source)
- For each channel: sum revenue, sum estimated COGS (COGS% × revenue as an approximation), sum ad spend, sum estimated variable costs
- Calculate: Channel Contribution = Revenue − COGS − Variable Costs − Ad Spend
- Express as CM% = Channel Contribution / Revenue
Channels with CM% above your minimum threshold get more budget. Channels below the threshold get restructured or cut.
Contribution Margin for Promotion Decisions
Before running any promotion, calculate the minimum volume lift needed to maintain positive contribution margin:
Breakeven volume formula: Breakeven lift = (Discount %) / (CM% − Discount %)
Example: 20% discount on a product with 35% CM:
- Breakeven lift = 20% / (35% − 20%) = 20% / 15% = 133%
- You need to sell 133% more units to break even on the promotion
If your historical promotion uplift is 40-60%, running a 20% discount on a 35% CM product is a guaranteed money-loser. This math should precede every promotional decision.
At Verdant Mindset, we help Shopify merchants build the financial analytics architecture that makes decisions like these data-driven. See our Shopify and ecommerce analytics services.
Shopify shows you what the customer paid, not what's left for you. The processing fee never shows up in the reports — if you don't subtract it from contribution margin by hand, you're inventing your profit.
Scale Your Ecosystem
30-min discovery call — no cost, no pitch. We audit your digital architecture and deliver a clear operational plan.
- 01Short message with your business context
- 02Reply within 24h with a discovery-call proposal
- 03Operational plan + scope recommendation
FAQ.PROTOCOL

