How to increase average order value in PrestaShop: discounted bundles and a free-shipping threshold
Traffic in Q4 is the most expensive of the year, so it is cheaper to sell more to the shopper who is already in your shop. PrestaShop has everything you need for that: a free-shipping threshold, product packs and cart rules. Below: how to measure where you are, how to set up discounted bundles and the free-shipping threshold, and how to check whether it worked.
Measure first: average order value and order distribution
Without numbers it is easy to set the free-shipping threshold by gut feeling – too low (you give shipping away) or too high (nobody reaches it). Start with the average order value and the number of items per order over the last 90 days. Run the query in Advanced Parameters › Database › SQL Manager (change the ps_ prefix to yours):
SELECT COUNT(*) AS orders,
ROUND(AVG((o.total_paid_tax_incl - o.total_shipping_tax_incl) / o.conversion_rate), 2) AS avg_order_value,
ROUND(AVG(d.qty), 2) AS items_per_order,
ROUND(100 * SUM(d.qty = 1) / COUNT(*), 1) AS pct_single_item
FROM ps_orders o
JOIN (SELECT id_order, SUM(product_quantity) AS qty
FROM ps_order_detail GROUP BY id_order) d ON d.id_order = o.id_order
WHERE o.valid = 1
AND o.date_add >= NOW() - INTERVAL 90 DAY;
The value excludes shipping, includes tax and is converted to the shop's default currency. If a large share of orders contains a single item, bundles will make the biggest difference. The second query shows how orders spread across €10 brackets:
SELECT FLOOR(((o.total_paid_tax_incl - o.total_shipping_tax_incl) / o.conversion_rate) / 10) * 10 AS from_amount,
COUNT(*) AS orders
FROM ps_orders o
WHERE o.valid = 1
AND o.date_add >= NOW() - INTERVAL 90 DAY
GROUP BY from_amount
ORDER BY from_amount;
Free-shipping threshold: where to set it
PrestaShop lets you set the threshold in two places, so check both:
- Shipping › Preferences, the “Free shipping starts at” field – an amount and/or weight for the whole shop.
- Shipping › Carriers – a carrier's price ranges with a €0 cost from a given amount. Many shops set the threshold this way and leave Preferences at zero.
A practical rule: put the threshold slightly above your current average order value, so a typical shopper has to add one cheaper item rather than a second full purchase. Before you change it, check how many orders end just below the current threshold (here 70–100% of it):
SET @threshold := 50;
SELECT SUM(v >= @threshold * 0.7 AND v < @threshold) AS just_below,
COUNT(*) AS total,
ROUND(100 * SUM(v >= @threshold * 0.7 AND v < @threshold) / COUNT(*), 1) AS pct
FROM (SELECT (total_paid_tax_incl - total_shipping_tax_incl) / conversion_rate AS v
FROM ps_orders
WHERE valid = 1 AND date_add >= NOW() - INTERVAL 90 DAY) x;
If that is a double-digit percentage of orders, you have found your target group: shoppers who are a few euros short. Show them in the cart how much is missing – and suggest something that closes the gap.
Discounted bundles: three ways in PrestaShop
| Method | Where | When it fits |
|---|---|---|
| Pack of products | Catalog › Products › new product of type “Pack of products” | A fixed set (e.g. a cosmetic + a pouch) with its own price and photo. Needs a separate product page and attention to component stock. |
| Cart rule with product selection | Catalog › Discounts › Cart Rules › Conditions › Restrictions › Product selection | “−10% on 3 products from category X”. Flexible, no new product pages. |
| “Buy 3, get 1 free” | The same rule: 4 selected products, Actions › Percentage 100% on “Cheapest product” | Low-priced items bought by the piece: socks, tights, coffee, accessories. |
A few cart-rule settings decide whether the promotion pays off:
- No code if the discount should apply on its own. A rule without a code is applied automatically when the cart meets the conditions. Public codes end up on coupon sites quickly.
- “Exclude discounted products” – so the bundle discount does not stack with a sale price.
- Priority and compatibility with other rules – around Black Friday several promotions usually run at once. Check on a test cart which ones combine.
- Minimum amount is tax-included and shipping-excluded by default. Align it with the free-shipping threshold so the shopper does not see two different amounts.
One suggestion instead of a wall of offers
A shopper who is €8 short of free shipping does not need a carousel of twelve products. They need one sensible suggestion: a product that is in stock, costs roughly what is missing and goes with what is already in the cart. Ideally with an “add” button that keeps them in the cart. The same goes for bundles: instead of “you may also like”, show a ready set with one price and one button.
The hard part is choosing products for a specific shopper. A short quiz does this better than browsing history: the shopper says who they are buying for, what they like and how much they want to spend. How to design such a quiz is covered in Gift finder quiz in PrestaShop for the holiday season.
Measure the effect
Compare the average order value for two equal periods (e.g. two weeks before and two weeks after the change), ideally without other big promotions in between. For orders with a bundle discount the query looks like this:
SELECT ocr.name AS cart_rule,
COUNT(DISTINCT o.id_order) AS orders,
ROUND(AVG((o.total_paid_tax_incl - o.total_shipping_tax_incl) / o.conversion_rate), 2) AS avg_order_value
FROM ps_order_cart_rule ocr
JOIN ps_orders o ON o.id_order = ocr.id_order
WHERE o.valid = 1
AND o.date_add >= '2026-11-01'
GROUP BY ocr.name;
Compare it with the average from the first query. If orders with the bundle rule have a clearly higher average and the number of orders did not drop, the promotion works. For more on getting your shop ready for the peak season, see the Q4 checklist for PrestaShop.
Bundles and upsell in one module
OmniSales AI is an AI personal shopper for PrestaShop 8 and 9. A short quiz asks shoppers what they need, AI picks matching products from your catalog, and the shopper adds the whole set to the cart in one click – with a discount tied only to their cart, no public codes. Dynamic Upsell suggests one product that closes the gap to free shipping (the threshold is read from your shop settings or carrier ranges), and statistics show the average order value of quiz orders against the whole shop. AI writes the quiz from your catalog, or you start from one of 12 ready-made presets.