ROAS, ROI, and profit: what each one tells a Shopify store owner

By the AdZoom team · Published

ROAS divides the revenue your ads brought in by what you spent on the ads. ROI divides the profit by what you spent on the ads. Profit is the money left once every cost is paid.

ROAS and ROI are ratios. Profit is an amount in dollars. They can rank the same campaigns in opposite orders, because ROAS never sees what the products cost you, what you paid to ship them, or the tax inside the order total.

The three formulas

ROAS = revenue ÷ ad spend. How to calculate ROAS has more examples of this one.

Profit = revenue − cost of goods − shipping − tax − ad spend.

ROI = profit ÷ ad spend, written as a percentage. It is the return on the money you put into ads.

Revenue is what customers paid for the orders, with the tax still in it. Shipping is what you paid to send the orders, not what you charged for it.

Which costs go under ROI

ROI has no single definition, and the versions differ in the denominator. This article divides by ad spend, because the ad budget is the money you choose to put in. Cost of goods, shipping, and tax follow from the orders, and the profit on top of the fraction already has them taken out. This version is also called ROMI, return on marketing investment.

Another convention divides the profit by every cost of the orders, which is ad spend plus cost of goods, shipping, and tax. On the pour-over campaign in the next section, with its profit of $0, that is $0 ÷ ($1,000 + $1,400 + $350 + $250) = 0%. The two versions agree only when profit is zero. The rest of this article uses profit ÷ ad spend.

Ask what is in the denominator before you set someone else's ROI beside yours.

One campaign under all three measures

A Shopify store sells coffee beans and brewing gear. Last month its campaign for a pour-over kit had these numbers.

  • Ad spend: $1,000
  • Revenue from the campaign's orders: $3,000
  • Cost of goods: $1,400
  • Shipping: $350
  • Tax: $250
MeasureWorkingResult
ROAS$3,000 ÷ $1,0003.00
Profit$3,000 − $1,400 − $350 − $250 − $1,000$0
ROI$0 ÷ $1,0000%

One campaign, one month, three verdicts. ROAS says every ad dollar came back as three. Profit says nothing was left. ROI says the $1,000 put into ads returned no profit at all.

Three campaigns, ranked two ways

The same store ran two more campaigns that month, one for an electric grinder and one for its coffee beans. Each spent $1,000, so every difference below comes from the orders.

Last monthPour-over kitGrinderBeans
Ad spend$1,000$1,000$1,000
Revenue$3,000$4,000$2,400
Cost of goods$1,400$2,400$600
Shipping$350$520$216
Tax$250$320$192
ROAS3.004.002.40
Profit$0−⁠$240$392
ROI0%−⁠24%39.2%

The grinder campaign

  • ROAS: $4,000 ÷ $1,000 = 4.00
  • Profit: $4,000 − $2,400 − $520 − $320 − $1,000 = −⁠$240
  • ROI: −⁠$240 ÷ $1,000 = −⁠24%

The beans campaign

  • ROAS: $2,400 ÷ $1,000 = 2.40
  • Profit: $2,400 − $600 − $216 − $192 − $1,000 = $392
  • ROI: $392 ÷ $1,000 = 39.2%

The rankings

RankBy ROASBy profitBy ROI
1Grinder, 4.00Beans, $392Beans, 39.2%
2Pour-over kit, 3.00Pour-over kit, $0Pour-over kit, 0%
3Beans, 2.40Grinder, −⁠$240Grinder, −⁠24%

Sorted by ROAS, the grinder campaign gets more budget and the beans campaign gets cut. Sorted by profit, it is the other way round. ROI is profit per ad dollar, and each campaign spent the same, so it gives the same order as profit.

The grinder costs a lot to buy in and to ship. Its $4,000 of revenue leaves $760 once cost of goods, shipping, and tax are paid, which doesn't cover $1,000 of ads. The beans campaign's $2,400 leaves $1,392.

Why the order flips

Each campaign has its own break-even ROAS, set by the costs of what it sells. It is 1 ÷ margin after costs, where margin after costs is the share of revenue left after cost of goods, shipping, and tax. In dollars that is revenue ÷ (revenue − cost of goods − shipping − tax).

  • Pour-over kit: $3,000 ÷ $1,000 = 3.00. The campaign ran at 3.00, exactly at break-even.
  • Grinder: $4,000 ÷ $760 = 5.26. The campaign ran at 4.00, below break-even.
  • Beans: $2,400 ÷ $1,392 = 1.72. The campaign ran at 2.40, above break-even.

A ROAS means something only beside the break-even of the products behind it. Break-even ROAS has the formula and a way to find yours from Shopify's reports.

What each measure tells you

MeasureThe question it answersWhat it can't see
ROASHow much revenue did each ad dollar bring inEvery cost except the ads
ROIHow much profit did each ad dollar returnHow many dollars that is
ProfitHow much money is leftHow much had to go out to earn it

ROAS is quick, and it is fair between ads for the same product, where the costs behind each order are the same. Across products it misleads, as the grinder shows.

Profit is the one to sort by when you decide which campaign to cut and which to grow. It is also the only one of the three you can pay a bill with.

ROI is for comparing campaigns of different sizes, or for weighing ads against another use of the same money, such as more stock.

ROI and profit can disagree too

Suppose the beans campaign had spent $2,000 at the same rates. Revenue would be $4,800, cost of goods $1,200, shipping $432, and tax $384.

  • Profit: $4,800 − $1,200 − $432 − $384 − $2,000 = $784
  • ROI: $784 ÷ $2,000 = 39.2%

Profit doubled and ROI stayed where it was. ROI is a rate, so it puts a small campaign and a large one on the same scale. Profit is an amount, so it says what the campaign added to your bank balance. To run your own numbers for one order, use the Shopify profit calculator.

What people mean by true ROAS

True ROAS is a term people use, not a metric with an official definition. It names a ROAS that has been corrected in one of two ways, or in both.

On the store's real orders

The ROAS in Ads Manager or Google Ads rests on each platform's own count of the revenue it credits to its ads. The first correction swaps that for the revenue of the orders your Shopify store recorded and can tie to the campaign. Why ad platforms and Shopify report different sales explains the gap between the two.

AdZoom's ROAS column is this kind, the revenue of the Shopify orders matched to a Meta or Google Ads campaign divided by that campaign's ad spend. Beside it are Profit, after tax, cost of goods, shipping, and the ad spend, and ROMI, which is profit ÷ ad spend, the ROI of this article.

After costs

The second correction takes cost of goods, shipping, and tax out of the revenue before dividing by ad spend.

  • Pour-over kit: ($3,000 − $1,400 − $350 − $250) ÷ $1,000 = 1.00
  • Grinder: ($4,000 − $2,400 − $520 − $320) ÷ $1,000 = 0.76
  • Beans: ($2,400 − $600 − $216 − $192) ÷ $1,000 = 1.39

On this version, break-even is 1.00 for every campaign, whatever it sells. Subtract 1 and you have the ROI. For the grinder that is 0.76 − 1 = −⁠0.24, its −⁠24%.

Since the term has no fixed meaning, ask which correction was made before you rely on anyone's true ROAS.

See profit beside ROAS for every campaign.

AdZoom works out the profit of each Meta and Google Ads campaign from your Shopify orders, after cost of goods, shipping, tax, and the ad spend, and shows it next to the ROAS.

Coming soon to the Shopify App Store