Your Shopify Store is Growing But You're Not Making Money. Here's Why.
Share
By Sean Clarke, Founder PacificIQ and EcomIQ
When I ask a new brand what their goal is, the most common answer is sales. Not profit. Sales.
Which to me seems totally wrong.
Unless you're funded by VC or private equity and you've got money to burn, you should be focusing equally on profit generation as you are on sales. Because at the end of the day, that's the purpose of the business.
But people get so lost in the top-line sales number. They fail to realize that underneath, you've got to make sure you've got the right profit margins to support advertising and actually pay yourself at the end of the year.
That's where a lot of brands go wrong. They just stay in denial about their unit economics and their P&L.
ROAS is not profit
Here's the thing that trips up almost every brand. They see a 3x ROAS and think they're making money.
You're not.
ROAS only tells you how much revenue you generated per dollar spent on ads. It says nothing about your actual costs. Your landed cost per unit. Your payment processing fees. Your shipping. Your platform fees. Your 3PL. Your returns.
A 3x ROAS sounds great until you realize you're selling a product with 40% margins, your CAC is $45, and your AOV is $75. You just spent $45 to make $30 in gross profit. Then you paid $3 in processing fees, $8 in shipping, and $2 in platform costs.
You're underwater.
The break-even ROAS that your agency calculated for you? It's wrong. They didn't include your actual landed costs. They used your Shopify product price and guessed at your margins.
That's not how this works.
What contribution margin actually means
Contribution margin is the only number that matters. It's what's left after you subtract all your variable costs from revenue.
Here's the formula:
Revenue − Product Cost − Shipping Cost − Payment Processing − Ad Spend − Platform Fees = Contribution Margin
If that number is negative, you're losing money on every order. Doesn't matter what your ROAS says. Doesn't matter what your revenue number looks like. You're burning cash.
And here's the part that really stings. Most brands don't calculate this per SKU. They look at blended numbers across their whole catalog.
So they've got one hero product with healthy margins subsidizing three other SKUs that are bleeding money. And they don't know which is which.
You need to know your contribution margin by SKU. Not blended. By SKU.
How to actually calculate if you're making money
Pull your Shopify data for the last 90 days. Break it down by product.
For each SKU, you need:
-
Revenue per unit sold
-
Your actual landed cost per unit (including shipping to your warehouse, duties, freight, everything)
-
Your average shipping cost to the customer
-
Payment processing fees (usually 2.9% + $0.30)
-
Platform fees (Shopify charges you per transaction)
-
Ad spend allocated to that SKU (if you're running product-specific campaigns, if not, allocate by revenue contribution)
Now run the math:
Let's say you're selling a product for $75.
| Cost Item | Amount |
| Product sells for | $75.00 |
| Landed cost | -$32.00 |
| Shipping to customer | -$8.00 |
| Payment processing | -$2.48 |
| Shopify fee | -$1.50 |
| Ad spend per order | -$22.00 |
| = Contribution Margin | $9.02 |
That's what you actually made. $9.02.
Not $75.
Not $43 gross profit.
$9.02 after all your variable costs.
And you still haven't paid rent, salaries, software, or any fixed costs. That $9.02 has to cover everything else and leave you with actual profit at the end of the year.
If that number is $2 or negative, you're in trouble. You can't scale a business on $2 contribution margin. The math doesn't work.
The capital allocation problem
Here's where it gets even worse. If you don't understand your cross-channel metrics, you're allocating capital to the wrong places.
Let's say you think Meta is performing better than email. So you lean into it. You put all your money into Meta.
But Meta is driving the traffic. Email is the conversion mechanism. You're putting all your money into a channel that's actually not closing the sale.
Understanding what works and what doesn't work in a really detailed way is the only way you can allocate your capital correctly.
And the other thing people don't think about enough? Lifetime value is actually your piggy bank.
If you can prove out that your LTV is actually $250 versus $150, that allows you to have much higher acquisition costs because you know you're going to make it back over time. Which means you're going to beat your competitor.
Think about it from a cash flow perspective. How do I get more money in to reinvest and reacquire customers? It's not always at the top of the funnel. It's often at the very end that actually matters.
And it's totally neglected.
What to do if your margins are broken
If you run the numbers and your contribution margin is terrible, you've got a few options.
-
Raise your prices. Most brands are undercharging. If your product is good and your brand has any equity at all, you've got room to move.
-
Lower your product costs. Renegotiate with suppliers. Find a cheaper freight option. Cut SKUs that are killing your margins.
-
Reduce your CAC. Stop blaming your ads and fix your conversion rate. Optimize where traffic goes. Improve your email flows so you're not spending $45 to acquire a customer who only buys once.
-
Increase AOV. Bundles. Upsells. Post-purchase offers. If you can get people spending $120 instead of $75, your contribution margin per order just doubled.
-
Focus on retention. Build your LTV. A customer who buys three times is worth way more than three customers who each buy once. And it costs you way less to keep them.
But you can't fix what you don't measure. And if you're not tracking contribution margin by SKU, you're flying blind.
Run the numbers. Know where you stand. Then fix it.
Want operator-led insights delivered before anyone else?
Subscribe to our mailing list and get all our articles, strategies, and real numbers straight to your inbox, before they're published anywhere else. No fluff, just what's working right now for brands in the trenches.


