Skip to content
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
4f68f0c
Initial structure
mattbrailsford Sep 29, 2025
92d1c64
Drafting out the discounts docs
mattbrailsford Sep 29, 2025
02bbd03
Finished discounts docs
mattbrailsford Oct 2, 2025
d2e2223
Update 16/umbraco-commerce/reference/discounts/rewards/README.md
eshanrnh Oct 8, 2025
e81482c
Update 16/umbraco-commerce/reference/discounts/rewards/README.md
eshanrnh Oct 8, 2025
86c2f93
Update 16/umbraco-commerce/reference/discounts/rewards/README.md
eshanrnh Oct 8, 2025
6d150cc
Update 16/umbraco-commerce/reference/discounts/rewards/README.md
eshanrnh Oct 8, 2025
43a591e
Update 16/umbraco-commerce/reference/discounts/rewards/README.md
eshanrnh Oct 8, 2025
ad0d713
Update 16/umbraco-commerce/reference/discounts/rewards/README.md
eshanrnh Oct 8, 2025
ec24fac
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
219c432
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
e89c077
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
5f69c1e
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
24e7635
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
f231e2e
Update 16/umbraco-commerce/reference/discounts/README.md
eshanrnh Oct 8, 2025
a990271
Update 16/umbraco-commerce/reference/discounts/README.md
eshanrnh Oct 8, 2025
431616a
Update 16/umbraco-commerce/reference/discounts/README.md
eshanrnh Oct 8, 2025
b618c40
Update 16/umbraco-commerce/reference/discounts/README.md
eshanrnh Oct 8, 2025
571ba7e
Update 16/umbraco-commerce/reference/discounts/README.md
eshanrnh Oct 8, 2025
f4338b1
Update 16/umbraco-commerce/reference/discounts/README.md
eshanrnh Oct 8, 2025
198765a
Update 16/umbraco-commerce/reference/discounts/README.md
eshanrnh Oct 8, 2025
578e445
Update 16/umbraco-commerce/reference/discounts/README.md
eshanrnh Oct 8, 2025
2c10b9f
Update 16/umbraco-commerce/reference/discounts/rewards/README.md
eshanrnh Oct 8, 2025
844c0c3
Update 16/umbraco-commerce/reference/discounts/rewards/README.md
eshanrnh Oct 8, 2025
1924793
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
8b002e9
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
3d29c56
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
6408dbf
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
71eb858
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
e564e99
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
9894d7b
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
d864bcf
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
f1c3576
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
20b7d98
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
265980b
Update 16/umbraco-commerce/reference/discounts/rules/README.md
eshanrnh Oct 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion 16/umbraco-commerce/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,10 @@
## Reference

* [Stores](reference/stores/README.md)
* [Shipping](reference/shipping/README.md)
* [Discounts](reference/discounts/README.md)
* [Rules](reference/discounts/rules/README.md.md)
* [Rewards](reference/discounts/rewards/README.md)
* [Shipping](reference/discounts/README.md)
* [Fixed Rate Shipping](reference/shipping/fixed-rate-shipping.md)
* [Dynamic Rate Shipping](reference/shipping/dynamic-rate-shipping.md)
* [Realtime Rate Shipping](reference/shipping/realtime-rate-shipping.md)
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
99 changes: 99 additions & 0 deletions 16/umbraco-commerce/reference/discounts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
---
description: Discount options in Umbraco Commerce.
---

# Discounts

The discount system is a powerful and flexible way to apply different types of discounts to orders based on a wide range of conditions. Discounts can be configured to apply automatically or via a discount code, and can be targeted to specific products, categories, member groups, and more.

![Discount Management Interface](../../media/discounts/discount-editor.png)

## Overview

Discounts provide a comprehensive solution for promotional pricing strategies. Whether you need percentage-off campaigns or multi-tier discount structures, the system supports both automated discounts that apply based on conditions. Manual discount codes can also be entered by customers during checkout.

The discount system consists of three main components:
- **Rules** - Define the conditions that must be met for a discount to apply
- **Rewards** - Specify what discount should be given when rules are satisfied
- **Configuration** - Control when, how, and to whom discounts are available

## Creating a Discount

To create a new discount, navigate to the Commerce section in the Umbraco backoffice and select **Discounts** from the sidebar. Click the **Create** button to open the discount creation interface.

![Create Discount Button](../../media/discounts/discounts-create.png)
![New Discount Interface](../../media/discounts/discounts-editor.png)

## Basic Configuration

- **Name and Alias** - Every discount requires a unique **Name** for display purposes and an **Alias** for programmatic reference. The name appears in the backoffice and on customer receipts, while the alias is used internally by the system.
- **Type** - Choose between **Automatic** or **Code** discounts.
- When **Code** is selected:
- **Codes** - Enter one or more discount codes that customers can use and set a usage limit or allow unlimited usage.
- **Date Range** - Set the active period for the discount using the **Start Date** and **Expiry Date** date fields.
- **Is Active** - Toggle to enable or disable the discount without deleting it.

## Rules System

The rules system determines when a discount should be applied. Rules can be single conditions or complex multi-layered logic structures.

### Rule Builder Interface
The visual rule builder allows you to construct discount conditions using a drag-and-drop interface. Rules can be combined using logical operators to create sophisticated discount scenarios.

![Rule Builder Interface](../../media/discounts/discount-rules-config.png)

### Logical Operators
Rules can be grouped using three types of logic:
- **`ALL`** - Every rule in the group must be satisfied
- **`ANY`** - At least one rule in the group must be satisfied
- **`FUNNEL`** - Rules are applied sequentially, with matching items passed to the next rule

### Blocking Options
Rules can include blocking conditions to prevent discount stacking:
- **Block Further Discounts** - Prevent other discounts from applying if this one is used
- **Block if Other Discounts Apply** - Don't apply this discount if others are already active

For detailed information about available rules and their configuration, see the [Rules Reference](rules/).

## Rewards System

Rewards define what discount should be applied when rules are satisfied. The system supports different reward types for different discount scenarios.

![Reward Builder Interface](../../media/discounts/discount-rules-config.png)

### Reward Types
- **Order Amount Rewards** - Apply discounts to order subtotal, shipping, payment, or total
- **Order Line Rewards** - Apply discounts to specific order lines or products

### Discount Methods
Most rewards support multiple discount methods:
- **Percentage** - Apply a percentage discount (e.g., 10% off)
- **Fixed Amount** - Apply a fixed monetary discount (e.g., $5 off)

For detailed information about available rewards and their configuration, see the [Rewards Reference](rewards/).

## Discount Ordering and Priority

Discounts are processed in the order they appear in the discount list. This ordering can impact how multiple discounts interact with each other.

![Discount Order List](../../media/discounts/discounts-list.png)

### Reordering Discounts
You can change the processing order by:
1. From the sidebar, click the `...` button on the **Discounts** menu item.
2. Select **Sort** menu option.
3. Drag and drop discounts to reorder them.
4. Click the **Sort** button to apply the new order.

![Discount Sort Modal](../../media/discounts/discounts-sort.png)

### Best Practices for Ordering
- Place percentage-based discounts before fixed-amount discounts
- Order more restrictive discounts before general ones
- Consider how blocking rules interact with discount order

## Integration and Extensibility

The discount system is built with extensibility in mind. Developers can create custom rules and rewards to meet specific business requirements.

See the [Discount Rules & Rewards Key Concepts](../../key-concepts/discount-rules-and-rewards.md) for guidance on creating custom rules & rewards.
114 changes: 114 additions & 0 deletions 16/umbraco-commerce/reference/discounts/rewards/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
---
description: Discount reward options in Umbraco Commerce.
---

# Discount Rewards

Discount rewards define what discount should be applied when discount rules are satisfied. The reward system supports discounts such as percentage reductions, product-specific offers, and free shipping promotions.

![Discount Rewards Overview](../../../media/discounts/discount-rewards-config.png)

## How Rewards Work

When discount rules are satisfied, the associated rewards are applied to the order. Rewards can target different aspects of an order, including the overall order value, specific order lines, shipping costs, or payment fees.

The rules system determines when a discount should be applied. Rules can be single conditions or complex multi-layered logic structures.

### Logical Operators
Rules can be grouped using three types of logic:
- **`ALL`** - Every rule in the group must be satisfied
- **`ANY`** - At least one rule in the group must be satisfied
- **`FUNNEL`** - Rules are applied sequentially, with matching items passed to the next rule

### Funnel Logic
Funnel logic is particularly powerful for product-specific discounts. Order lines that match the first rule are passed to subsequent rules for additional filtering. This enables scenarios like "Buy 2 shirts and get 20% off pants" where the system first identifies shirt purchases, then applies discounts to pants.

### Blocking Options
Rules can include blocking conditions to prevent discount stacking:
- **Block Further Discounts** - Prevent other discounts from applying if this one is used
- **Block if Other Discounts Apply** - Don't apply this discount if others are already active

For detailed information about available rules and their configuration, see the [Rules Reference](../rules/).

## Reward Types

### Order Amount Reward
Applies discounts to various aspects of the overall order amount, including subtotal, shipping, payment fees, or the complete order total.

Check warning on line 36 in 16/umbraco-commerce/reference/discounts/rewards/README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐢 [UmbracoDocs.Editorializing] Consider removing 'various' as it can be considered opinionated. Raw Output: {"message": "[UmbracoDocs.Editorializing] Consider removing 'various' as it can be considered opinionated.", "location": {"path": "16/umbraco-commerce/reference/discounts/rewards/README.md", "range": {"start": {"line": 36, "column": 22}}}, "severity": "WARNING"}

**Configuration:**
- **Price Type** - Choose what to discount (subtotal, shipping, payment, or total)
- **Adjustment Type** - Amount or percentage
- When **Amount** is selected:
- **Amounts** - Define the discount value for amount based adjustments
- **Amounts Include Tax** - Whether the amounts include tax or not (defaults to the store's tax setting)
- When **Percentage** is selected:
- **Percentage** - Define the discount percentage for percentage based adjustments

![Order Amount Reward Configuration](../../../media/discounts/order-amount-reward-config.png)
![Order Percentage Reward Configuration](../../../media/discounts/order-percentage-reward-config.png)

**Price Types:**
- **Subtotal Price** - The total of all order line amounts before shipping and fees
- **Shipment Price** - The shipping cost for the order
- **Payment Price** - Payment processing fees
- **Total Price** - The complete order total including all fees

**Use Cases:**
- Site-wide sales and promotions
- Free shipping offers
- Payment method incentives
- Volume-based discounts

### Order Line Amount Reward
Applies discounts to specific order lines based on various criteria such as product categories, sections, or custom properties.

Check warning on line 63 in 16/umbraco-commerce/reference/discounts/rewards/README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐢 [UmbracoDocs.Editorializing] Consider removing 'various' as it can be considered opinionated. Raw Output: {"message": "[UmbracoDocs.Editorializing] Consider removing 'various' as it can be considered opinionated.", "location": {"path": "16/umbraco-commerce/reference/discounts/rewards/README.md", "range": {"start": {"line": 63, "column": 52}}}, "severity": "WARNING"}

**Configuration:**
- **Price Type** - Choose what to discount (base price, unit price or total)
- **Adjustment Type** - Amount or percentage
- When **Amount** is selected:
- **Amounts** - Define the discount value for amount based adjustments
- **Amounts Include Tax** - Whether the amounts include tax or not (defaults to the stores tax setting)
- When **Percentage** is selected:
- **Percentage** - Define the discount percentage for percentage based adjustments

![Order Line Amount Reward Configuration](../../../media/discounts/order-line-amount-reward-config.png)
![Order Line Percentage Reward Configuration](../../../media/discounts/order-line-percentage-reward-config.png)

**Price Types:**
- **Base Price** - The base price of any bundle order line
- **Unit Price** - The price per individual item
- **Total Price** - The complete order line total including all fees

**Use Cases:**
- Clearance discounts
- Brand promotions
- Seasonal offers

### Order Line Product Reward
Applies discounts to specific order lines containing particular products. This reward type provides precise control over which products receive discounts.

**Configuration:**
- **Product / Category Node** - Select the specific product or category to target
- **Order Line Source** - Choose whether to target products matching rules or the entire order
- **Price Type** - Choose what to discount (base price, unit price or total)
- **Adjustment Type** - Amount or percentage
- When **Amount** is selected:
- **Amounts** - Define the discount value for amount based adjustments
- **Amounts Include Tax** - Whether the amounts include tax or not (defaults to the stores tax setting)
- When **Percentage** is selected:
- **Percentage** - Define the discount percentage for percentage based adjustments

![Order Line Product Reward Configuration](../../../media/discounts/order-line-product-amount-reward-config.png)
![Order Line Product Percentage Reward Configuration](../../../media/discounts/order-line-product-percentage-reward-config.png)

**Use Cases:**
- Product-specific promotions
- Inventory clearance
- Cross-selling incentives
- Bundle discounts

## Custom Reward Provider Development

The reward system is extensible, allowing developers to create custom rewards for specific business needs.

See the [Discount Rules & Rewards Key Concepts](../../../key-concepts/discount-rules-and-rewards.md) for guidance on creating custom rules.
Loading
Loading