How to Add Upsell Offers on Shopify Checkout Page
Adding upsell offers directly on the Shopify checkout page is one of the highest-converting sales tactics available to e-commerce merchants. Unlike post-purchase pages, the checkout captures customers at the peak of buying intent. This guide explains exactly how to implement upsells on your Shopify checkout, covering built-in tools, third-party apps, and custom code, so you can increase average order value (AOV) without slowing down your store.
Why Upsells on the Checkout Page Matter
The checkout page is the final hurdle before a sale. Customers have already entered their payment details and committed to purchasing. At this moment, their resistance to additional spending is at its lowest. A well-placed upsell—such as a "Complete your kit" bundle or a premium version of the product in their cart—capitalizes on this momentum.
The financial impact is substantial. Increasing your AOV by even 10% directly boosts revenue without requiring additional traffic or ad spend. Checkout upsells also improve customer experience when done right; suggesting a necessary accessory (like a charger for a new phone) feels helpful, not pushy. Crucially, these offers appear before the final "Pay now" click, meaning the customer checks out once with the upsell included, unlike post-purchase upsells which require a second transaction.
Understanding Shopify's Checkout Limitations
Before choosing a method, you must know what your plan allows. The standard Shopify checkout (on Basic, Shopify, and Advanced plans) is heavily locked down for security and PCI compliance. Merchants on these plans cannot directly edit the checkout's HTML, JavaScript, or CSS to insert custom upsell blocks.
Here is a quick breakdown of your options by plan:
| Plan | Built-in Checkout Upsells? | Custom Code Access? | Recommended Method |
|---|---|---|---|
| Basic / Shopify | No | No | Third-party app (Method 2) |
| Advanced | No | No | Third-party app (Method 2) |
| Shopify Plus | Yes (Shopify Functions) | Yes (Checkout Extensibility) | Built-in features (Method 1) or Custom App |
If you are on a non-Plus plan, attempting to paste custom code into the checkout will fail. You must use an app that leverages Shopify's approved "Checkout Extensibility" APIs, which allow apps to add offers without modifying the core checkout code. For Plus merchants, the process is more flexible but requires using Shopify's newer app architecture (not the legacy script editors, which are being deprecated).
Method 1: Use Shopify's Built-in Upsell Features (Shopify Plus)
If you are on Shopify Plus, you have access to Shopify Functions, which allow you to create native checkout upsells without a third-party app. This is the most stable and fastest method because the code runs on Shopify's infrastructure.
Step-by-step for Shopify Plus merchants:
- Install the "Checkout Blocks" or "Shopify Scripts" alternative: Go to the Shopify App Store and search for "Shopify Functions" apps like "Upsell Bundles" or "Checkout Extensions" from Shopify. These are official apps that provide a user-friendly interface to write and deploy Functions.
- Create a "Product Offer" Function: In the chosen app, create a new function. Choose the trigger: "Before checkout" or "On cart line items."
- Set the rules: Define the logic. For example, IF the cart contains a specific t-shirt THEN offer a discounted matching hat at 20% off. You set the discount value and the product variant.
- Deploy the function: The app will compile your code and push it to Shopify's edge network. You can then test it by creating a draft order or using a test checkout link.
The key advantage is that this upsell appears as a native checkout element, fully styled to match your theme, and it is immune to page-speed slowdowns caused by third-party scripts.
Method 2: Free and Low-Cost Upsell Apps
For the vast majority of merchants on standard plans, a third-party app is the only viable route. These apps work by injecting a customized offer block into the checkout via Shopify's approved extensibility points.
Top app categories to consider:
- CartHook Post-Purchase Upsell: While focused on post-purchase, it also has pre-payment offers. It is known for its robust A/B testing features.
- AfterSell (formerly ReConvert): A popular choice that offers a free tier for basic checkout upsells and paid tiers for advanced rules and post-purchase funnels.
- Zipify OneClickUpsell: A premium option favored by high-volume stores, specializing in one-click post-purchase offers, though it also handles checkout page add-ons.
How to set up a typical app (using AfterSell as an example workflow):
- Install and connect: From the Shopify App Store, install your chosen app. It will automatically integrate with your checkout process.
- Create a new Offer: In the app dashboard, click "Create Offer" and select "Checkout Page" as the placement.
- Set targeting rules: Choose "Cart contains" and specify the product SKU or collection. Then, select the product you want to upsell.
- Configure the offer style: Most apps let you display a checkbox ("Add protection plan for $2.99?") or a product thumbnail with an "Add" button.
- Set the discount: Many apps allow you to offer a dynamic discount (e.g., "Add this item for 15% off") to increase conversion.
- Publish and test: Place a test order to ensure the offer appears correctly and the price updates in the order summary before the final payment.
Important: Always test the app's impact on your site speed. A heavy app can slow down the checkout, hurting conversions more than the upsell helps. Check current pricing on the App Store listing before committing, as most offer a free trial or a limited free plan.
Method 3: Manual Upsells with Custom Code (Advanced)
This method is only for Shopify Plus merchants using Checkout Extensibility (the new system). You will build a custom app using Shopify CLI. This is not for beginners; it requires knowledge of JavaScript, React, and Shopify's GraphQL API.
The core concept: You create a UI extension that renders inside the checkout. The extension uses a "product offer" function to determine if the offer should show.
High-level steps:
- Set up your development environment: Install Node.js and the Shopify CLI.
- Create a new app: Run
shopify app initand select "Checkout UI Extension." - Write the extension code: Use React components to fetch the product data, render the offer, and handle the "Add to cart" action via the
useApplyCartChangehook. - Deploy and register: Deploy the extension to your store's theme app extension and publish it.
This gives you 100% control over the design and logic. However, the maintenance burden is yours. You must update your app whenever Shopify changes its API. Unless you have a dedicated developer, a paid app (Method 2) is almost always more cost-effective.
Best Practices for Checkout Upsells
To avoid annoying customers and tanking your conversion rate, follow these rules:
- Keep it to ONE offer: Do not show a list of five products. Choose your single best complementary item or a high-margin accessory.
- Use a checkbox for "Add-ons": For things like gift wrapping or warranty, a pre-ticked checkbox labeled "Add order protection for $2" is less intrusive than a full product card.
- Make the discount clear: A simple "Add for $X (Save Y%)" is more compelling than "Add to order."
- Offer contextually relevant items: If they are buying a camera, upsell a memory card. If they are buying a dress, upsell a belt. Random suggestions fail.
- Ensure mobile optimization: Over 80% of Shopify traffic is mobile. Your upsell block must be thumb-friendly and not require horizontal scrolling.
- Never hide the "No thanks" button: Make it easy to decline. Forcing customers to hunt for a decline button creates friction and can lead to abandoned carts.
Measuring the Success of Your Upsell Strategy
You cannot improve what you do not measure. Track these metrics in your Shopify admin or app dashboard:
- Upsell Conversion Rate: The percentage of customers who see the offer and add it to their cart. Aim for 5-10% as a baseline.
- Average Order Value (AOV): Compare your AOV before and after launching the upsell. Use a 30-day window to smooth out daily fluctuations.
- Offer Acceptance Rate by Product: Identify which upsell products perform best. Kill offers with less than 2% acceptance and test new ones.
- Checkout Abandonment Rate: If this increases after adding the upsell, your offer is too intrusive or slow. Immediately review page speed and offer placement.
Simple tracking table example:
| Metric | Baseline (Before Upsell) | After 30 Days | Change |
|---|---|---|---|
| Average Order Value | $45.00 | $51.30 | +14% |
| Checkout Conversion | 3.2% | 3.1% | -0.1% |
| Upsell Acceptance | N/A | 7.5% | N/A |
Use your app's built-in analytics to see which specific product offers are converting. Then, run A/B tests on the offer text (e.g., "Complete your look" vs. "Frequently bought together") to refine your messaging.
Conclusion
Adding upsells to your Shopify checkout is a powerful way to boost revenue, but the correct method depends entirely on your plan. Shopify Plus merchants can leverage native Functions, while everyone else should rely on reputable checkout extensibility apps. Start with one simple, relevant offer, monitor your abandonment rate closely, and scale only what works.
FAQ
Is it possible to add upsells to the checkout on a basic Shopify plan? Yes, but not with custom code. You must use a third-party app from the Shopify App Store that utilizes Checkout Extensibility APIs. These apps are safe and compliant with Shopify's terms.
Will adding an upsell slow down my checkout? Potentially. Poorly coded apps can add heavy JavaScript. Choose apps known for performance, and use Shopify's built-in speed report to monitor your checkout page load time after installation.
What is the difference between a checkout upsell and a post-purchase upsell? A checkout upsell happens before the customer clicks "Pay now," so the upsell item is included in the single transaction. A post-purchase upsell happens after payment, requiring a separate charge and a second confirmation screen.