Shopify ROI calculator

Shopify ROI calculator: a worked Shopify study

An example of Shopify ROI calculator. Replace the figures with your own before you decide.

Key takeaways

  • ROI divides profit by all the money that left. ROAS divides revenue by ad spend. They answer different questions.
  • In this example, ROI is about 31 percent and ROAS is about 2.81.
  • A small order count can make either figure look decided when it is not.

An example test

Say a kids backpack produced 100 orders, and say the ad spend was 60 percent of the contribution before ads. The order count and that 60 percent are examples, not a campaign you ran.

  • Revenue. $4800
  • Product and shipping. $1950
  • Ad spend. $1710
  • Profit. $1140
  • ROI. 31 percent, which is profit ÷ (product + shipping + ads)
  • ROAS. 2.81, which is revenue ÷ ad spend
  • Break-even ROAS on the unit. 1.68

The campaign clears the unit’s break-even and still only returns 31 percent on all the cash that left. Quoting the ROAS alone would make the test sound looser than it is. Type the real period into the ROI calculator after the orders exist. Do not type this example.

One candle, for the arithmetic only

This is one invented candle, used so the division can be watched while a single line changes. It is not a store, not a launch, and not evidence about candles as a category. Say the price you type is 36 dollars. Example product cost is 8 dollars. Example shipping you pay is 6 dollars. Example payment fee you choose to include is 1 dollar and 20 cents. Example ad spend attached to this one unit is 18 dollars. No other cost is included. If a real offer has more lines, this candle does not speak for it.

The scope is one unit. The 18 dollars is not a daily budget. It is the ad cost you are willing to attach to this single candle for the example. Revenue is the 36 dollar price, not a week of orders. Hold that scope until the end. Every change below edits one line and then restores it before the next edit.

Base profit and base all-spend

Revenue in the example is 36 dollars. Costs are 8 plus 6 plus 1.20 plus 18. Add the product and the shipping first: 8 plus 6 is 14. Add the fee: 14 plus 1.20 is 15.20. Add the ad spend: 15.20 plus 18 is 33.20. All spend is 33.20 dollars. Profit is 36 minus 33.20, which is 2.80 dollars. Something is left over, and the leftover is small next to the price.

Check the profit another way. Start at 36, subtract product to reach 28, subtract shipping to reach 22, subtract the fee to reach 20.80, subtract ads to reach 2.80. Same remainder. The calculator should show that remainder as profit if you typed these lines. If it shows a different dollar figure, a line was typed twice or missed.

The base percentage

ROI is profit divided by all spend. Here that is 2.80 divided by 33.20. The ratio is about 0.084, which is about 8.4 percent. Say 8.4 percent for this example and no further. It is not a benchmark, not a usual candle return, and not a reason to run ads at 18 dollars. It is the arithmetic of these five numbers.

Notice how far this sits from a revenue multiple on the ad line alone. Revenue 36 divided by ad spend 18 is 2. That multiple is not the ROI. The ROI denominator included product, shipping, and the fee, so the percentage is much smaller than a casual reading of '2 times' might suggest. If someone quotes only the multiple, they have not quoted this result.

Change only the shipping line

Now change one input. A revised example quote says shipping you pay is 9.50 dollars instead of 6. Leave price at 36, product at 8, fee at 1.20, and ads at 18. All spend becomes 8 plus 9.50 plus 1.20 plus 18, which is 36.70 dollars. Profit becomes 36 minus 36.70, which is a loss of 0.70 dollars. ROI is negative 0.70 divided by 36.70, about negative 1.9 percent.

The offer crossed from a thin gain to a thin loss because freight moved by 3.50 dollars. The ad line did not change. A plan argument that blames creative for this particular swing would be aimed at the wrong line. Restore shipping to 6 dollars before you touch anything else. The base profit returns to 2.80 dollars and all spend returns to 33.20.

Put shipping back, then change only ads

With shipping restored to 6 dollars, change only ad spend, from 18 dollars to 12 dollars. All spend is 8 plus 6 plus 1.20 plus 12, which is 27.20 dollars. Profit is 36 minus 27.20, which is 8.80 dollars. ROI is 8.80 divided by 27.20, about 32.4 percent. The percentage rose because the denominator fell and the numerator rose by the same 6 dollars you removed from ads.

That rise is still an example, not a forecast that you can buy the click for less. It shows sensitivity. Six dollars of ad cost, on a unit whose other costs already consumed most of a 36 dollar price, moves the percentage a lot. Restore the ad line to 18 dollars so the base is intact again.

A fee you almost left out

Return to the base: price 36, product 8, shipping 6, fee 1.20, ads 18, profit 2.80, all spend 33.20, ROI about 8.4 percent. Now see what happens if the fee had been omitted. Costs would have been 8 plus 6 plus 18, which is 32 dollars. Profit would have been 4 dollars. ROI would have been 4 divided by 32, which is 12.5 percent. The offer did not improve. The definition got thinner.

The 1.20 dollar fee is small next to the 18 dollar ad line, and it still moved the percentage from about 8.4 percent to 12.5 percent when it was dropped. On a thin unit, small omissions show up. That is why the base example includes the fee on purpose. When you repeat this kind of sheet on a real offer, a missing fee should be written as missing, not silently dropped.

The note that would sit with this candle

The note for the base example would list the five figures, the one-unit scope, the words 'invented inputs,' and the result of about 8.4 percent. It would also list the two sensitivities you already ran: shipping at 9.50 dollars flips the example to a loss of 0.70 dollars, and ad spend at 12 dollars lifts profit to 8.80 dollars. A reader of the note can rebuild every figure without asking you.

The note would not say the candle 'works' at 8.4 percent. It would not recommend a bid. It would not claim a supplier exists at 8 dollars. It is a record of a division. If you later receive a real invoice, you start a new note. You do not edit this candle into a pretend history.

What this candle must not be used for

Do not carry 8.4 percent into a media plan as a goal. Do not carry 18 dollars into an ad account as a cost cap. Do not say that candles lose money when shipping is 9.50 dollars. This candle loses money in the example when that one line is changed, and only inside this example. A different price or a different product cost would tell a different story.

Do not present the path from 6 dollars of shipping to 9.50, or from 18 dollars of ads to 12, as something that happened in a shop. Nothing happened. You changed a typed line to see the percentage move. That is the entire use of the candle. For a dollar view of a different invented unit, the profit page is /profit-calculator/. For a revenue multiple, the page is /roas-calculator/.

Rebuild the base one last time

Close the example by adding the base costs in a different order, so a transcription error has a second chance to show itself. Ad spend 18, fee 1.20, shipping 6, product 8. 18 plus 1.20 is 19.20. 19.20 plus 6 is 25.20. 25.20 plus 8 is 33.20. Revenue 36 minus 33.20 is still 2.80. 2.80 divided by 33.20 is still about 8.4 percent. If you copied these numbers into the calculator, the screen should agree.

Leave the example there. Do not add a return rate, a subscription, or a second product. Those would be new inventions, and this sheet promised one candle and one line at a time. A later sheet can ask a harder question. This one only had to show how the percentage is built and how a single honest edit moves it.

Shopify questions

Did a store run this test?

No. The 100 orders and the ad spend are examples, so you can see ROI and ROAS on the same product. Use a real week from your store.

When is ROI the wrong report?

Before the test, when spend and revenue are still guesses. Use the unit’s break-even ROAS to decide whether the test is allowed. Use ROI to read the test you already ran.