Choose the right offer type
On this page
Use this comparison to pick the mechanism that fits an offer before you build it. Each one is a different Salesforce record, so choosing the wrong one usually means rebuilding rather than adjusting.
The five mechanisms
| Mechanism | Customer does | Where it shows | Build it with |
|---|---|---|---|
| Discount | Nothing | A reduced price on the product, with the original crossed out | A Discount record |
| Promotion code | Enters a promo code at checkout | A discount line on the order | A Promotion record with actions and scopes |
| Promotion v2 | Nothing, or enters a coupon code | A discount in the cart totals | A Promotion v2 record with conditions and rewards |
| Voucher | Enters a voucher code as payment | A payment against the order | A voucher product or a manual Voucher record |
| Loyalty points | Pays with points | A points price alongside the currency price | Points fields on the price book and its entries |
Which one to use
Pick by what triggers the offer and what the customer sees.
- The price on the product page should look lower. Use a discount. It is the only mechanism that changes the displayed price, so it is what a shopper sees before adding to cart. Storewide sales, member pricing, and clearance all belong here.
- The offer needs a code and no conditions beyond scope. Use a standard promotion. A percentage or fixed amount off scoped items, free shipping, or buy one get another at a discount, unlocked by a code you publish.
- The offer depends on what is in the cart. Use a Promotion v2. Spend thresholds, item counts, tiered spend and save, a free product, a fixed price for any three items, and daily or day-of-week windows are only possible here.
- The customer is paying with something they hold. Use a voucher. A voucher is money, not a price reduction. It does not change any price, it settles part or all of the balance, and it does not require an account.
- You are rewarding repeat purchases. Use loyalty points. Points are earned on orders and spent on later ones, either alongside currency or as the whole payment.
:::tip Two mechanisms can produce the same headline offer with very different admin work. “Free shipping for members” is one discount record scoped to a membership, or a Promotion v2 with an always-applies condition, a discounted shipping reward at 100%, and a customer scope. Choose the discount unless you also need a cart condition. :::
How they combine in one cart
Each mechanism is evaluated independently, so a single order can carry several at once.
- Discounts and promotions are separate systems. A promo code applies on top of an already discounted price.
- Multiple discounts combine according to each discount’s Behaviour when Applied. See Discount behavior.
- Multiple Promotions v2 records combine according to each promotion’s Stacking Behaviour, and the store variable
promotions.calculation_strategydecides whether each is calculated against the original prices or the running subtotal. - A voucher is applied after the totals are settled, because it pays the balance rather than reducing it.
- Points are a separate currency. A product priced in points is paid for in points, and shipping can be too.
To keep a product out of one or more of these, see Exclude products from price reductions.
How each affects a subscription
The mechanism you choose decides whether a renewal is charged at the reduced price or the full one.
| Mechanism | Initial order | Renewal orders |
|---|---|---|
| Discount | Reduced | Reduced, because the discounted price is locked in as the period price |
| Standard promotion | Reduced | Full price, because the promotion is a separate order line |
| Promotion v2 | Reduced | Full price, for the same reason |
| Voucher | Cannot pay for subscription items | Not applicable |
A 100% automatic discount on a subscription product therefore produces a genuinely free subscription, while a 100% promo code does not. See Subscription products for the full breakdown.
Was this article helpful?
Thanks for your feedback! It helps us improve our docs.