Skip to content

Marketing ROI for ecommerce: profit per order, not clicks

Profit per order is what an order leaves after goods, shipping, payment fees and refunds, minus the ad spend it took to win it. Shopify reports most of the inputs, and ROAS counts none of the costs except the ad spend.

By , Founder & CEOPublished 4 min read

Run the numbers for your store: the free marketing ROI calculator, or the free Shopify fee calculator.

Judge marketing by profit per order: what an order leaves after goods, shipping, payment fees and refunds, minus the ad spend it took to win it. ROAS counts none of those costs. For illustration: an order worth €90 that leaves €36 before ads and costs €30 to win shows a ROAS of 3.0 against a break-even ROAS of 2.5, which is €6 of profit, and if refunds reverse €15 instead of €9 the same ROAS of 3.0 earns nothing.

Why does ROAS alone mislead?

Three reasons, each checkable. First, it counts revenue, not what the order leaves:

Conversion value (order after discounts)      €90
Refunds, average                               -€9   net sales €81
Cost of goods                                 -€35
Shipping cost                                  -€7
Payment fees                                   -€3
Contribution before ads                        €36
Ad spend to win the order                     -€30
Profit per order                                €6

ROAS 90 / 30 = 3.0      Break-even ROAS 90 / 36 = 2.5

Second, it counts what the platform credits, not what the ad caused. In a May 2014 NBER working paper, later published in Econometrica, Blake, Nosko and Tadelis of eBay Research Labs report a test in which all bidding on non-brand keywords was stopped for 60 days in roughly 30 percent of U.S. markets. A simple regression of sales on paid search spend implied returns of over 4000 percent, while their best estimate of average ROI using the experimental variation was negative 63 percent. That ROI is incremental revenue over spend minus one, so it is ROAS minus one, not profit. It is one company's paid search, and its authors worked at eBay at the time, so it is not a rule for every channel. No public measurement gives a typical gap for a Shopify store, which is why the check below uses your orders.

Third, recent days are incomplete. Google's Target ROAS page says to exclude the most recent conversion delay period when you evaluate ROAS. A platform's ROAS is still a fair gauge for comparing two campaigns inside that platform, because they share its counting rules, but it is a poor gauge of profit.

What does one order leave, and where is each input in Shopify?

Six inputs, all per order. Divide each Shopify total for a closed month by orders:

  1. Order value and discounts: Shopify defines net sales as gross sales minus discounts minus sales reversals, so refunds are already inside it.
  2. Refunds: the sales reversals in net sales. Shopify also reports a reversed quantity rate, which is returned items divided by sold items.
  3. Cost of goods: Shopify's gross profit is net sales minus cost of goods sold, and it needs costs set up in Shopify to be accurate.
  4. Shipping cost: Shopify reports shipping label costs and the average amount you pay per order on shipping.
  5. Payment fees: Shopify reports the payment processing fees you pay per order through Shopify Payments. Fees on other gateways are not in that field.
  6. Ad spend per order: ad spend from the platforms, divided by Shopify orders.

How do you run it on last month?

  1. Work out contribution before ads per order: net sales minus cost of goods, shipping and fees. The contribution margin calculator does the subtraction.
  2. Work out break-even: order value divided by contribution before ads. Use the same order value as the ratio you compare it with: net sales for MER, the platform's conversion value for ROAS. The break-even ROAS calculator does it.
  3. Compare your MER, total net sales divided by total ad spend, with break-even, and then each platform's ROAS.

Pass: MER clears break-even, and each platform's ROAS clears it too. Fail: MER is below break-even while a platform reports a ROAS above it, which means the platform credits orders it did not cause or that another platform also counts. Settle the gap with a holdout before you move budget (how). Holdouts are noisy too: in twenty-five retail field experiments, the median confidence interval on return on investment was over 100 percentage points wide (Lewis and Rao, Quarterly Journal of Economics, 2015, peer-reviewed), so size the test before you run it.

Sources, 30 September 2026: Consumer Heterogeneity and Paid Search Effectiveness: A Large Scale Field Experiment and its working paper PDF (Blake, Nosko and Tadelis, NBER Working Paper 20171, May 2014); Analytics data points (fields) reference (Shopify Help Center, 2026); About Target ROAS bidding (Google Ads Help, 2026); The Unfavorable Economics of Measuring the Returns to Advertising (Lewis and Rao, Quarterly Journal of Economics, 2015).

Frequently asked questions

  • How do I calculate profit per order for my Shopify store?
    Take net sales per order, subtract cost of goods, shipping cost and payment fees, then subtract the ad spend per order. Shopify reports net sales, gross profit (with costs set up), shipping label costs and Shopify Payments fees; ad spend comes from the ad platforms.
  • What is break-even ROAS?
    Break-even ROAS is order value divided by what the order leaves before ads. Above it, the ads pay for themselves; below it, they lose money. Use the same order value in the ratio you compare it with.
  • Why does my platform ROAS look good while I am not making money?
    ROAS counts revenue the platform credits, not costs, refunds or what the ad caused. Compare your MER with break-even, and run a holdout on the channel whose ROAS clears break-even while MER does not.

Go deeper: Causal attribution, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

Free, in your browser: your file is not uploaded. The full read is €99, refundable within 30 days. Prices exclude VAT.
Or book a 30-min call.