Quick answer: post-purchase upsell profit = what the card was charged for the add-on − COGS − payment fee on that charge − extra pick-and-pack − extra shipping − expected returns − a share of the app bill. Multiply by accepts for the month. Divide by offer views to get profit per view. Most online calculators stop at revenue. This page does the rest, with a worked example you can copy.
Do not stop at “we made $3,000 extra.” Subtract what it cost to make, cut, charge, pack, ship, refund, and run the app. Then divide remaining profit by how many people saw the offer. That profit-per-view number is how you pick a winner in A/B tests and how you decide 10–20% vs save-$ vs none.
We have two public calculators. Neither is a profit engine. Say that out loud before you screenshot a number for a partner meeting.
The upsell revenue calculator does: monthly orders × take rate × offer price. That is extra sales if every accept pays list (or the price you typed). It does not subtract COGS, discounts, fees, or returns.
The AOV calculator does average order value. Useful as a baseline. Silent on whether the extra line was profitable. All free tools: /tools/.
Copy the formula into a sheet. Use your COGS from the product, your fee from Settings → Payments, and your real take rate from the app or from tagged orders. Invented take rates are how people lie to themselves.
Incremental profit is the extra cash that would not exist if the shopper had tapped no. Count only the add-on, not the original order.
Profit per accept = money the customer paid for the add-on − COGS − payment fees on that extra charge − extra pick-and-pack − extra shipping − expected return cost − app cost allocated to one accept.
Profit per view = (profit per accept × number of accepts) ÷ eligible offer views.
If your “accepted revenue” is already the discounted price the card was charged, do not subtract the discount again. If you start from list price, subtract the discount once. Pick one method and stick to it. Tracking the views and accepts: track post-purchase upsell revenue.
Skip a line and you will overstate the win. Here is what each one means.
A US store on a plan that pays 2.9% + $0.30 on the extra capture. Your rate may be lower. Confirm in admin.
| Line | Amount (USD) | How we got it |
|---|---|---|
| List price of add-on | $24.00 | Product price in Shopify |
| Discount (15%) | −$3.60 | Offer rule |
| Accepted revenue (card) | $20.40 | What the changeset charged |
| COGS | −$6.00 | Landed unit cost |
| Payment fee | −$0.89 | 2.9% × $20.40 = $0.59, plus $0.30 = $0.89 |
| Extra pick-and-pack | −$1.50 | Second pick, same box |
| Extra shipping | $0.00 | Fits original carton |
| Expected return | −$0.82 | 4% × ($20.40 refund + $0 assumed label on this SKU). Tune this. |
| App cost share | −$0.12 | $9.99 ÷ 80 accepts that month |
| Profit per accept | $11.07 | $20.40 − $6 − $0.89 − $1.50 − $0.82 − $0.12 |
The $0.30 fixed fee may already have been charged on the original checkout. Some stores only apply percentage to the upsell increment. Read one payout. If Shopify does not bill a second $0.30, drop it. The point is to use your processor’s rule, not this table’s.
If this offer is viewed 1,000 times and accepted 80 times, take rate is 8% of views. Monthly incremental profit ≈ 80 × $11.07 = $886. Profit per view ≈ $886 ÷ 1,000 = $0.89.
Now change only the discount to 0%. Suppose accepts fall to 55 and the card charges $24. Re-run the rows. If profit per view rises, full price won even though take rate fell. That is the whole argument against vanity AOV.
Shopify will not show the one-click page for many orders: wallets and installments (Apple Pay, Google Pay, Amazon Pay, Klarna, Affirm, Afterpay, Shop Pay Installments), COD and other non-card methods, gift-card payments, duties or multiple currencies, local delivery or pickup, subscriptions, orders under $0.50, and more. Regular Shop Pay with a saved card does see it. Note this works on every Shopify plan, so plan tier is not a filter. Documented in Shopify product-offer limitations.
Eligible checkouts can be much smaller than total orders. Profit per order in the store will look weaker than profit per view. Both are useful. Do not compare your take rate to a blog that used all orders as the denominator. First-time vs returning mix also changes COGS and return rate — split those offers.
You will see numbers online: “3–8% is typical,” “average 4.7%,” “top stores hit 20%+.” Most come from app vendors and most do not say what the denominator was.
Accepts ÷ views gives a higher number than accepts ÷ all orders, because wallet, BNPL, COD, and gift-card orders never see the page. A store with 40% Apple Pay traffic can have a 10% view take rate and a 6% order take rate on the same day.
In our experience a single-digit view take rate is normal for a relevant, modestly priced add-on. A take rate near zero usually means the product is wrong, not the price. A take rate that jumps after a deep discount is not a win until profit per view goes up too.
So before you compare yourself to a benchmark, write down which denominator you used. Then use the same one every month.
App ROI pages love “18× return.” The honest version is simple: how many accepts cover the subscription, and how many views does that take?
Break-even accepts per month = monthly app cost ÷ profit per accept (before the app-cost line).
Break-even views = break-even accepts ÷ take rate (as a decimal).
Using the worked example: profit per accept before app cost is $11.19 ($20.40 − $6 − $0.89 − $1.50 − $0.82). At $9.99/mo, break-even is 0.9 accepts, so one accept a month covers the bill. At the $49.99 tier it is about 4.5 accepts, or roughly 56 views at an 8% take rate.
Break-even is easy to hit. That is not the point. The point is the next question: does a 15% discount earn more than it gives away? Only profit per view answers that.
Eleven cells. One row per offer SKU. Fill the inputs from your admin, not from a blog.
| Cell | Input or formula | Where it comes from |
|---|---|---|
| A | Price charged for add-on | Order line after discount |
| B | COGS per unit | Product cost field or 3PL invoice |
| C | Card fee = A × rate + fixed fee (if billed) | Settings → Payments; check one payout |
| D | Extra pick-and-pack | Warehouse estimate |
| E | Extra shipping | $0 if same box and rate |
| F | Return cost = return rate × (A + label + restock) | Last 90 days of returns on this SKU |
| G | Views (eligible checkouts shown the offer) | Upsell app analytics |
| H | Accepts | Upsell app analytics or tagged orders |
| I | App cost share = monthly app bill ÷ H | Your plan tier |
| J | Profit per accept = A − B − C − D − E − F − I | Formula |
| K | Profit per view = J × H ÷ G | Formula — this is the winner metric |
These are the ways the spreadsheet lies.
Our app. One-click post-purchase, thank-you blocks, drawer, gifts, BOGO, volume discounts. From $9.99/mo, 14-day trial, Built for Shopify. 5.0 from 36 reviews — small sample. Put the $9.99 (or your tier) in the app-cost row. Do not pretend the calculator pages subtract it for you.
Plans also listed on postpurchaseupsellapp.com. App roundup: best post-purchase apps.
Incremental profit per accept equals what the buyer paid for the add-on, minus COGS, minus the discount already in that price, minus payment fees on the extra charge, minus extra pick-and-pack, minus extra shipping, minus expected returns, minus a share of app cost. Then multiply by accepts, or divide by offer views for profit per view.
No. Revenue is the extra line on the order. Profit is what remains after cost of goods, fees, labor, shipping, returns, and software. A $25 add-on at 12% take can look huge in a revenue calculator and still lose money if COGS and discounts are high.
Use the credit card rate you actually pay. Shopify Payments rates vary by plan and country. Look them up in Settings → Payments and on Shopify’s pricing page. For a US Basic worked example this article uses 2.9% + $0.30 on the extra amount — replace that with your number.
Only a share. If the app also runs your cart drawer and gifts, do not dump $9.99 onto one SKU. Divide monthly app cost by monthly accepted post-purchase offers, or by all orders the app touches. Be consistent month to month.
No. The upsell revenue calculator estimates extra sales (orders × take rate × price). The AOV calculator estimates average order value. Neither subtracts COGS, fees, or returns. Use this page’s worksheet for profit.
Total incremental profit from the offer, divided by how many eligible checkouts saw it. It catches tests that raise take rate but destroy margin. Use it as the winner metric in A/B tests, not AOV alone.
It depends on the denominator. Accepts divided by offer views runs higher than accepts divided by all orders, because wallet, BNPL, COD, and gift-card checkouts never see the page. In our experience a single-digit view take rate is normal for a relevant add-on. Judge the offer on profit per view, not on take rate alone.
Break-even accepts = monthly app cost ÷ profit per accept before the app-cost line. Break-even views = break-even accepts ÷ take rate. On a $9.99 plan with about $11 profit per accept, one accept a month covers the bill. ROI is easy; the harder question is whether your discount level earns more than it gives away.
Copy the rows. Use your fees. Then decide the discount and the pair with numbers, not with a round “20% off.”