PS PrestaShop Intermediate

Group Buy & Collective Tiered Pricing — Full guide

Install, configure and run group buying: collective tiered pricing, counting modes, retroactive refund, per-quantity pricing and a real-time widget for PrestaShop 8 and 9.

Updated Module version 1.0.2

Overview and requirements

Group Buy introduces collective tiered pricing: the more buyers a product has, the lower the unit price becomes for everyone. You define tiers (a buyer threshold unlocks a price), and the module automatically applies the reached tier’s price via PrestaShop’s native specific prices. The current price therefore shows everywhere without any theme modification: product page, listings, cart and emails.

  • Compatible with PrestaShop 8.0 to 9.x, Classic theme and derived themes.
  • PHP 7.4 to 8.3.
  • Multistore and multilingual (FR/EN/ES/DE/IT).
  • No CRON task required: recalculation is driven by order events.
  • PrestaShop-compliant architecture (ModuleAdminController, ObjectModel), no Composer dependency.

The current price is pushed into a specific price bound to the campaign dates. It therefore applies natively across the whole display, with no template override.

Installation

Install the module like any PrestaShop module:

  1. Download the dfgroupbuy-1.0.2.zip archive from your customer account.
  2. In the back office, go to Modules > Module Manager.
  3. Click Upload a module and drop the archive.
  4. Once installed, click Configure.

On installation, the module creates its tables (campaigns, tiers, participants), registers its hooks and adds the Group Buy tab under Catalog. You can create your first campaign right away.

General module settings

The configuration page gathers the global settings, shared by all campaigns:

  • Main colour and accent colour: applied to the product-page widget (progress bar, badges, current price).
  • Send an email on retroactive refund: notifies the buyer when a voucher is granted to them.
  • Voucher validity period: number of days the retroactive vouchers remain valid (30 by default).
  • Refresh interval: how often the widget updates live, in seconds (30 by default).

Creating a group-buy campaign

From the Catalog > Group Buy tab, click Add a campaign. A campaign links a product to a tier grid, over a date window.

  • Reference: internal identifier of the campaign (free text).
  • Product: search and select the product concerned. You can target a specific combination or leave “all combinations”.
  • Name and description: translatable texts shown in the widget.
  • Counting mode: see the dedicated section below.
  • Valid orders only: counts confirmed orders only (recommended).
  • Reference price: the starting (crossed-out) price before any tier.
  • Start / end date: the campaign’s activity window.
  • Retroactive refund: see the dedicated section.
  • Active: enables or suspends the campaign.

Defining the tiers

Each tier links a threshold (number of buyers, units or customers depending on the mode) to a unit price excl. tax. Add as many tiers as needed, for example:

10 buyers  → 18.00 € excl. tax
50 buyers  → 15.00 € excl. tax
100 buyers → 12.00 € excl. tax

On each save, the module recalculates the current tier and updates the specific price. Prices must decrease as the threshold increases.

The reference price and tier prices are entered excluding tax. The conversion to tax-included for display follows the product’s tax rules.

Counting modes

The counting mode determines what advances the collective counter:

  • Orders: number of distinct orders containing the product.
  • Units sold: total quantity of the product sold.
  • Distinct customers: number of different customers who bought the product.

The Valid orders only option restricts counting to orders considered valid by PrestaShop (payment accepted, etc.), which avoids counting cancelled or pending orders.

Real-time collective price

As soon as an order is validated or changes status, the module recounts the campaign, determines the reached tier and updates the specific price applied to all buyers. The new price shows everywhere immediately, with no intervention. No CRON is required: everything is driven by order events.

If an order moves to a cancelled or refunded status and you count valid orders only, the counter is recalculated downward and the price may rise again if the tier is no longer reached.

Per-quantity tier pricing (bulk buying)

In Units sold mode, a customer ordering a large quantity at once clears a tier on their own: they then instantly get that tier’s price on their own order, without waiting for the collective count to reach it. For example, with a tier at 10 units, a customer adding 10 to their cart immediately pays the tier-10 price.

This logic stays “best price for all”: if the current collective price is already lower than the quantity tier’s price, the collective price applies. Everything goes through native specific prices (per quantity tiers), so the right price shows from the cart.

This mechanism only activates in Units sold mode, where thresholds represent units. In Orders or Customers mode, a bulk purchase is still a single order or a single customer.

Retroactive refund

When the option is enabled, the “everyone at the best price” principle applies: as soon as a lower tier unlocks, earlier buyers automatically receive a discount voucher equal to the difference between the price they paid and the new price, multiplied by the quantity purchased. A notification email is sent if the send option is active.

  • The voucher is a personalised discount code (CartRule), valid for the configured number of days.
  • Only buyers who paid more than the new price receive a voucher.
  • Each participant’s effective price is updated to prevent any double refund on subsequent drops.

The retroactive refund creates real discount vouchers. Check your tier grid before enabling a high-volume campaign to keep the total refund amount under control.

The product-page widget

On the product page, the module shows a widget that stages the collective dynamic:

  • A badge and the crossed-out reference price next to the current price.
  • The collective counter and a progress bar to the next tier.
  • The full tier ladder, with the current tier highlighted.
  • A countdown to the campaign end.
  • A note about the retroactive refund when the option is active.

It all refreshes live via AJAX, at the interval set in the settings, without reloading the page.

FAQ and troubleshooting

The widget does not show on the product

Check that an active campaign targets this product, that today’s date falls between the start and end dates, and that the campaign belongs to the current shop. If you target a specific combination, the widget only appears for that combination.

The price does not drop although the threshold is reached

Recalculation is triggered by order validation and status changes. If you count valid orders only, make sure the relevant orders are in a valid state. Simply editing then saving the campaign also forces a recalculation.

A bulk buyer does not get their quantity’s price

Per-quantity tier pricing only works in Units sold mode, and for thresholds greater than or equal to 2. In Orders or Customers mode, an order’s quantity does not clear a tier on its own.

Does it work with combinations?

Yes. A campaign can target a specific combination or all combinations of a product. A campaign targeting a specific combination takes precedence over an “all combinations” one.

What happens on uninstall?

Uninstalling removes the specific prices created by the module, deletes its hooks and tab, and cleans up its tables. Discount vouchers already issued remain valid on the customer side.

Was this page helpful?

Still stuck? Contact support