Connect. Measure. Keep.
A 4x ROAS campaign can still lose money on every order. MarginStack shows what is left after COGS, shipping, fees, and ads, per order, SKU, and channel.
$1,675
After COGS, shipping,
fees and ads
Connect your sources
Read-only access50% off month one. Code emailed now.
- Is Meta still paying for itself?
- Which SKU is under water after shipping?
- Can I raise spend this week without losing cash?
Connects to Shopify on both plans. Meta and Google on Growth.
Built for the cash a 4x campaign still burns.
ROAS stops at revenue. Contribution keeps subtracting until the bank account agrees.
ROAS stops at revenue. The bank does not.
Once COGS, shipping, returns, discounts, and payment fees come out, the winning campaign on the ads dashboard is often the one draining cash.
The objections we built for.
Every number on this page comes from the same engine your store would run on.
14-day free trial
Both plans. Cancel any time. No annual lock-in, no implementation fee.
No credit card to start
The trial begins when you connect a store. You are not billed to look.
Read-only Shopify
MarginStack never changes products, orders, or prices in your store.
Incomplete costs, flagged
Missing COGS never becomes a confident wrong number. The Health Score takes a completeness penalty.
A 4x campaign can still lose money on every order. Scale paid only when the channel still clears CM2 after every variable cost.
Stop rebuilding last month by hand. The same cuts, every morning, already reconciled.
I will not give a margin tool write access to my store. Read the orders. Do not touch the catalogue.
Six leaks between a sale and cash.
ROAS stops at revenue over ads. Contribution margin keeps subtracting until the bank account agrees. Sample mix from the public demo, last 14 days.
Gross to CM2
What the ads dashboard celebrates
After discounts and refunds
After product, shipping, fees
After ads. Cash that remains.
Where $100 of gross goes
Demo store. Not a live merchant.
Left as CM2
14%
of net revenue after every variable cost and ads.
Growth leak
Ad spend
The number you scale on is the last leak, not the first.
CM2 is CM1 minus ads for the same window. A 4x ROAS can still be red.
- Demo, 14 days
- $6,099
- On a $100 sale
- $48.2
Every number shows its work.
MarginStack publishes the formula behind each figure and flags incomplete cost data instead of guessing. If COGS is missing for a SKU, you see a warning, not a confident wrong answer.
- CM1
- Net revenue minus COGS, shipping, payment fees, and other variable costs
- CM2
- CM1 minus ad spend for the same period
- Blended CAC
- Ad spend divided by new customers in the period
Contribution waterfall
Demo, 14 days
CM2
14.2% of net revenue
Live in under ten minutes.
No data team, no warehouse, no implementation call. Connect Shopify, add costs, and history backfills. Ads and CM2 are on Growth.
Shopify connect. From Settings. SKU costs. Public demo. Morning digest. Public demo.
Growth is the product you just read. Starter is Shopify-only.
50% off your first month on Starter or Growth if you install within 30 days of App Store launch.
Growth
First month for waitlist. Then full price.
The board on the homepage. CM2 after ads, CAC, LTV, payback.
- Everything in Starter
- Meta and Google Ads sync
- CM2 after ads, by day, channel, SKU
- Blended and channel CAC, LTV, payback
- Cohort analysis
- Morning brief email
Starter
First month for waitlist. Then full price.
Shopify only. CM1 after product costs, shipping, and fees. No ads.
- Shopify sync
- CM1 by day, channel, SKU
- COGS CSV upload
- Health Score and P&L
- USD and INR display
- Margin drift on Shopify economics
Installing from the Shopify App Store? Billing is handled through Shopify.
The things founders ask first.
Short answers. The sample demo has the rest.
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. MarginStack 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.
Which plan matches the homepage?
Growth. That is CM2 after ads, plus CAC and payback. Starter is Shopify only: CM1 after product costs, shipping, and fees. No Meta or Google.
Do I need Meta and Google connected?
No. Shopify alone gives you CM1 on Starter. Ad accounts on Growth 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. This page shows INR in India and USD everywhere else. Inside the product you can still switch USD, INR, or both.
What's the waitlist offer?
50% off your first month on Starter or Growth if you install within 30 days of App Store launch. You get a unique code in email when you join. After the window, full price. The 14-day trial still applies at install.
I installed from the Shopify App Store. How do I pay?
Shopify bills the subscription on your store. Manage the charge from Shopify admin, or from Settings → Billing in the app. Signing up on the website uses a card checkout instead. App Store installs never do.
See which channel is still losing money. Then scale.
Not on the App Store yet. Join the waitlist and lock 50% off your first month if you install within 30 days of launch.
We’ll email your unique code. 50% off month one when we go live.