Graduated Price Groups: Volume Discounts Across Several Products
Description
Highlights
About the Extension
A builder drops five white sealant cartridges and five grey ones into the basket. Ten units, same range, same idea of a bulk price. At checkout he pays the five-unit price twice. The next morning he calls the trade counter and asks where his discount went.
The problem
In Shopware a tiered price belongs to exactly one product number. Ten units of the same product reach the ten-unit tier. Ten units of the same range, split across three product numbers, reach nothing at all. In B2B that is the normal case: customers order by what they need, not by product number. So you hand out the discount manually: as a credit note, as a customer price list, as a phone call to sales.
The solution
You create a graduated price group and attach the relevant products to it. In the basket the plugin adds up the quantities of every product in that group and then looks for the tier that matches the total. Five plus five becomes the ten-unit tier, and the lower price applies to every product in the group. The tiers themselves stay exactly where they have always been: in the advanced prices of each product.
What's in it for you
The discount reaches the customer without any manual work. The tier kicks in automatically as soon as the pooled quantity crosses the next threshold. No manual reduction, no credit note afterwards.
Shoppers spot the group before they click. Each group can show a badge on the product card: as a label, as an uploaded icon or both, in your own colours. Someone scrolling a category page can see which products pool their quantities. A discount nobody notices does not sell anything.
Past orders can count too, if you want them to. One setting decides whether only the current basket counts, only the order history, or both together. That rewards repeat buyers without maintaining an individual price list for each of them.
You explain the pooling where the question comes up. Every group can print its own text on the product detail page, above the price tiers, below them or below the add-to-cart button. Font size, colour, border and background are set on the group, so no theme work is needed. The page still shows how many items of the group are already in the basket.
No second pricing system to learn. The plugin brings no price maintenance of its own. It reads the advanced prices of your products and picks the right step. Anyone who maintains tiered prices today carries on exactly as before.
You decide per sales channel. On in the trade channel, off in the retail channel, with no need to uninstall anything. The setting "Orders to include" is tied to the channel as well.
How the plugin works
The administration gets a Graduated price groups entry under Catalogues. You create groups there, give each one a name and a description and set it active. Both texts are translatable. The same group also holds the listing badge and the output on the product detail page.
Products are assigned in the product itself. Under Custom fields you get "Graduated price group" with a list of your groups, "Graduated price factor" for the weighting and the switch "Consider package contents", which converts the pooled quantity to the base unit.
The badge label and the detail page headline are snippets. Saving a new group creates them in every language, pre-filled with the group name. You reword them under Settings and Snippets, and an edited text stays as it is even if the group is renamed later.
The basket does the rest. The plugin collects the products of the group, adds up their quantities including the factor, finds the matching price step and applies it to the line items. Price rules that apply to the customer are respected, and so is the net or gross display of the channel. Setting a group to inactive stops the price, the badge and the text at once. The product assignments stay untouched.
Typical use cases
Colours and variants of one range. Sealant cartridges in eight shades, printer cartridges in four versions, screws in three lengths. A badge marks the range on the category page, and the customer buys across it and still reaches the tier.
Cases, packs and base units. The 24-bottle case counts with factor 24, the single bottle with 1. For cable, film or cleaning fluid the package contents switch converts the pooled quantity into metres or litres instead of packs.
Recurring trade consumption. A decorating firm orders every month. With past orders switched on it grows into the cheaper tier over time, with no special agreement to set up.
Technical facts for your IT team
Shopware 6.7, PHP 8.2 or newer. The plugin creates two tables of its own, one for the groups and one for their translations, plus three custom fields on the product. Shopware core tables stay untouched. Badge icons reference the Shopware media library, the badge and headline texts live in your snippet sets.
The plugin sends no data to external servers. It works purely with data from your own Shopware database and stores nothing extra about your customers. For the past-orders option it reads the order history of the logged-in customer, limited to the 50 most recent orders in the same sales channel and excluding cancelled ones.
Pricing runs as a cart collector in the basket. Product and group data is loaded in batches once per basket calculation and cached for that run, so there is no query per line item. The product cache is cleared as soon as a group changes, which keeps a renamed group from lingering in the storefront. Colours, font sizes and icon dimensions from a group are validated before they reach the template. A failure inside the plugin never breaks the basket: pricing falls back to the normal product prices and the error goes to the log.
The administration side ships its own permissions for viewing, editing, creating and deleting. When you update to 6.7.4, groups that already exist keep the badge switched off, so nothing changes in your storefront until you turn it on. On uninstall Shopware asks whether the data should be kept. Answer no and the two tables and three custom fields are removed without residue.
To be honest
The group price takes effect in the basket, so the product page still shows the tier of the individual product, together with the headline, the quantity note and your own text. If you expect the detail page to display the pooled price up front, this plugin will disappoint you, and the badge carries a label and an icon, never a price or a saving. It creates no prices either: without maintained advanced prices there is nothing to tier, and a product always belongs to exactly one group. Switch it on in one sales channel first and check two or three real baskets before rolling it out.
Legal notice
We accept no liability for legal requirements. Please check the use of this plugin with a qualified legal advisor.
Details
- Available: English, German
- Latest update: 2 September 2026
- Publication date: 3 April 2020
- Version: 6.7.4
- Category: Conversion Optimization
Resources
Reviews (1)
Super Lösung für komplexe Staffelpreise
About the Extension Partner
BuI Hinsche GmbH
Partner Status
-
Shopware
Bronze Partner -
Shopware
Premium Extension Partner
Details
- Ø-Rating: 4.3
- Partner since: 2014
- Extensions: 92
- Certifications: 2
Support
- Based in: Germany
- Speaks: German, English
- Response time: Quickly