Discounts & Offers
Discounts & Offers are powerful marketing strategies which can draw customers to your shop, increase short-term sales, move surplus stock, build loyalty, and so on.
In Dynamicweb Ecommerce there are two types of discounts:
- Order discounts apply to and are triggered by orders
- Product discounts apply to and are triggered by products
Both types of discounts are created and managed from the Ecommerce area, under the Discounts & Offers node (Figure 1.1). As you can see, this node contains several subnodes - this makes it possible to set permissions and limit access to discounts for backend users.
As you can see, all existing discount of a particular type are listed under each node. You can right-click the list of column headers and add or remove columns.
Both types of discounts are created in the same manner and consist of the same types of properties:
- A set of general properties
- A set of discount properties
- A set of triggers and restrictions
These properties can be combined in a multitude of ways to create various types of discounts - see a couple og examples below, or read more about the various discount properties below.
Please note
The Discounts & Offers feature is incredibly flexible and allows you to create very specific conditions for triggering discounts, but it is also super easy to create combinations which make no sense in the real world - or simply don't work at all. This is intentional, if only because flexibility also implies the flexibility to create something nonsensical.
For debugging purposes consider using the discount validation loop.
General properties
The section with general properties is used to define some basic properties of the discount, e.g. the name, a description, and to mark it as active and set a timespan during which is is applied (Figure 4.1).
The following properties are available:
# |
Property |
Used for |
Comments |
1 |
Name |
- |
Available i frontend |
2 |
Description |
- |
Available i frontend |
3 |
Campaign name, image & color |
Associate the discount with a campaign name, an image, and a color. |
Available i frontend |
4 |
Active |
Activate or deactivate the discount. |
Inactive discounts will not be applied during checkout. |
5 |
Assignable from product catalog |
Check this to allow this discount to be applied from the product catalog. |
|
6 |
Valid from & Valid to |
Set a timespan during which the discount is applied. |
|
7 |
Priority |
Set a discount priority & toggle Stop further rules processing |
Discounts with a priority are applied first – combine with the Stop further rules processing check to stop all other discounts with a lower priority - which means a higher priority number - from being applied |
Discount types
The section with Discount properties is used to define the type of discount and how it is applied (Figure 5.1).
A discount can be applied in three ways (1):
- An Order Discount (Exclusive) is applied and calculated based on the order price BEFORE any other discounts have been applied
- An Order Discount (Inclusive) is applied and calculated AFTER product discounts have been applied
- A Product discount applies to products (and not the whole order)
There are six Discount Types (2):
Discount type |
Effect |
Comments |
Amount |
Subtracts a fixed amount from the price |
|
Percentage |
Subtracts a fixed percentage from the price |
|
Product |
Adds a specific product to an order free of charge |
|
Free shipping |
Cancels any shipping fees incurred for an order |
Order discounts only |
Amount from field |
Subtracts a fixed amount from the price – amount is retrieved from the specified custom product field. |
Product discounts only. Custom product field must be of the type decimal number. |
Custom percentage discount Custom amount discount |
Variable discount percentages/amounts | Assignable from frontend using the setdiscount cart command as a part of an cart management or order draft setup. Assigning user must have impersonation rights to the user owning the cart. |
Loyalty discount | Convert loyalty points to currency when paying for an order | Order discount only |
Depending on the selected discount type, several additonal fields for controlling the discount are shown – these are detailed below.
Properties for Amount discounts:
Property |
Used for |
Comments |
Amount |
Enter an absolute amount to subtract from the price |
|
Currency |
Specify a currency for the amount being subtracted |
|
Free shipping (3) |
Include free shipping for eligible shipping methods |
The shipping method must have the ’Allow free shipping’ checkbox checked |
Usage per customer |
Specifies how many times a user can use this discount |
Based on user ID or email – a value of ’0’ means as many times as they want |
Properties for Percentage discounts:
Property |
Used for |
Comments |
Percentage |
Enter a percentage to subtract |
|
Apply to |
Choose between applying the discount to All products, the Cheapest product, or the Most expensive product |
Only order discounts |
Only apply to products without a discount |
Exclude products with another discount set |
|
Limit discount amount |
Specify a max value subtracted by this discount in each currency |
|
Free shipping (3) |
Include free shipping for eligible shipping methods |
The shipping method must have the ’Allow free shipping’ checkbox checked |
Usage per customer (4) |
Specifies how many times a user can use this discount |
Based on user ID or email – a value of ’0’ means as many times as they want |
Properties for Product discounts:
Property |
Used for |
Comments |
Product |
Select a product to add to cart free of charge when this discount is triggered |
|
Only apply to products without a discount |
Exclude products with another discount set |
|
Free shipping (3) |
Include free shipping for eligible shipping methods |
The shipping method must have the ’Allow free shipping’ checkbox checked |
Usage per customer (4) |
Specifies how many times a user can use this discount |
Based on user ID or email – a value of ’0’ means as many times as they want |
Properties for Free shipping discounts:
Property |
Used for |
Comments |
Usage per customer (4) |
Specifies how many times a user can use this discount |
Based on user ID or email – a value of ’0’ means as many times as they want |
Properties for Amount from field discounts:
Property |
Used for |
Comments |
Custom field |
Specify a custom field to retrieve the amount from |
The custom field must be a product field of the type decimal number. |
Usage per customer (4) |
Specifies how many times a user can use this discount |
Based on user ID or email – a value of ’0’ means as many times as they want |
Finally three other properties can be set:
- Free shipping (3) combines this discount with free shipping for all shipping methods marked as Eligible for free shipping in the fee settings
- Usage per customer (4) limits this discount to a certain number of uses for each customer
- Check for validation reason (5) adds this discount to a loop showing discounts which were not applied - which makes it possible to e.g. render a section with Buy for X more to get 10% off! and similar.
Triggers & Restrictions
Below the discount properties, a set of properties are used to define when and how a discount is triggered (Figure 6.1).
Discounts where nothing is configured apply to all products on a solution. This means that you must configure each discount in a manner so it only triggers when you want it to.
The following properties are used to define when a discount triggers – co-dependent properties are grouped together:
Restriction Group |
Properties |
Restriction |
Comments |
(1) Users and groups |
User |
A single user |
|
|
User group |
All users in a single user group |
|
|
Customer number |
All users with the specified customer number |
|
(2) Total Price |
Condition, Total Price, & Currency |
Select a Condition, such as Equal to or Greater than, to combine with the Total Price property and the Currency property |
The discount triggers for orders matching the condition & the total price specified – e.g. Greater than 100 USD. |
(3) Product Catalog |
Shop |
All shops/a specific shop |
|
|
Language |
All ecommerce languages/a specific ecommerce language |
|
|
Products and/or groups |
The selected products and/or the products in the specified product groups |
Only for product discounts |
|
Excluded products and/or groups |
Specifically NOT the specified products and/or products in the specified product groups |
Only for product discounts |
(4) Order |
Context |
Only applies to orders in the selected order context |
|
|
Country |
All countries/the selected country |
Triggered by the delivery country, and if that's not available the customer country, and if that's not available the context country set in the website Ecommerce settings. |
|
Shipping |
All shipping methods/the selected shipping method |
|
|
Payment |
All payment methods/the selected payment method |
|
(5) Product Quantity |
Quantifier & Product Quantity |
Select a quantifier – Any product or Same product – and combine it with a quantity. |
The discount triggers only when the product quantity of the quantifier is reached, e.g. 5 of the same product.
Check Apply discount only once if appropriate. |
(6) Fields and Vouchers |
Order field |
Only triggers if a particular value is entered in the selected field. |
Select a type of field – the Default Voucher Code Field or a product field.
Specify a value or a voucher list used to trigger the discount. |
EcomDiscount
Contains discount setup from the Ecommerce > Order Discounts node.
Field name | Data type | Length | |
---|---|---|---|
DiscountId | bigint | 8 | |
DiscountType | int | 4 | |
DiscountName | nvarchar | 255 | |
DiscountActive | bit | 1 | |
DiscountValidFrom | datetime | 8 | |
DiscountValidTo | datetime | 8 | |
DiscountDiscountType | int | 4 | |
DiscountAmount | float | 8 | |
DiscountCurrencyCode | nvarchar | 3 | |
DiscountPercentage | float | 8 | |
DiscountProductId | nvarchar | 30 | |
DiscountProductVariantId | nvarchar | 255 | |
DiscountGroupId | nvarchar | 50 | |
DiscountShopId | nvarchar | 255 | |
DiscountLanguageId | nvarchar | 50 | |
DiscountProductQuantification | int | 4 | |
DiscountProductQuantity | float | 8 | |
DiscountAccessUserId | int | 4 | |
DiscountAccessUserGroupId | int | 4 | |
DiscountAccessUserCustomerNumber | nvarchar | 255 | |
DiscountCountryCode2 | nvarchar | 2 | |
DiscountShippingId | nvarchar | 50 | |
DiscountPaymentId | nvarchar | 50 | |
DiscountOrderFieldName | nvarchar | 255 | |
DiscountOrderFieldValue | nvarchar | Max | |
DiscountVoucherListId | int | 4 | |
DiscountOrderTotalPriceCondition | int | 4 | |
DiscountOrderTotalPrice | float | 8 | |
DiscountApplyOnce | bit | 1 | |
DiscountExcludedProductsAndGroups | nvarchar | Max | |
DiscountProductsAndGroups | nvarchar | Max | |
DiscountAssignableFromProducts | bit | 1 | |
DiscountProductIdByDiscount | nvarchar | 30 | |
DiscountProductVariantIdByDiscount | nvarchar | 255 | |
DiscountDescription | nvarchar | Max | |
DiscountOrderContextId | nvarchar | 50 | |
DiscountAmountProductFieldName | nvarchar | 255 | |
DiscountApplyToProduct | int | 4 | |
DiscountCampaignName | nvarchar | 255 | |
DiscountCampaignImage | nvarchar | 255 | |
DiscountCampaignColor | nvarchar | 50 | |
DiscountCreatedDate | datetime | 8 | |
DiscountUpdatedDate | datetime | 8 | |
DiscountCreatedBy | int | 4 | |
DiscountUpdatedBy | int | 4 | |
DiscountOnlyApplyToNonDiscountedItems | bit | 1 | |
DiscountStopFurtherProcessing | bit | 1 | |
DiscountAddFreeShipping | bit | 1 | |
DiscountUsePerCustomer | int | 4 | |
DiscountPriority | int | 4 | |
DiscountMaximumLimits | nvarchar | Max | |
DiscountExtenderType | nvarchar | 255 | |
DiscountExtenderSettings | nvarchar | Max | |
DiscountOrderTotalPriceCurrencyCode | nvarchar | 3 | |
DiscountCheckForValidationReason | bit | 1 | |
DiscountLoyaltyPointsRate | float | 8 | |
DiscountExternalId | nvarchar | 250 | |
DiscountAmountIncludesVat | bit | 1 |
EcomDiscountTranslation
Contains data for discounts (DiscountTranslationDiscountId) and their translations (DiscountTranslationLanguageId).
Field name | Data type | Length | |
---|---|---|---|
DiscountTranslationAutoId | bigint | 8 | |
DiscountTranslationDiscountId | bigint | 8 | |
DiscountTranslationLanguageId | nvarchar | 255 | |
DiscountTranslationName | nvarchar | 255 | |
DiscountTranslationDescription | nvarchar | Max | |
DiscountTranslationCampaignName | nvarchar | 255 |
EcomSalesDiscount
Contains setup data for sales discounts as defined in the Ecommerce -> Sales discounts node.
Field name | Data type | Length | |
---|---|---|---|
SalesDiscountId | nvarchar | 50 | |
SalesDiscountName | nvarchar | 255 | |
SalesDiscountDiscountType | nvarchar | 255 | |
SalesDiscountCustomersAndGroups | nvarchar | Max | |
SalesDiscountParameters | nvarchar | Max | |
SalesDiscountActive | bit | 1 | |
SalesDiscountDescription | nvarchar | Max | |
SalesDiscountValueType | nvarchar | 50 | |
SalesDiscountValueFixed | float | 8 | |
SalesDiscountValuePercentage | float | 8 | |
SalesDiscountValueProducts | nvarchar | Max | |
SalesDiscountDateFrom | bigint | 8 | |
SalesDiscountDateTo | bigint | 8 | |
SalesDiscountConvertedToNewFormat | bit | 1 | |
SalesDiscountXMLParamsBackup | nvarchar | Max | |
SalesDiscountShop | nvarchar | 255 | |
SalesDiscountCountries | nvarchar | Max | |
SalesDiscountAutoId | int | 4 | |
SalesDiscountMinimumBasketSize | float | 8 |
EcomSalesDiscountCurrencies
Keeps track of which currencies (SalesDiscountCurrenciesCurrencyCode) a sales discount (SalesDiscountCurrenciesDiscountId) is valid for.
Field name | Data type | Length | |
---|---|---|---|
SalesDiscountCurrenciesDiscountId | nvarchar | 50 | |
SalesDiscountCurrenciesCurrencyCode | nvarchar | 3 | |
SalesDiscountCurrenciesDiscountValue | float | 8 | |
SalesDiscountCurrencyAutoId | int | 4 |
EcomSalesDiscountLanguages
Keeps track of which languages (SalesDiscountLanguagesLanguageId) a sales discount (SalesDiscountLanguagesDiscountId) is valid for.
Field name | Data type | Length | |
---|---|---|---|
SalesDiscountLanguagesDiscountId | nvarchar | 50 | |
SalesDiscountLanguagesLanguageId | nvarchar | 50 | |
SalesDiscountLanguagesName | nvarchar | 255 | |
SalesDiscountLanguagesDescription | nvarchar | Max | |
SalesDiscountLanguageAutoId | int | 4 |