How much did upsell earn?
The money question — and the one where the obvious reading of the numbers is wrong. Three tools return revenue, they do not mean the same thing, and none of them can be added to another.
How much extra revenue did my upsell offers make last month?
Start here: the shop-wide roll-up
get_offer_summary with the period.
get_offer_summary start: 2026-07-01 end: 2026-07-31Returns, for that range: upsold value, upsold orders, offer views, total orders, success rate, AOV. These are the same figures as the Analytics dashboard in the app.
successRate is not a conversion rate. totalOrders is every order the shop took in the
period — not the orders that saw an offer — and the success rate is upsold orders over that
total. It is a share of all orders. Do not recompute it against offerViews, and do not call it
conversion.
For a rate measured against views, use get_shop_lifetime_stats (all-time), or a single offer's
acceptance rate from get_top_offers.
Then: which placement earned it
get_offer_stats, same period.
get_offer_stats start: 2026-07-01 end: 2026-07-31One row per placement: impressions, revenue, claims.
Never add the rows into a shop total. They are separate measurements that do not share a
denominator. Post-purchase counts views and claims on its first upsell only — matching
Analytics — while its revenue spans every slot. Summing those columns produces a number that
means nothing. The shop total is what get_offer_summary already returned.
All-time is a different question
get_shop_lifetime_stats — no arguments. Revenue, offer views, upsold orders, conversion rate,
for the life of the shop. Matches the Statistics card on Home.
These are all-time, not a period. Never subtract a dated result from them to get "everything before last month", and never present them as "this month". They answer a different question and the two cannot be mixed.
Which tool answers which question
| The question | Tool | Scope |
|---|---|---|
| What did we make last month? | get_offer_summary | Shop-wide, dated |
| Which placement made it? | get_offer_stats | Per placement, dated |
| Which offer made it? | get_top_offers | Per offer, dated |
| What have we made ever? | get_shop_lifetime_stats | Shop-wide, all-time |
About the dates
- Give no dates and you get the last 30 days, not "everything".
- A range cannot exceed 90 days. A longer one is rejected — for a full year, ask across
quarters, or use
get_shop_lifetime_statsif all-time is what you actually meant. endis inclusive: to cover all of 14 April,endis2026-04-14.
A worked answer
July 2026 (
get_offer_summary): $12,480 upsold across 214 upsold orders, from 3,910 offer views. The shop took 5,602 orders in total, so the 3.8% success rate is upsold orders as a share of all orders — not a view-to-claim conversion.By placement (
get_offer_stats): Post-purchase upsell $9,210, Thank you page upsell $2,180, Order status page upsell $1,340. These are separate measurements — they come to $12,730, which is not the $12,480 above. The shop total is the roll-up, not the sum of the rows.Not checked: which individual offers drove it — that is
get_top_offers.