Blog · · 6 min
Where to place an upsell on a product page
Below the add-to-cart, never above it. One complement, never a carousel. Priced well under the item in the cart. Never a step the customer must clear to continue. And in the EU, never pre-ticked — Article 22 of the Consumer Rights Directive makes an inferred yes refundable, which several upsell apps still ship as their default.
The placement rules, first, because they are short and they are the answer.
Below the add-to-cart button, never above it. Anything between the customer and the button they came to press is friction charged against the product they already chose.
One complement, not a carousel. A single named item with a price and a reason. A grid of six recommendations is a new browsing decision at the moment you wanted a confirmation.
Priced well below the item in the cart. A complement at a fraction of the main item's price reads as an addition. A complement at a similar price reads as a second purchase and reopens the whole decision.
Never a gate. Do not interrupt the path with a screen that must be accepted or declined before checkout continues. This is the most expensive form the pattern can take, and the reasoning does not need a study behind it: the customer has already decided to buy, and you have replaced the button they were reaching for with a question. Cart interstitials are a long-standing subject in ecommerce usability research, Baymard's included; if you want a citation rather than an argument, go and read the source rather than trusting a summary of it.
Never pre-ticked, and in Europe this is law. Article 22 of Directive 2011/83/EU requires the trader to seek the consumer's express consent to any extra payment before the consumer is bound. It goes on to say that where the trader has not obtained express consent but inferred it by using default options which the consumer must reject in order to avoid the additional payment, the consumer is entitled to reimbursement of that payment. A pre-checked upsell box is therefore not a growth tactic in the EU — it is a charge the customer can claim back.
That last one matters more than it looks, because several commercial upsell apps ship a pre-checked box as their factory default. An agent installing one on a European merchant's store without changing that setting has created a liability while trying to raise the basket.
The three positions, and what each one is for
On the product page, below the button. Best for a true accessory — the case, the refill, the applicator. It works because the customer is still in the mental frame of configuring one purchase. Keep it to one line and one price, and let the main button stay the loudest thing on screen.
In the cart, as an order bump. A single line item with an unchecked box, above the totals and below the cart contents. This is the cheapest position to build and the least intrusive, because the customer is already reviewing a list and one more line is not a new context. The box starts unchecked. See above.
After the purchase, on the confirmation page. The strongest position available, for one structural reason: the customer has already paid, the risk decision is behind them, and accepting does not require re-entering payment details if your processor supports a one-click follow-on charge. It also has zero downside — a declined post-purchase offer cannot cost you the original order, which is not true of either other position.
If you build only one, build this one.
Rules for the offer itself
Name the item, do not describe a category. "Add the travel case, 14 euros" is an offer. "You may also like" is a shelf.
State the price as a total, not a discount. If there is a discount, show what they pay and what they save in currency. A percentage alone is arithmetic homework.
One reason, seven words. Why this thing with that thing. "Keeps the bottle upright in a bag." Not marketing copy — a fact about the object.
Decline must be as easy as accept. A visible, plainly worded "No thanks" of the same size. A refusal hidden as grey text under a large accept button is a dark pattern, and in the EU the unfair commercial practices rules reach it.
No countdown, unless the deadline is real and enforced. A timer that resets on reload is a fabricated urgency claim. Same category of problem as an invented review.
What the search results give you instead
Search this question and you mostly get app listings. Shopify's app store, the vendor documentation for one upsell app or another, a forum thread. Five of the six top results we measured on 24 August 2026 were vendors documenting their own button. They answer with what — they do not answer where, because the answer to where is the same regardless of which app you buy.
Worth saying about the numbers those pages carry: the conversion lifts quoted in upsell app marketing are self-reported by the vendor, unaudited, and drawn from stores that are not yours. We do not repeat them here, and an agent passing them to a merchant as evidence is passing on a marketing claim. If you want to know what an upsell does to your basket, that is an experiment with a computable sample size — and below a certain traffic level, it is not measurable at all, which is a good reason to follow the rules above rather than test them.
What does not exist yet
We searched the official Model Context Protocol registry on 24 August 2026: upsell returns zero servers. conversion returns eight, all of them document format converters. Everything in the commerce category is a data connector that can read a store's orders — none of them will tell an agent where to put the offer. The full inventory is here.
So an agent asked to add an upsell today has no source for the rule and falls back on its priors, which is how the interstitial gate keeps getting rebuilt.
The checklist, in build order
- Post-purchase offer on the confirmation page. One item. Named. Priced. Declinable in one tap.
- Order bump in the cart, box unchecked, above the totals.
- Product-page complement below the add-to-cart, only if there is a genuine accessory.
- Nothing between the customer and checkout, ever.
- Every claim on the offer traceable to a fact.
And before any of that, check the basket mechanics that need no legal caveat at all — the quantity tier selector raises the average order without asking the customer for a second decision.
Disclosure — we are building uxgen, an MCP that hands these placement rules to a coding agent. It is not installable yet; the rules above are free either way.