Skip to content

E-commerce 9 min read Updated June 19, 2026

How do I calculate real ad profitability for my store?

Short answer

Start with contribution margin, not revenue. Take each product's price, subtract cost of goods, shipping, transaction fees, and returns to get gross profit per order. Then subtract the ad spend that produced that order. If profit per order exceeds your blended customer acquisition cost, the ads are genuinely profitable.

E-commerce store owner reviewing profit margins and ad spend on a laptop in a product workshop

Key facts

  • ROAS measures revenue per ad dollar, not profit — a 4x ROAS on a product with a 20% margin still loses money on every sale.
  • Real ad profitability starts with contribution margin: price minus COGS, shipping, payment processing fees, and returns — before any ad spend is subtracted.
  • Break-even ROAS equals 1 divided by your contribution margin: a 30% margin needs roughly a 3.3x ROAS just to break even.
  • Shopify charges $39–$399/mo plus transaction fees, and WooCommerce hosting runs $30–$200/mo — fixed costs most stores forget to fold into per-order math.
  • Returns, discounts, and platform fees quietly erode 10–30% of headline revenue, which is why dashboard ROAS almost always overstates true profit.

Why ROAS Alone Never Tells You If You're Profitable

ROAS — return on ad spend — measures revenue per ad dollar, and revenue is not profit. That single gap is why so many store owners feel busy and broke at the same time.

Say your ad platform reports a 4x ROAS: every $1 of ad spend returned $4 in sales. That sounds healthy. But if the products you sold carry a 25% contribution margin, that $4 of revenue only contains $1 of gross profit — exactly what you spent on the ad. You broke even and scaled your workload for nothing. Push for volume at that ratio and you can grow revenue every month while your bank balance shrinks.

The platforms aren't lying; they're just reporting the only number they can see — the sale. They don't know your cost of goods, your shipping, your payment processing fee, your return rate, or the discount code the customer stacked at checkout. All of that sits between revenue and profit, and all of it comes out of your pocket, not Google's or Meta's dashboard.

There's also an attribution layer. The platform claims credit for sales it merely influenced, and counts each conversion in its own walled garden, so summed ROAS across Google and Meta can exceed your actual order count. Treat reported ROAS as a directional signal for which campaigns are working relative to each other — not as a verdict on whether your store makes money. The verdict only comes from margin-based math, which the next section walks through step by step.

Step One: Calculate Contribution Margin Per Order

Before you can judge an ad, you need to know what one order is actually worth to you. That number is contribution margin, and almost every store overestimates it.

Start with the average order's selling price after discounts — use the price customers actually pay, not your list price, because promo codes and free-shipping thresholds are real. From that, subtract every variable cost tied to fulfilling the order: cost of goods sold (what you paid for the product), inbound and outbound shipping, packaging, and the payment processing fee (typically a small percentage of the sale plus a flat per-transaction charge). Then subtract a returns allowance — if 12% of orders come back, every order effectively carries about 12% of a refund-and-restock cost, so spread that loss across all orders.

What's left is your contribution margin in dollars, and as a percentage of the sale price. A $100 order with $45 COGS, $9 shipping, $3 processing, and a returns allowance of $7 leaves $36 — a 36% margin. That $36, not the $100, is the money available to pay for advertising and still turn a profit.

Two cautions. First, platform costs matter: Shopify runs $39–$399/mo plus transaction fees and WooCommerce hosting $30–$200/mo, and those fixed costs eat into profit even though they aren't per-order. Spread them across your monthly order volume so they don't hide. Second, do this per product or product group, not store-wide — a hero product at 50% margin and a loss-leader at 8% tell very different stories, and a single blended average can mask the SKUs quietly draining you.

Step Two: Find Your Break-Even ROAS and True CAC

Once you know your contribution margin, your break-even ROAS falls out of one piece of arithmetic: divide 1 by your margin. A 36% margin means a break-even ROAS of roughly 2.8x (1 ÷ 0.36). Below that you lose money on each sale; above it you make money.

This single number reframes every campaign. A store with a 50% margin breaks even at a 2x ROAS, so a 3x is genuinely profitable. A store with a 20% margin needs a 5x ROAS just to break even — and a 4x that looked great on the dashboard is actually a loss. Print your break-even ROAS on the wall, because it converts the platform's vanity metric into a clear go/no-go line.

The other half of the picture is customer acquisition cost (CAC) — total ad spend divided by new customers acquired. Calculate it blended across all channels, not per platform, so overlapping attribution doesn't let two platforms both claim the same buyer. If your contribution margin per order comfortably exceeds your blended CAC, the ads pay for themselves on the first purchase. If it doesn't, you're either buying customers at a loss or relying on repeat purchases to recover the gap.

That repeat-purchase question is where lifetime value enters. A store where the average customer buys three times a year can rationally pay a CAC above first-order margin, because customer lifetime value covers it. A one-and-done store cannot. Knowing your repeat rate tells you which game you're playing — and stops you from either over-spending on customers who never return or under-investing in acquiring ones who would.

Step Three: Connect the Real Numbers So You Can See Profit

The math above only works if real costs flow into your reporting — otherwise you're calculating profit on guessed inputs. Most stores fail here, not at the formula.

The cleanest setup feeds cost of goods into your platform so profit, not just revenue, shows up in reporting. Shopify lets you store COGS per variant and surfaces gross-profit reports; WooCommerce can do the same with a cost-of-goods plugin. With COGS in the system, your analytics can report profit per order and per channel instead of leaving you to reverse-engineer it in a spreadsheet at month-end. Pair that with accurate conversion tracking so each sale ties back to the campaign that produced it, and you can finally see profit by source.

Then close the loop with the ad platforms. Importing order value — ideally profit-adjusted value rather than raw revenue — back into Google Ads lets the algorithm optimize toward profitable orders, not just any order. If you sell a $40 item at 60% margin and a $200 item at 15% margin, raw-revenue bidding chases the $200 item even though the $40 one makes you more money. Value-based bidding fixes that, but only if you feed it the right value.

Finally, reconcile against reality monthly. Compare the profit your dashboards claim to what actually landed in the bank after refunds, chargebacks, and platform fees cleared. The gap between reported and banked profit is your measurement error — and shrinking it is the whole job. If you'd rather not assemble this stack yourself, this is exactly the kind of full-funnel, first-click-to-final-sale tracking SearchPod builds for e-commerce clients, with the account and data owned by you.

Related questions

Want a second opinion on your situation?

Get a free, no-obligation proposal. We’ll look at your site and your market and tell you honestly what we’d do — and what we wouldn’t.

Get your free proposal

Keep reading

More questions

All 171 questions