Post-purchase upsells are one of the easiest AOV wins on Shopify, and one of the easiest to over-credit. The offer appears after the customer pays, a one-click accept adds an item, and the upsell app’s dashboard reports a tidy revenue figure. The question I care about is different: how much revenue does the funnel add that would not have happened anyway, and which ad channel is quietly collecting credit for it?
How Shopify records an upsell
Per Shopify’s developer docs, the post-purchase page sits after the order is confirmed and before the thank you page. Accepted offers modify the original order, and a customer can accept up to three offers per checkout. Shopify holds fulfillment while the flow is open, lifting the hold an hour after checkout if the customer leaves. Offers do not appear on orders with duties and multiple currencies, or on local delivery orders.
Some apps give you a choice. Aftersell lets you merge the upsell into the original order or create a separate order. That choice changes your reporting. Merged upsells raise AOV and inflate the revenue credited to whatever channel won the first purchase. Separate orders inflate order count and can make a returning-customer rate look healthier than it is.
Where to measure it
| Source | What it tells you | Watch out for |
|---|---|---|
| Upsell app dashboard (Aftersell, UpsellPlus) | Offers shown, accept rate, upsell revenue | Reports gross upsell revenue, not incremental |
| Shopify order data | Final order totals and line items | Upsell lines blend into the order unless tagged |
| Attribution tool, such as ThoughtMetric (sponsor) | Which channel the upsold order is credited to | Upsell revenue raises that channel’s ROAS |
| GA4 | Purchase events and revenue by source | Check whether the purchase event includes the upsell amount |
A four-step method
First, make upsell revenue identifiable. Check what your app writes to the order, such as a tag, a note or a line-item property, and build a Shopify report that filters on it. If the app writes nothing, ask support before you rely on its dashboard alone.
Second, measure incrementality with a holdout. Turn the funnel off for alternating weeks over a month, or for a share of traffic if your app supports split tests, and compare revenue per order and orders per visitor. The difference is the funnel’s real contribution. In my experience it is usually positive and smaller than the dashboard says, because some accepted offers replace items the customer would have bought in their next order.
Third, read channel ROAS with and without upsell revenue. If one channel’s ROAS drops sharply once upsells are removed, it is being propped up by the funnel, not by the quality of its buyers. That matters when you are deciding where to add budget.
Fourth, track refunds on upsold items separately. Impulse adds after checkout can come back at a higher rate than the core product, and a high refund rate wipes out the AOV gain.
Checking your attribution tool
Place a test order, accept an upsell, and compare the final Shopify order total with the revenue your tools report. ThoughtMetric, an e-commerce attribution tool for Shopify, Magento, WooCommerce, BigCommerce and custom stores, connects to back-end order data, the same record an accepted upsell is written to. (Disclosure: ThoughtMetric sponsors this site.) Run the same test in any tool you use, including GA4, since a purchase event that fires before the offer is accepted can miss the upsell. ThoughtMetric pricing starts at $99 a month based on pageviews. Related reading: how to measure product performance and checkout extensibility and attribution tracking.
FAQs
Does a post-purchase upsell create a new order in Shopify?
Through Shopify’s post-purchase page, an accepted offer is added to the original order. Some apps, such as Aftersell, also offer a setting that creates a separate order instead.
How many post-purchase offers can a customer accept?
Shopify’s docs set a maximum of three accepted post-purchase offers per checkout.
Why don’t upsell offers show on some orders?
Shopify does not surface post-purchase offers on orders with duties and multiple currencies or on local delivery orders, and other sales channels do not render the page.
Should upsell revenue count toward ad ROAS?
Report it both ways. Including it shows the full value of an order, while excluding it shows what the ad itself bought. Budget decisions are safer on the version without upsells.
Is the upsell app’s revenue number accurate?
It is usually accurate as gross revenue from accepted offers. It is not a measure of incremental revenue, which needs a holdout to estimate.
The short checklist
- Decide whether upsells merge into the original order or create a new one, and document it.
- Make upsell revenue filterable in Shopify with a tag or line-item property.
- Run an on and off holdout for a month to estimate incremental revenue.
- Compare channel ROAS with and without upsell revenue before moving budget.
- Test-order your attribution tool, such as ThoughtMetric (our sponsor), and GA4 to confirm they report the final total.
Leave a Reply