Checkout-Initiation Popups on Shopify — The Last Offer Before Payment

How to run a checkout-initiation upsell popup on Shopify without delaying checkout or losing buyers. Timing, offer choice, skip design and caps.

Editorial illustration for Checkout-Initiation Popups on Shopify — The Last Offer Before Payment

Key takeaways

  • A checkout-initiation offer has to be skippable in one click and fast. If it adds a second of delay, you are taxing the people who were going to pay.
  • The offer must be cart-aware. A generic "10% off" at checkout start is a coupon interstitial, not an upsell.
  • Never block the checkout button behind a timer or a required choice. That is a dark pattern and a conversion leak.
  • If they already declined the same SKU in the cart or on add-to-cart, do not ask again here.
  • Prefetch the offer when the cart opens and fail open. If the offer is not ready at click time, send the shopper straight to checkout.

A checkout-initiation popup is an upsell that appears the moment a shopper clicks the checkout button, before they are sent to Shopify checkout. It works only when it is instant, offers one cart-aware product, and can be skipped in a single click. Anything slower or pushier taxes the shoppers who were about to pay.

The click on checkout is the most expensive click on the site. Intercepting it is allowed only if you are almost invisible: one relevant product, one add, one obvious skip, no delay. If any of those fail, you are standing in front of the till.

What is a checkout-initiation popup?

It is the last of the three classic upsell popup triggers. Add-to-cart popups fire when an item enters the basket. Exit-intent popups fire when the shopper looks like they are leaving. A checkout-initiation popup fires on the storefront when the shopper clicks "Checkout" in the cart drawer or on the cart page, shows a single offer, and then forwards them to the normal Shopify checkout URL.

It lives entirely on your storefront. Shopify checkout itself is closed to this kind of injection, and the old checkout.liquid route is not an option in 2026. The intercept is a storefront event, nothing more.

Why this trigger is different from the other two

At add-to-cart, the shopper is in browsing mode. At exit-intent, they are in leaving mode. At checkout initiation, they are in paying mode. That changes the rules:

  • Their patience is at its lowest. A one-second spinner here costs more than a five-second one on a collection page.
  • Their intent is at its highest. The people who see this popup were going to buy, so any lost checkout is a real order gone.
  • They already know what they want. The offer must fit the basket, not open a new conversation.

This is why the checkout-initiation trigger tends to produce a modest attach rate from people who were already sold, rather than a dramatic lift. That is fine. Quiet, extra attach at zero cost to conversion is the whole point.

Instant or not at all

When checkout is clicked, the overlay must already know what to show. Fetching an offer at click time is how you introduce a spinner between "I want to pay" and paying.

  1. Prefetch on cart open. The moment the drawer or cart page renders, request the offer for the current basket.
  2. Cache it for the session. If the cart changes, refresh quietly in the background.
  3. Fail open. If the offer is missing, slow or errored, do nothing and go to checkout.
  4. Paint synchronously on click. The overlay should appear in the same frame as the click, with the image already decoded.

What to offer at checkout initiation

Something small, complementary, and easy to evaluate without a product page: a matching accessory, protection, a consumable refill. Not a new hero product. Not a subscription pitch that needs a paragraph. The one-offer rule applies harder here than anywhere else.

Two rules on price:

  • If the cart is already above your free-shipping threshold, do not offer more cheap items "to help". They are trying to leave.
  • Do not lead with a discount. A shopper who learns that clicking checkout unlocks a coupon will click checkout to unlock a coupon.

A quick worked example: a shopper has a $48 cast-iron pan in the cart and clicks checkout. A $9 chainmail scrubber for that pan is a reasonable offer. A $60 Dutch oven is not, and a "10% off your order" banner is a coupon interstitial with a product photo.

Skip must be the easy action

A clear "No thanks, continue to checkout" button, not a tiny X, not a five-second lock, not a second overlay after the first. The people who skip were going to pay. Let them.

Design the skip as a full-width secondary button directly under the add button, with the same tap target size. On mobile, both buttons should be reachable by thumb. If the shopper has to hunt for the way out, you have built a hostage screen, and hostage screens show up as a drop in checkout initiation rate.

Do not repeat a no

If this SKU was already shown on add-to-cart or in the drawer and the shopper declined it, checkout initiation is not a new conversation. Frequency caps must span triggers, not just pages: one offer per session still applies here, and especially here. See popup frequency capping for the full rule set.

Reasonable behaviour:

SituationShow at checkout initiation?
No popup shown yet this sessionYes, one offer
Same SKU declined earlierNo
Different SKU declined earlier, new cart contentsMaybe, if the new offer fits the new basket
Offered SKU already in cartNever

Common mistakes

  • Timers and countdowns. A clock on a checkout intercept is a dark pattern and reads as one.
  • Required choices. "Add" and "No thanks" are the only two options. A radio group of three protection tiers is a form, not an offer.
  • Second-guessing the shopper. "Are you sure you don't want…" after a skip is a second popup. Do not.
  • Generic discounts. Covered above; they train the behaviour you least want.
  • Fetching at click. If you cannot prefetch, do not run this trigger.

How to measure a checkout-initiation popup

Track four numbers, split by whether the popup was shown:

  1. Checkout initiation rate (checkout clicks divided by carts with items).
  2. Checkout completion rate (paid orders divided by checkout clicks).
  3. Attach rate of the offered SKU.
  4. Revenue per session.

The first two are the guardrails. If either drops after you switch the trigger on, switch it off and fix whatever made it slow or pushy before trying again. If you are unsure whether the drop is noise, A/B test the popup against a holdout rather than guessing.

When not to use a checkout-initiation popup

  • Your cart already runs an in-cart upsell and an add-to-cart popup. A third ask is too many.
  • Your offer engine cannot prefetch or cannot fail open.
  • Your average basket is complex (many line items, configured products, B2B). The shopper has done enough work; let them pay.
  • Your traffic is too low to notice if checkout initiation drops. You will not be able to see the damage.

Done well, this is a quiet extra few points of attach rate from people who were already sold. Done poorly, it is the reason your checkout initiation rate dropped last Tuesday and nobody knew why.

Frequently asked questions

Will a checkout-initiation popup slow down checkout?

It will if the popup waits on a slow network request. Prefetch the offer when the cart opens so the checkout click can paint immediately. If you cannot be instant, do not intercept checkout at all.

Is a checkout popup allowed on Shopify?

You cannot inject into Shopify checkout itself. You can intercept the click that starts checkout, on your storefront, then send the shopper on. Do not try to modify checkout.liquid in 2026; it is not the path.

Should I offer a discount to stop shoppers leaving at checkout?

Not at this moment. They have clicked pay. A sudden discount teaches them to click checkout to unlock a deal, and you will pay that margin on every future order. Offer a complementary SKU or nothing.

What if the shopper already has a discount code?

It is still fine to offer a product. Do not stack a second code. The overlay is for a SKU, not for a coupon war, and a second code at this moment makes the first one look like a mistake.

What is the difference between a checkout-initiation popup and an exit-intent popup?

A checkout-initiation popup fires when the shopper clicks the checkout button; they are leaving to pay. An exit-intent popup fires when the cursor heads for the tab bar; they are leaving without paying. The first sells an add-on, the second tries to rescue the sale.

What should a checkout-initiation popup offer?

Something small, complementary and easy to judge without a product page. A matching accessory, a consumable refill or protection for the item in the cart. Not a new hero product and not a subscription pitch.

Ninety9 Team

We build 5 conversion apps used by Shopify merchants in Bulgaria and beyond. Everything we write here comes out of what we see in real store data.

Keep reading

Related articles

Editorial illustration for The One-Offer Popup Rule for Shopify Upsells
Bundles & Upsells Monet

The One-Offer Popup Rule for Shopify Upsells

The one-offer popup rule for Shopify: sell a single product, pick it from the cart, and skip the second item that kills the add.

5 min read