E-commerce15 min read•

Ecommerce Website Development in Pune: Upsells, Cross-Sells and Bundles for Higher AOV

Where upsells, cross-sells, bundles and progress bars belong on a Shopify or WooCommerce store, what is native versus an app, the speed cost, and how to test honestly.

#Upsell#Cross-sell#Bundles#Average Order Value

Ecommerce Website Development in Pune: Upsells, Cross-Sells and Bundles That Raise Average Order Value Without Slowing the Store

Upsells, cross-sells and bundles raise average order value (AOV) when each one is placed at the moment a shopper is already deciding, offers something genuinely relevant, and costs the store almost nothing in speed. In practice that means a small number of carefully chosen offers: a "goes well with this" suggestion on the product page, a progress bar and one or two add-ons in the cart, an optional bundle where products naturally pair, and, only if your platform and plan allow, one offer after payment. Good ecommerce website development in Pune treats these as design decisions with a measurable test, not as a stack of pop-up apps. A store with six overlapping widgets usually gets slower, more confusing and no richer.

This article is for owners and marketing managers running a Shopify or WooCommerce store. Platform facts come from Shopify and WooCommerce documentation read in October 2026; plans and limits change often, so check the linked pages before committing to a build. The worked example is hypothetical, with invented numbers. Shipping rates and payments are out of scope; a free-shipping progress bar appears only as an interface element.

The four offer types, defined plainly

People use "upsell" and "cross-sell" loosely, and the confusion leads to bad placement. Here is a working vocabulary.

Upsell. A higher-priced or better version of the thing the shopper is already looking at. Someone viewing a 500 ml bottle is shown the 1 litre. WooCommerce's documentation describes up-sells as alternatives to the viewed product, typically higher quality or higher priced.

Cross-sell. A complementary item that goes with what is already in the cart or being viewed: a case for a phone, a lid for a container. WooCommerce describes cross-sells as items promoted from what the customer has already added to the cart.

Bundle. Several products sold together as one purchase, usually with a clear reason to buy them together (a starter kit) and often a small price benefit.

Threshold incentive. A progress bar such as "Add Rs 300 more to unlock a free gift". What it rewards is a business decision outside this article; we only discuss how the bar is built and shown.

Related products are similar items shown for browsing, not add-ons; they help discovery, not AOV directly.

Why placement matters more than the widget

The shopper's question changes from page to page. On a product page it is "is this the right product?"; in the cart, "is this everything I need?"; at checkout, "can I finish quickly?"; after payment, the decision is made. Offers should match that question. This is a design hypothesis to test on your own store, consistent with our product page conversion checklist.

Where each offer belongs

On the product page

The product page suits two things: a short "goes well with this" block (complementary items) and a bundle option when the product is naturally part of a set. Keep the main add-to-cart button the clear primary action, and keep add-ons visually secondary.

Shopify's help documentation separates complementary products (items often bought alongside the selected product) from related products (similar items that could substitute for it). Shopify says complementary suggestions should be add-ons you are confident customers will find useful, ideally priced at or below the original product. In the Search & Discovery app you can pick up to 10 complementary and up to 10 related products per product manually. Related products can be generated automatically. Per the same page, the complementary products block sits in the product information section, only one can be added per product page, and it needs a compatible theme, so confirm your theme supports it before promising it to a client.

WooCommerce works differently. In the Linked Products tab of a product you can pick Upsells and Cross-sells manually. Per WooCommerce's documentation, up-sells appear on the single product page below the description, cross-sells appear on the cart page below the products table, and related products are generated automatically from shared categories or tags and cannot be chosen by hand. The documentation notes that display locations depend on your theme and that all three types are sorted randomly. Random ordering is worth remembering: if you hand-pick a strong cross-sell and show three, the order is still not under your control without extra code or an extension.

In the cart or cart drawer

The cart is the strongest place for cross-sells and a threshold bar, because the shopper has committed to something and is reviewing it. Keep it short: one threshold bar and one to three add-ons.

On WooCommerce, native cross-sells display on the cart page according to your theme. On Shopify, many themes ship a cart drawer, but the drawer's contents and extensibility depend on the theme. This is an area where we usually recommend a quick inspection of the specific theme before choosing between a native approach, a small custom section and an app. We found no Shopify document guaranteeing a drawer upsell feature for every theme, so check your theme's documentation.

A free-shipping-style progress bar is an interface element, not a business rule. Whatever it promises must be true, calculate correctly, and match what the checkout actually does. A bar that says "you've unlocked it" and then does not apply is a trust problem and, depending on wording, a consumer-law problem. Test each state: empty cart, below threshold, exactly at threshold, above it, and after the shopper removes an item.

At checkout

Checkout is the place to be most conservative. On Shopify, Shopify's developer documentation says pre-purchase offers rendered within the information and shipping and payment steps are available only to stores on Shopify Plus through checkout UI extensions. So for most stores, adding upsells inside the checkout steps is not a straightforward option; check your plan.

For other plans, the practical alternatives sit on either side of checkout: in the cart, or after payment. Our checkout system service page covers the checkout build side. As a rule, if your checkout is already long, remove friction before adding offers. Our article on checkout form and guest checkout covers that.

After purchase

Post-purchase offers appear after the buyer completes payment and before the thank-you page. Shopify's documentation says these are built with post-purchase checkout extensions. At the time of reading, the page describes them as in beta: development stores can use them freely, live stores must request access (which the page says can take up to seven days to review), and apps that use them must be submitted for review. Further limits listed include: orders must go through the Online Store channel, a buyer can accept up to three offers per checkout, only one app can be selected for post-purchase offers per merchant, and offers are not shown for certain payment methods and order types. Because the documentation says the beta status and restrictions can change, confirm with the current page before you plan around this.

The appeal is that the shopper has already paid, so an optional add-on does not endanger the main order. Shopify also notes fulfilment is held on these orders until the customer reaches the order status page or one hour passes, which the warehouse team should know.

Bundles: what native tools do, and where an extension is needed

Bundles are the offer type where platform choice matters most.

Shopify. Shopify has a free, first-party Shopify Bundles app. Per its help page it is available on all plans and supports fixed bundles (up to 30 components) and dynamic bundles (up to 150 components), plus multipacks created by duplicating a product. A bundle can have up to 3 options and 100 variants in total, the component products must exist first, and new bundles start as Draft until set to Active. The page also lists limitations that matter for operations and reporting: orders list the individual SKUs rather than a bundle SKU, bundle prices do not update automatically when a component's price changes, bundled products do not appear under option filters in Search & Discovery, and discounts targeting components alone will not apply (you must include the parent bundle product). Read that list before you design pricing, because the "price does not auto-update" limit means a bundle can silently drift from the sum of its parts.

Shopify's discounts can also do a simple version of the job without bundling: the Buy X get Y discount can be a code or an automatic discount, with a reward of free items, a percentage off or a fixed amount off. Per the documentation, the shopper must add all qualifying items to the cart themselves; the reward is never added automatically, and discounts created in the admin do not apply to post-purchase offers.

WooCommerce. Core WooCommerce does not provide a full bundle product type. The official Product Bundles extension on the WooCommerce marketplace is a paid extension. Per its documentation, it groups simple, variable and subscription products, lets you set minimum and maximum quantities, supports bulk discounts, and requires WooCommerce 8.2+, PHP 7.4+ and WordPress 6.2+. The documentation points to a different extension, Composite Products, for kits with configurable components. The documentation page lists no price, so check the marketplace for current cost.

Native features or an app?

A reasonable decision path, based on what the documentation says:

  1. Start native. Shopify's complementary products and Bundles app, or WooCommerce's linked products, cost no extra monthly fee for the base functionality (WooCommerce's bundles extension is the exception) and add the least code.
  2. Use an app or extension when native cannot do the job. Examples: a threshold bar inside a cart drawer your theme does not support; post-purchase offers; tiered volume discounts with custom messaging; rules that depend on cart contents.
  3. Prefer apps built as theme app extensions. Shopify says these let merchants add app content through the theme editor without editing Liquid. The page does not describe cleanup on uninstall, so test removal on a duplicate theme.
  4. Count the apps. Every app that touches the storefront is a candidate for added JavaScript. If two apps overlap (a bundles app and a cart upsell app both modifying the cart), you now have a conflict risk as well as a speed cost.

If you are weighing a custom build instead, start with Shopify vs WooCommerce vs custom.

The speed cost of offers

Every dynamic offer needs code: to fetch recommendations, to calculate a threshold, to redraw the cart. That code runs on the shopper's phone, and on a mid-range Android handset it costs more than on your office laptop.

Two of Google's Core Web Vitals are the main ones to watch. web.dev's guidance on Interaction to Next Paint (INP) treats 200 milliseconds or less as good and above 500 milliseconds as poor, measured at the 75th percentile of page loads. It explains that script loading, parsing, compiling and long-running event callbacks add delay to interactions, and that large amounts of HTML rendered with JavaScript on the client can slow the next paint. An add-to-cart click that triggers a cart drawer, a recommendation fetch and a threshold bar recalculation is exactly the kind of interaction that lands in that range if the code is heavy. Cumulative Layout Shift (CLS) is the other: if a recommendation block or a progress bar appears late and pushes the buy button down, that is layout shift. Reserve its space in the layout.

What helps, in practice:

  • Load offers after the main content. The product's image, title, price and add-to-cart should not wait for a recommendations script.
  • Reserve space for late-loading blocks so the page does not jump.
  • Prefer one tool over several. One well-chosen app or a small native solution beats four overlapping widgets.
  • Compare before and after. Run the same page through PageSpeed Insights and check field data in Search Console's Core Web Vitals report if you have enough traffic.
  • Remove what you stop using. Uninstalling an app does not always remove everything it added; inspect the theme for leftovers.

Our article on store speed and Core Web Vitals covers measuring and fixing those metrics. We have not attempted to quote a standard speed penalty per app, because it varies by app, theme and device, and we could not verify a reliable general figure.

How to test honestly

Most "we added a bundle and sales went up" stories are not tests. Seasonality, a festival sale, a new ad campaign or a few unusually large orders can all move AOV. Here is a more honest approach.

1. Pick one primary metric. Revenue per visitor (or per session) is better than AOV alone, because an offer can raise AOV while lowering conversion rate. Track conversion rate and AOV as supporting numbers. Add-to-cart rate, cart abandonment and checkout completion are useful diagnostics, as our e-commerce website testing guide also suggests.

2. Change one thing at a time. If you add a cart threshold bar and a product-page bundle on the same day, you will not know which one worked.

3. Split traffic properly. A real A/B test shows each variant to a random share of visitors at the same time. Comparing this month to last month is a before-and-after observation, not a test. You may need a testing tool for this, which itself adds script weight. If you cannot split traffic, say so in your report and treat the result as indicative.

4. Decide the sample and duration in advance. Run for whole weeks so weekday patterns balance out, and do not stop the moment a number looks good. For a small store with modest daily orders, a clean A/B test of a small change may never reach a trustworthy conclusion. In that case it is honest to say "we shipped this because it is sensible and low-risk, and we are watching for harm", rather than to claim a win.

5. Look at the damage side. Track refund and return rates, support tickets and speed metrics for the test variant. An upsell that raises AOV but causes wrong-size or wrong-accessory returns is not a win.

6. Check mobile separately. Mobile and desktop often behave differently, so do not rely only on the blended figure.

Staying on the right side of dark patterns

Offers become dark patterns when they depend on tricking the shopper rather than helping them. India's Central Consumer Protection Authority has named 13 dark pattern categories under its guidelines, and our article on dark patterns and the CCPA lists them. Two apply directly to this topic:

  • Basket sneaking: adding an item, a bundle or a donation to the cart without the shopper's clear choice. Every add-on must be added by the shopper's own action, and any pre-ticked box is a risk. Shopify's own Buy X get Y behaviour, where the shopper must add qualifying items themselves, is a useful model.
  • False urgency: "Only 2 left!" or a countdown timer that resets on reload. If you show scarcity or a deadline, it must be real.

Others that show up around offers: confirm shaming (a decline button reading "No, I don't want to save money") and interface interference (a bright accept button beside a tiny grey decline link). A fair offer shows what the add-on is, what it costs, and gives an equally easy way to skip it. We are a web agency, not a law firm, so confirm anything borderline with your legal adviser.

A hypothetical worked example

The following is invented to illustrate the thinking. It is not a real client and the numbers are not results.

Imagine a Pune-based store selling home-organisation products on Shopify. Its AOV is Rs 1,100 and the typical order contains one item. The product pages show only related products, and the cart drawer has no suggestions.

Step 1: audit. The team finds that two product families pair naturally: storage boxes with label sets, and drawer dividers with the drawers' matching boxes. They check the theme and find it supports the complementary products block, so no app is needed for the product-page part. They also run the site through PageSpeed Insights and record the mobile numbers as a baseline.

Step 2: build, smallest change first.

  • Add complementary products (up to a few hand-picked items each) to the top 20 products, using Search & Discovery.
  • Create one fixed bundle with the Shopify Bundles app: a box, a divider set and a label pack. They set the bundle price manually and make a note to review it whenever a component price changes, because the app does not update it automatically.
  • Add a cart threshold bar using a theme section if the theme supports one, or a lightweight app delivered as a theme app extension if it does not. The threshold is a figure the owner chose, set a little above the current AOV.

Step 3: arithmetic, using invented numbers. Suppose that 5 out of every 100 shoppers who reach the cart add a Rs 250 label pack, and average order value moves from Rs 1,100 to Rs 1,112.50 (5 x 250 / 100 = Rs 12.50 per cart). That is a small lift, about 1.1 percent. This is the honest scale of a single add-on: modest per order but meaningful across thousands of orders. It also shows why the number to watch is revenue per visitor, because if the extra box made 1 in 100 shoppers abandon the cart, the gain could be wiped out.

Step 4: test. They split cart traffic 50/50 for four full weeks, with revenue per visitor as the main metric and conversion rate, returns and mobile INP as guardrails, and agree in advance to switch the change off if conversion falls beyond a set margin.

Step 5: decide. If revenue per visitor rises without hurting the guardrails, keep it and try the next small change. If flat, remove the widget and its script weight. The lesson is the process: native first, one change at a time, a pre-agreed metric, and a way back.

Ecommerce website development in Pune: getting the build right

Good offer design is a small amount of well-placed work, and the places it goes wrong are usually plumbing: a theme that does not support a block, two apps fighting over the cart, a bar that miscalculates, a bundle whose price has drifted. Our website creation service and checkout system service pages describe how we work, and you can reach us through the contact page or on WhatsApp at https://wa.me/919201958278. If you are planning a project, tell us your platform, your theme and the two or three offers you are considering, and we will tell you plainly which ones need an app and which do not.

Frequently Asked Questions

What is the difference between an upsell and a cross-sell?

An upsell offers a better or higher-priced alternative to the product being viewed, while a cross-sell offers a complementary item to go with what is already chosen. WooCommerce's documentation uses the same split: up-sells on the product page, cross-sells in the cart. Related products are a third thing, meant for browsing similar items.

Can I do upsells and bundles on Shopify without paying for an app?

Partly. Shopify's Search & Discovery app handles complementary products on product pages for compatible themes, and the free first-party Shopify Bundles app supports fixed and dynamic bundles on all plans. Cart-drawer upsells, post-purchase offers and some tiered logic usually need an app or custom code. Check the current limits on Shopify's help pages.

Do upsell and bundle apps slow down my store?

They can. Each offer needs JavaScript, and heavy scripts can raise Interaction to Next Paint (good is 200 ms or less per web.dev) and cause layout shift if blocks load late. The effect varies by app, theme and device, so measure your own store on a mobile device before and after installing anything.

How do I know if an upsell really increased my sales?

Compare revenue per visitor, not just average order value, using a simultaneous split of traffic between the old and new versions for whole weeks. Also watch conversion rate, returns and speed. A before-and-after comparison across different weeks can be distorted by sales, ads and seasonality.

When does an upsell become a dark pattern?

When it relies on tricking the shopper: adding items to the cart without their action (basket sneaking), showing fake scarcity or timers, or making the decline option hard to see. India's CCPA guidelines name such practices. A fair offer is clearly described, optional and easy to decline.

Sources:

Need Help With Your Digital Strategy?

Govindani Infotech helps Indian businesses and NGOs build websites, run ads, and grow online. Contact us for a free consultation.