Contribution margin for Shopify D2C
Your ROAS says scale.
Your bank account disagrees.
True CM1/CM2 per order, SKU, and channel - so you know which growth actually pays for itself.
Aurora Skin Co
Today's margin health
- ·CM2 margin slipped vs prior period
Investigate CAC spike. CAC rose sharply vs the prior period - check creative fatigue and audience overlap.
Connects to what you already run
The gap
A 4x ROAS campaign can still lose money on every order.
Once COGS, shipping, returns, discounts, and payment fees come out, the winning campaign on your ads dashboard is often the one draining cash.
Product
The whole picture, not the flattering half.
Everything a lean D2C team needs to answer one question: are we profitable on this customer, SKU, and channel right now?
Drill into any cut
CM by day, channel, and SKU. See which channels clear their own ad spend and which are funded by the ones that do.
One Health Score
CM2 trend, CAC vs target, returns, and cost completeness in a single 0-100.
Customer economics
Repeat rate, LTV, LTV:CAC, and payback - whether retention carries acquisition.
Alerts that name the cause
Margin drift and CAC spikes in plain English, plus a morning brief with the ranked fixes.
USD and INR side by side
Store math stays in store currency. Display converts at the daily FX rate.
P&L to contribution
Gross to CM2 in one strip, with every variable cost visible.
No black box
Every number shows its work.
Contribution margin is only useful if you trust it. MarginOS publishes the exact formula behind each figure and flags incomplete cost data instead of quietly guessing. If COGS is missing for a SKU, you see a warning - not a confident wrong answer.
- CM1
- Net revenue - COGS - shipping - payment fees - other variable costs
- CM2
- CM1 - ad spend for the same period
- Blended CAC
- Ad spend ÷ new customers in the period
Setup
Live in under ten minutes.
No data team, no warehouse, no implementation call. Connect, add costs, and the history backfills itself.
Pick currency, connect Shopify
~2 minChoose USD, INR, or both - display converts immediately. Then one OAuth click pulls orders, refunds, and discounts.
Upload your costs
~5 minDrop in a COGS CSV with unit costs and shipping, set your payment fee rate, and MarginOS backfills margin across your history.
Check one number each morning
DailyA Health Score, the drivers behind it, and a ranked list of what to fix - delivered before you open the ads manager.
Pricing
Less than the hours you spend rebuilding the spreadsheet.
14-day free trial on both plans. Cancel any time - no annual lock-in, no implementation fee.
Starter
≈ ₹4,100
Get unit economics straight for the first time.
- Shopify sync
- CM1 & CM2 by day, channel, SKU
- COGS CSV upload
- Health Score + P&L
- Margin drift alerts
Growth
≈ ₹12,400
Scale paid with CAC that holds up.
- Everything in Starter
- Meta + Google Ads sync
- Blended & channel CAC, LTV, payback
- Cohort analysis
- Morning brief email
- USD + INR display
Installing from the Shopify App Store? Billing is handled through Shopify.
Questions
The things founders ask first.
How is this different from Shopify analytics or a ROAS dashboard?
Those show revenue and ad efficiency. Neither subtracts COGS, shipping, returns, discounts, or payment fees. MarginOS computes contribution margin after every variable cost.
What if my COGS data is incomplete?
Upload what you have. Aggregates built on incomplete data get a warning, and the Health Score takes a completeness penalty. Honest incomplete beats a confident wrong number.
Do I need Meta and Google connected?
No. Shopify alone gives you CM1. Ad accounts add CM2, blended and channel CAC, and payback - where most scaling decisions are made.
How does dual-currency display work?
Store math stays in store currency. Display converts at the daily FX rate, and you can toggle USD, INR, or both.
Find out what your growth actually costs.
Connect Shopify, upload costs, and see real contribution margin today.