One click after checkout, at exactly the price you promised.

After the buyer pays, Shopify's post-purchase page can add one offer to the order, charged to the saved payment in one click. Offer Suite picks the offer from your placements, signs its price to the cent, and books what it sold to the upsell's own offer, after its own costs.

Sell: put it in front of shoppersIncludes parts not in production yet

Placements choose the offer

Partly available

It runs on development stores until Shopify grants Offer Suite post-purchase access for live stores.

A placement puts one option of an ordinary offer on the store's post-purchase page, with a priority and rules. The page shows one offer: the first active placement, by priority, whose rules all hold for this purchase and that can be sold to this buyer. Up to three are tried.

The rules a placement can hold. Every rule given must hold; a placement with no rules follows every purchase
Lines boughtA variant or product in the purchase, at a minimum quantity, bought on a selling plan or once.
Order totalA minimum or maximum, in the shop currency.
DestinationThe countries the purchase ships to.
BuyerNew or returning, by Shopify's customer id against the workspace's earlier orders. A guest checkout is neither.
TrafficThe checkout's ad platform, UTM source, medium or campaign, campaign id or landing page, as tracking recorded them.
Already boughtOptionally, show nothing when the upsell would add a variant the buyer has just bought.
  • Your agent manages placements through the API and MCP: create_upsell_placement, list_upsell_placements, update_upsell_placement and archive_upsell_placement.
  • A placement is active, paused or archived, never deleted. Archiving takes it off the page at once; its views and accepts keep naming it.

Traffic rules read what the buyer's own browser recorded. They route, they are not secret: never use one to gate a price you would not give anyone.

The price is signed, not hoped for

Offer Suite's discount function and cart transform never run on lines added after the purchase. So the API prices the option with the same margin engine as everything else and signs the change Shopify applies: each line at its catalog price with one explicit discount, titled with the option's name, that brings it to exactly the option's price. The signature follows Shopify's own post-purchase protocol.

  • Checked twice before anyone sees it. When a placement is saved, and again before every page is shown, on the version served at that moment, the signed change must charge the option's promise to the cent.
  • Checked against Shopify. The page asks Shopify to calculate the change and shows the offer only when Shopify charges exactly the offer's cents. Anything else, and the buyer goes straight to the thank-you page.
  • One price per view. The page asks twice while it loads and gets the same view and the same cents both times; if the served version changed in between, it shows nothing rather than a second price.
  • In the buyer's currency. Prices are in the checkout's currency; an offer whose market currency is another is not shown, never converted.
Which options can be signed
One-time linesSigned, at any quantity when the line is at its catalog price.
A discounted lineSigned at one unit. Shopify does not document whether a fixed discount comes off each unit or the line, so a discounted line of more units is not shown.
Subscription linesNot signed yet.
Free shippingNot signed: the change cannot carry shipping, so an option that promises free shipping is not shown.
Above catalog priceNever signed.

You've paid for your order.

The option's title, as the discount is titled

The added line, one unit$15.00 $10.50
Signed discount
−$4.50
Subtotal
$10.50
Shipping
Free on this store
Taxes
$0.93
Total
$11.43
Shopify's post-purchase page on the dev store's second test checkout, 3 October 2026, redrawn from the capture with the product unnamed. The line costs the option's promise to the cent; this store charged no shipping for it

2 of 2

On two test checkouts on a dev store, the buyer accepted the post-purchase upsell and Shopify charged exactly the signed cents: $69.95 at catalog price, and $10.50 after a signed $4.50 discount. Each accept was recorded as applied to its order within 20 seconds.

Dev store, 3 October 2026

Booked to the offer that sold it

In production

An accepted upsell reaches the order as a Shopify order edit. When that edit arrives, the added line is matched to the signed accept and booked to the upsell's offer, option and version, with the order's own offer kept beside it. A signed accept that Shopify then refused is never counted: only an applied accept is a sale.

What economics report for the post-purchase stage
The upsell's offerViews, accepts Shopify applied, the take rate, and contribution per view and per accept, by the front-end offer it followed, in both cost views.
The front-end offerWhat upsells and other apps' edits added to its first orders afterwards, per option.
Its costsThe added line's own unit costs and its share of percent and payment costs. The sale's shipping charged and its per-order and per-parcel costs stay with the sale, which would have carried them anyway.
RefundsLand on the line Shopify refunded, so a returned upsell comes off the upsell's offer, not the sale it followed.

Upsells another app sells are costed too: once paid, any line an order edit adds is a costed line of the order, counted toward the order's offer. The simulator adds what the page is expected to add to a first order, observed or as you assume it, kept apart from the per-order figures. Read it all on profit.

Tested on profit per view

Partly available

It runs on development stores until Shopify grants Offer Suite post-purchase access for live stores.

An offer on the post-purchase page can run an experiment like any other offer: each checkout is assigned an arm, and the report compares the arms on profit per view, the contribution of the accepts over every checkout shown that arm. An upsell that sells less often at a higher margin can earn more per buyer shown. See experiments.

Turning it on

The post-purchase extension ships inside the Offer Suite app. The merchant chooses Offer Suite under Settings, Checkout, Post-purchase page in the Shopify admin; Shopify gives that page to one app per store. Until a placement matches, the page shows nothing and the buyer goes straight to the thank-you page.

Shopify keeps post-purchase extensions in beta: they run without restriction on development stores, and a live store needs access that the app requests from Shopify. Offer Suite does not have that access yet, so today it runs on development stores only.

What it does not do yet

  • Live stores wait on Shopify's post-purchase access; the upsell runs on development stores until it is granted. Partly available
  • Shopify shows the post-purchase page only for some payments: cards and Shop Pay. Wallets such as Apple Pay, Google Pay and PayPal, buy-now-pay-later, gift cards and gateways that keep the card's security code skip it.
  • One offer per page: no second offer after a decline yet.
  • No thank-you page or order status page offers.
  • Subscription lines, options that promise free shipping and discounted lines of more than one unit are not shown.
  • Shipping on the added line follows the store's rates; an option cannot promise free shipping after the purchase.
  • Placements and post-purchase figures are in the API and MCP only: the dashboard and App Home do not show them yet.

Questions

Can I run it next to AfterSell or Zipify OCU?

Not on the same page: Shopify gives the post-purchase page to one app per store. Whichever app holds it, Offer Suite still stores each line that app adds as a costed line of the order, so the upsell's revenue and cost are in the order's profit.

What does the buyer pay?

The option's price, plus tax and any shipping Shopify charges for the added line under the store's rates. No discount function runs after the purchase, so the discount Offer Suite signs alone sets the price, and the page shows the offer only when Shopify's own calculation charges exactly those cents for the line.

Does a decline cost anything?

No. Declining, and any failure while the page loads, takes the buyer to the thank-you page with the order as placed.