Voucher codes
Individual and bulk codes belong to promotions. Rewards work without a code: they appear as soon as the cart fits.
An automatic discount from a cart value is a promotion with a rule in the standard, and nobody needs a plugin for that. But as soon as a product should go into the cart, the customer may choose between gifts, or a bar should show the way to the next tier, the standard stops. Sixteen rows say where exactly the border runs.
| Question | Shopware 6, promotions | With this plugin |
|---|---|---|
| Discount automatically from a cart value | yes – promotion without a code plus the cart total condition | yes – a minimum cart value on every single reward, as a percentage or as a fixed amount |
| Putting a product into the cart for free | no – a promotion always creates an item of type "promotion", never a product item | yes – a real product item at €0.00, quantity 1, not stackable, with image and product number |
| The customer chooses between several gifts | no | yes – tiles in the cart, one click swaps the reward without removing anything first |
| The customer picks the variant | no | yes – a select box with every active and available variant; without a choice the gift cannot be added |
| Progress bar to the next tier | no | yes – one bar per group with every tier, the remaining amount to the cent, its own notice as soon as everything is unlocked |
| Several groups side by side in the cart | no – promotions stand on their own, there is no group above them | yes – any number of groups, each with a name, description, position and its own bar; three run side by side in the demo shop |
| Several tiers in one staircase | one promotion with its own rule per tier | yes – all tiers in one group, a threshold per reward; two rewards sharing a threshold form one tier |
| One rule for a whole group of rewards | rules sit on the promotion and on its discounts, there is no group above them | yes – on the group for every reward in it and additionally on each single reward; if the reward rule does not match, only its tile is missing |
| Threshold per currency | no – the condition carries one number for all currencies | yes – a Shopware price field per currency, gross and net; nothing is converted |
| Basis of the threshold | cart total including shipping and discounts already granted | goods value without the rewards: in the demo shop €495.95 of goods and €24.80 off still left €4.05 to the €500 tier |
| Stock and sales counter | a discount does not touch stock | a free product is a sale: after the test order the variant showed sales 1 and stock 49 |
| Free shipping as a reward | yes – a promotion can reduce the shipping costs specifically | no – a reward is a product or a discount on the cart |
| Voucher code needed | optional, individual and bulk codes belong to the promotion | not needed: the reward hangs on the cart value, not on a code |
| Campaign period | yes – start and end in the form of the promotion | via a rule with a date range or via the active switch of the group |
| Limiting by customer group, country or category | yes – via rules | yes – via the same rules, either on the group or on a single reward |
| What it costs | included in Shopware | free with exactly one reward, more via in-app purchases from €4.90 a month |
The Shopware column is read in the source code of the core: discount types and scopes of a promotion, the line item type a promotion creates, the cart total condition and the rules on the promotion and on its discounts. The column on this plugin comes from its source code, from the demo shop and from a test order on 13 September 2026.
The condition "cart total (incl. shipping)" compares the total of the cart, and that total already contains granted discounts and the shipping costs. So an automatic discount hanging on this condition calculates against a value it changes itself.
With the plugin the basis is fixed. For every threshold the goods value without the rewards counts. A reward discount therefore cannot undercut its own threshold, and the next tier does not move away because of it. Verified in the demo shop: €495.95 of goods, €24.80 off, still €4.05 to reach €500.
Cart3 items
Subtotal€471.15
The cart of the test order: the discount is in it, the threshold calculates without it.
The plugin does not replace promotions, it stands beside them. Four things the standard does that it does not attempt.
Individual and bulk codes belong to promotions. Rewards work without a code: they appear as soon as the cart fits.
A promotion can reduce the shipping costs specifically. A reward applies to the cart, not to the shipping.
"Buy three, pay two" discounts items already in the cart. The plugin adds something instead.
Promotions have a start and an end in the form. A reward group needs a rule with a date range or the active switch for that.
Three things that make the difference as soon as a campaign covers more than one gift.
A reward group ties together any number of rewards and carries its own name above the tiles, its position in the cart, its bar and, if you want, a rule that applies to every reward in it. Several groups run side by side, three of them in the demo shop. The standard has no such level: there every promotion stands on its own.
If a reward points to a parent product, the tile carries a select box with every active and available variant; without a choice the gift cannot be added to the cart. With a T-shirt that decides everything: without a size the gift turns into a support ticket or a return.
Giving away free shipping and tying a campaign to a voucher code: Shopware brings everything along for that, and a promotion is the shorter route. A reward is a product or a discount on the cart and hangs on the cart value - both run side by side, in one shop and in one cart.
Put a product into the cart in the demo shop and watch the gifts appear. Or start free with a single reward in your own shop.