Sales

Sales allow a store manager with Manage promotions permission to set up conditions for dynamic, promotional product discounts.

A sale is different from a discount because it’s applied before an item is added to the cart. A discount needs a cart; it’s applied when an item’s in the cart or to the cart as a whole (like a coupon code).

An item in the store would typically be listed by its sale price. If no sales apply to a given product, its sale price would simply equal its regular price.

Sales are ordered in the control panel, and the system always runs through each sale in order when determining the salePrice of the purchasable.

# Conditions

When creating a sale, you can set a number of conditions to be evaluated when determining if the sale should be applied to the purchasable. All conditions must match to have the sale applied. Leaving a condition empty ignores that condition.

Only promotable purchasables may have discounts and sales applied. This means the Promotable switch must be enabled on the variant’s product in the control panel, which is the default for any new product.

# Start date

When the sale can start to be applied to matching products.

# End date

When the sale stops being applied to matching products.

# User Group

Whether the cart’s customer belongs to one of the matching user groups.

# Variant

Whether the purchasable being matched is one of the selected variants.

# Category

Whether the purchasable being matched is related to the selected category.

For example, you might have a category of products in the “Womens Sport” department category, and this allows you to put all products in that category on sale.

For variants, the category can be related to either the product or the variant to match this condition.

Each custom purchasable can decide to determine how it considers the selected category.

# Category Relationship Type

This field specifies the type of relationship must exist between the purchasable and category in order for the condition to be met. There are three options available “Source”, “Target” and “Both”:

  • Source: the relational field exists on the product/purchasable.
  • Target: the category has a product/variant relational field.
  • Both: the relationship can be either Source or Target

For more information on how this works, see Relations Terminology (opens new window).

# Other Purchasables

Any other custom purchasable a third party system adds to Commerce can show up here as a condition.

# Actions

If the conditions match the current context (variant, user, cart date, etc.), then the actions are applied to the purchasable.

# Price Effect

There are four ways to apply a price effect:

# Reduce the price by a percentage of the original price

Enter a percentage amount to take off the price of the purchasable.

Example: for a $100 purchasable, setting this value to 80% would make the purchasable’s sale price $20.

# Set the price to a percentage of the original price

Enter a percentage amount to become the price of the purchasable.

Example: for a $100 purchasable, setting this value to 20% would make the purchasable’s sale price $20.

# Reduce the price by a flat amount

Enter an flat currency amount to take off the purchasable’s price.

Example: for a $100 purchasable, setting this value to $20 would make the purchasable’s sale price $80.

# Set the price to a flat amount

Enter an flat currency amount to determine the sale price of the purchasable.

Example: for a $100 purchasable, setting this value to $20 would make the purchasable’s sale price $20.

# Sale Application

There are additional options for how the sale is applied to the product:

# Ignore previous matching sales if this sale matches. (Checkbox)

This setting will disregard any previous sale that affected the price of the item matched in this sale.

For example, Sale 1 reduced the price by 10%. Checking this box within Sale 2 will apply its effect on the original price of the purchasable, ignoring the 10% off.

This is automatically true if either of the following pricing effects are used:

  • Set the price to a percentage of the original price
  • Set the price to a flat amount

This setting is related to the purchasable being affected.

# Do not apply subsequent matching sales beyond applying this sale. (Checkbox)

After this sale matches the order, do not apply any other sales, based on the order of sales in the control panel.

This is a sale-level option, not a purchasable-level option like the above Ignore previous matching sales if this sale matches.

# Templating

# craft.commerce.sales.allSales

Returns an array of all sales set up in the system, each represented as a Sale (opens new window) model.

{% for sale in craft.commerce.sales.allSales %}
  {{ sale.name }} - {{ sale.description }}
{% endfor %}