How to set up a 3 for 2 offer and tiered discounts in PrestaShop

Set up a 3-for-2, tiered discounts or a bundle in PrestaShop, find out why an automatic discount is not applied, and read the results per promotion: a practical guide with the back-office labels.

Comment créer un 3 pour 2 et des paliers sur PrestaShop

Two questions come back when a merchant sets up PrestaShop promotions: "my automatic discount isn't applying" and "how do I create a 3 for 2". Both come from the same place: an offer is a mechanic, a product selection and a set of conditions, and one missing piece leaves the cart at full price. Smart Promotions applies the offer in the cart without a coupon code and shows, on the Test a cart page, why it fires or not. Here is how to build a 3 for 2, tiered discounts and a bundle, then how to read the results.

Who is this promotions module for, and who is it not for?

It is for shops that sell several similar products and want an automatic offer, with no code to hand out.

That covers a catalogue of mugs, cosmetics, books or capsules: the customer adds three items from the same family and the discount applies without hunting for a coupon. The module relies on PrestaShop's native cart rules. Taxes, currency and payment modules therefore keep working as they do for a classic discount: the amount paid and the invoice reflect it.

A shop with a single reference, or one that only needs a one-off coupon for a single campaign, has little to gain: a native cart rule is enough. If all you want is a crossed-out price on a product page, the module is also heavier than you need.

How do I create a 3 for 2 in a few minutes?

Open Smart Promotions > Promotions, click New promotion from a template, choose 3 for 2, select the products in the Offer tab, then click Save and activate.

The promotion opens pre-filled. The setting that matters most is which items are discounted: the cheapest in the cart, the most expensive, or the cheapest of each group. The template picks the cheapest items of the selection by default; with "The most expensive items", a 3 for 2 gives away the most expensive item in the cart.

The full sequence, with the back-office labels:

  1. Open Smart Promotions > Promotions and click New promotion from a template.
  2. Choose the 3 for 2 template.
  3. In the Offer tab, pick the products or categories through search.
  4. Set the items that are discounted and, if needed, the exclusions, for example excluding a brand.
  5. In the Display tab, adjust the badge and the message the customer sees.
  6. Read the plain-language summary, then click Save and activate.

A concrete case: a mug shop runs "3 for 2 on mugs" across twenty references. The customer adds three mugs, the cheapest of the three is free, and the cart shows the "You save" block with the amount saved. The Performance page then reports how many validated orders used that promotion. The module documentation follows the same sequence, screen by screen.

How do tiered and quantity discounts work?

A tier is a discount that grows with the quantity or the cart amount, and the module applies the best tier reached without asking the customer to choose.

You enter each threshold and its rate: two items, three items, five items. Three mechanics cover the neighbouring cases:

  • All items after X: the first ones at full price, the following ones discounted.
  • Each group of X items: the cart is split into groups of X items, and each group gets a price or a discount.
  • Every Nth item discounted: once Y items are paid at full price, one item out of N is discounted.

Bundle: X items for a price is the fixed-price version: you set one price for a group of products, for example three references for a single amount, mixing the references of the selection. Conditions then combine with quantity, amount, weight or the presence of a category in the cart.

Why isn't my automatic discount applied to the cart?

In most cases a condition is not met, a usage limit has been reached, or an exclusive promotion comes before yours.

The Test a cart page answers without changing the cart. It lists each promotion with its result and the reason: unmet condition, limit reached, exclusive promotion with a higher priority. You can test an existing cart or one built for the occasion, for a given customer, currency, country and carrier, including a promotion still in draft.

The causes to check, in order:

  • The promotion is a draft and was never activated.
  • The start and end dates do not cover the moment of the test.
  • The selection does not contain the cart item, or an exclusion rules it out.
  • The combination mode is "exclusive", or another promotion in the same exclusion group has a higher priority.
  • A limit on orders or on uses per customer has been reached.
  • A customer condition is not met: group, first order, newsletter, title (gender) or birthday.

Since version 2.0.4, a newsletter subscription or a change of title or birth date is taken into account at the next cart display, without waiting for the items to change. If PrestaShop itself refuses the rule, for example with its experimental discount system, the diagnostic journal records the reason it gives.

Diagnostic view: date of the last run, count of removed discounts and the journal of refusals with their reason.
Diagnostic view: date of the last run, count of removed discounts and the journal of refusals with their reason.

What happens when the promotion ends?

The generated discount expires at the promotion end date at the latest; an order paid after that date keeps no discount, including on PrestaShop 1.7.8 and 8.x.

Each discount a customer obtains is a cart rule created for their cart, with an end date aligned on the promotion. The module evaluates the cart again on every display: once the date has passed, the promotion no longer applies and the discount disappears. On every version, the cart is evaluated again on the payment module page, before the amount is transmitted; on 9.0 and 9.1, PrestaShop also checks the rule before validating the order.

The daily maintenance then removes the discounts of abandoned carts, deleted carts and ended promotions. A discount used in an order is never removed. It runs at the first back-office visit of the day, and the Daily maintenance block lets you start it with Run now.

Daily maintenance block: last run, discounts removed from abandoned or deleted carts, stopped promotions and the Run now button.
Daily maintenance block: last run, discounts removed from abandoned or deleted carts, stopped promotions and the Run now button.

How do I check what the promotions bring in?

The Performance page counts the validated orders of the period, the share with a promotion, the discounts granted and the average order with and without a promotion.

Orders awaiting payment, cancelled or refunded are excluded. That is what makes the figures readable: before version 2.0.4, an order awaiting a bank wire could inflate the share of orders with a promotion until it exceeded the total number of orders. Both sides of the comparison now rest on the same population.

The By promotion table gives, for each offer, the number of orders, the discounts granted, the revenue, the average order and the last use. It exports to CSV. The promotion list shows each real status: draft, scheduled, running, ended or limit reached.

To link a campaign to its traffic, the promotion is then tracked in the shop's analytics tool; Google Analytics 4 and GTM record purchases and checkout events. To bring an abandoned cart back, Abandoned Cart Reminder reuses existing discounts in its e-mails.

Period indicators, discounts per day and the By promotion table: the three blocks of the Performance page.
Period indicators, discounts per day and the By promotion table: the three blocks of the Performance page.

What does the module not do?

It does not replace a coupon code to hand out or an ad platform, and it does not choose the discount rate or amount for you.

Three limits are worth knowing before buying:

  • Promotions are not isolated per employee. PrestaShop does not do that for its cart rules either; access is handled by back-office permissions.
  • The module does not integrate with PrestaShop's experimental discount system on 9.1 and later. If PrestaShop refuses a discount, the journal gives the reason, but the message shown to the customer may still announce the saving.
  • The discount is not split across several parcels of one order: no allocation per parcel is provided.

A valid Wepresta licence is also required. Without one, the module disables itself and the promotions stop applying. Promotions, statistics and settings are kept, and the module re-enables from the Configure page as soon as a valid licence is saved. A renewed licence is checked with the server before being treated as expired, and a transient licence-server incident does not cut the promotions.

Frequently asked questions

How do I create a 3 for 2 offer?
Open Smart Promotions > Promotions, click New promotion from a template and choose 3 for 2. Select the products or categories in the Offer tab, set the discounted items, then click Save and activate. The customer adds three items from the selection: the cheapest is free and the cart shows the amount saved.
Can I set volume discounts per quantity tier?
Yes. The Progressive tiers type links a discount to each quantity or amount threshold, and the module applies the best tier reached. Other mechanics cover nearby cases: All items after X, Each group of X items and Every Nth item discounted. The threshold and rate are set in the Offer tab, and Test a cart shows which tier is used for a given cart.
Why is my automatic discount not applied to the cart?
First check that the promotion is active and that its dates cover the moment of the test. Then look at the product selection, the exclusions, the combination mode and the usage limits. The Test a cart page gives the exact reason for each promotion without changing the cart: unmet condition, limit reached or an exclusive promotion with a higher priority.
What happens to the discount when the promotion ends?
The generated discount expires at the promotion end date at the latest. An order paid after that date keeps no discount, including on PrestaShop 1.7.8 and 8.x. The daily maintenance then removes discounts from abandoned carts, deleted carts and ended promotions, but never removes a discount used in an order.
Can a discount be limited to some products in the cart?
Yes. Each promotion targets a selection of products, categories, brands or suppliers, and can exclude others. The option to exclude products already on sale avoids a double discount. For an offer that covers only part of the cart, pick the matching mechanic, for example Buy X, get Y, rather than a discount on the whole order.

Products in this article

1.7.8 8.2+ 9.1+
PrestaShop modules

Abandoned Cart Reminder

Bring customers back to their carts with up to three personalized reminder emails. Abandoned Cart Reminder combines...

★★★★★
4.89 / 5
9

Find the module your store needs

Browse the modules