Checkout is the most locked-down surface on Shopify, and for good reason — it is where your money is. That means "offer add-ons at checkout" has a different answer depending on your plan and which surface you actually mean. Here are the four surfaces, ranked by how much freedom you get.
| Surface | Freedom | Shopper intent | Typical use |
|---|---|---|---|
| Product page | Full — your theme | Evaluating | Add-ons that change the product: engraving, warranty, wrap |
| Cart / cart drawer | Full — your theme | Decided to buy | The practical home for paid extras and cart-level offers |
| Checkout | Restricted — extension-based, varies by plan | Highest; also most fragile | Low-friction one-tap extras only |
| Post-purchase / thank-you | Restricted — extension-based | Already paid | Extras that do not risk the order you just captured |
Shopify's checkout is customised through checkout UI extensions rather than theme code, and what you can place there — along with branding control — depends on your Shopify plan. Treat any checkout plan as plan-dependent and verify against your own admin before promising it to stakeholders.
Checkout feels like the obvious place: the shopper has committed, so surely that is when to offer more. In practice three things work against it.
It is the most expensive page to disturb. Every element you add to checkout competes with the completion of a payment you have already earned. A cart-page add-on that fails to convert costs you nothing; a checkout add-on that distracts costs you the order.
Shoppers are in payment mode, not shopping mode. Card details are out, address is filled, the task is nearly done. Re-opening a product decision at that moment is a context switch, and context switches at checkout show up as abandonment.
You have the least control. Checkout extensions constrain layout and interaction by design, so the add-on cannot look like your product page or carry much explanation. Anything needing a sentence of context belongs earlier.
The cart has none of those problems and nearly all of the intent. That is why NUO AI's add-ons and cart offers target the product page and cart, where the widget can inherit your theme's typography and buttons and explain the extra properly.
Whichever surface you use, measure attach rate against the checkout completion rate for the same period. An add-on that lifts attach rate by two points while completion drops one point is losing money, and only looking at both numbers together reveals it.
Checkout is customised through checkout UI extensions rather than theme code, and what you can place there depends on your Shopify plan. It is possible for simple one-tap extras, but it is the most restricted surface on the platform — verify what your plan allows in your own admin before planning around it.
The cart, for most stores. It carries nearly the same purchase intent, gives you full control of layout and copy inside your own theme, and a failed add-on there does not risk a payment that is already in progress.
An offer shown after payment is captured, usually on the thank-you page or an immediate post-purchase step. Because the original order is already secured, a declined offer costs nothing — which makes it the safest place to try a second unit or a refill.
Checkout customisation capabilities and branding control differ by plan, with the broadest control on the higher plans. Check your current plan's capabilities in the Shopify admin rather than relying on older guidance, since the platform's checkout model has changed significantly.
It can. Anything that reopens a product decision while the shopper is entering payment details risks abandonment, so measure attach rate and checkout completion together — a rise in one with a fall in the other is usually a net loss.
On the product page and in the cart or cart drawer, where the widget can inherit your theme's styling and explain the extra properly, and where a declined offer does not jeopardise an in-progress payment.