Promotions Information

Here you will find information on what sort of promotions we can do, and any set up information required to make the promotion work

We received some extra information about Promotion and how the work - this is what he said:


  1. If a basket level promotion is applied, the promotion_id and promotion_message will be persisted to the resulting sales_order_group and all its child sales_order records.

    The discount amount applied to the basket as a result of this promotion is persisted to sales_order_group.promotional_discount and this is apportioned and persisted on each sales_order.promotional_discount.

    Also, the basket discount amount is apportioned to each order line and persisted to sales_order_line.apportioned_promotional_discount.

  2. If a product level promotion is applied, the promotion_id and promotion_message is persisted the sales_order_line records it affects and the discount amount is persisted to sales_order_line.promotional_discount.
  3. Only a single promotion can be applied at each level, e.g. you can have one basket level promotion and one line level promotion per order line, and they can both be applied on a single order. In that case you would have the basket level promotion ID persisted to the sales_order_group and each of the sales_order records, and the line level promotion ID would be persisted to those sales_order_line records that it applies to.




Promotion applicator - (VwFreeProductPromotionApplicator):

The PromotionApplicator is a way to leverage the complex rules-based promotion engine for product type promotions, without having to apply the rules manually.

Here is an overview of how product type promotions work:

Product type promotions are promotions where a reward is applied to the customer's basket based on the contents (the basket lines) of the basket.

The promotions can have both a trigger rule and a reward rule to select the basket lines that are involved in the promotion. The quantities of the selected basket lines are used to determine the number of times that the promotion can be applied.

If the triggered basket lines are also the ones rewarded (e.g. BOGOF) then the promotion does not require a separate reward expression. The promotion engine applies the rules and if applicable will pass the details to the promotion applicator where the reward can be applied. It does this by calling the 'apply' method of the applicator object, passing in the following details:


  • Promotion: the promotion that is being triggered.
  • Channel: the sales channel (Web, Subscription, Telesales)
  • Basket: the customer's basket
  • Trigger items: the list of basket lines that have matched the trigger expression 
  • Reward items: the list of basket lines that have matched the reward expression (this could be the same list as the trigger items, if no reward expression is required)
  • Number of applications: the number of times the promotion can be applied to the reward items.
  • Reward quantity: the quantity of the reward items that is required per application


For example, a "buy one of product X, get one of product Y free" will only be triggered if the basket contains at least one X and one Y product in the basket. If the basket contains 2 of product X and 3 of product Y (say) then the promotion can be applied to the basket line twice. The result will be that the customer will only be charged for one product Y. In this example, a promotion applicator would be passed the following data:


  • Promotion
  • Channel
  • Basket 
  • The triggering basket lines: A list containing the basket line with 2 of product X
  • The rewarded basket lines: A list containing the basket line with 3 of product Y
  • The number of applications, which is 2.
  • The reward quantity which is one (since it is get one of product Y free)


In this example it would be up to the PromotionApplicator to apply the discount ( 2 x the cost of Y) to the rewarded basket line.



Products in Basket Promotions

Buy One Get One Free (BOGOF)

What it does - Allows a customer to purchase 2 of a particular item but only pay for 1

How it works - Promotion fires when a customer adds 2 of the specified product to their basket, it will add a discount relevant to the amount for the specified BOGOF item

Rules to set - A rule defining the product(s) where the promotion should fire MUST be applied

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Gifts, Cases, Event tickets

Vouchers required? - No

Set it up here


Buy One Get Second Half Price (BOGSHP)

What it does - Allows a customer to purchase 2 of a particular item but only pay 50% of the second item

How it works - Promotion fires when a customer adds 2 of the specified product to their basket, it will add a discount relevant to 50% of the specified BOGSHP item

Rules to set - A rule defining the product(s) where the promotion should fire MUST be applied

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Gifts, Cases, Event tickets

Vouchers required? - No

Set it up here


Buy X For The Price of Y Items

What it does - Allows a customer to purchase a certain number of items for the price of a different number of items (IE Buy 3 for the price of 2)

How it works - Promotion fires when a customer adds the number of items to the basket specified in the 'Buy' items rule - a discount will automatically be added to amend the price relevant to the specified 'For the price of' items specified

Rules to set - A rule defining the product(s) where the promotion should fire MUST be applied. A number of 'Buy' items must be specified along with a number of 'For the price of' items. (12 for the price of 10)

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Gifts, Cases, Event tickets

Vouchers required? - No

Set it up here


Buy X Items for a Set Price

What it does - Allows a customer to purchase a number of items for a specified set price (ie, 12 bottles for £100)

How it works - Promotion fires when a customer adds the specified number of the product in the rules, a discount is added in the basket to override the price for the items

Rules to set - A rule defining the product(s) where the promotion should fire MUST be applied, along with a number of items and what the fixed price should be

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Gifts, Cases, Event tickets

Vouchers required? - No

Set it up here

Simple Discount

What it does - Simply adds a discount based on a set of rules firing in the basket

How it works - Promotion fires when a customer hits the rules in the basket, based on the specified conditions in the promotion

Rules to set - Basket value, discount type (Amount off, percentage or fixed price) and discount amount must be applied.

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Gifts, Cases, Event tickets

Vouchers required? - No

Set it up here

Buy Item A and get Discount of Item B

What it does - Allows a customer to purchase a particular item and get discount off a second item

How it works - Promotion fires when a customer adds item A and item B to the basket, it will discount down the item B with the specified amount

Rules to set - Rules defining item A and item B must be applied. A quantity for each item must also be defined along with a discount amount & type.

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Gifts, Cases, Event tickets

Vouchers required? - No

Set it up here

Free Product

What it does - Automatically puts a free product in the basket based on rules firing

How it works - Promotion fires when a customer adds items to the basket that meet the conditions specified in the basket. 4 promotions are needed to fire this based on the requirments.

Rules to set - A rule defining the free product and minimum purchase quantity should be set.

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Gifts, Cases, Event tickets (note, a different promotion for each item/area needs to be set up for this promotion)

Vouchers required? - No

Set it up here

Earn Red Points

What it does - Awards a specified number of Red points to a customers RED account when rules are met

How it works - Promotion fires when a customer adds items to the basket that meet the conditions specified in the promotion rule, number of points are specified in the promotion (250 or 500 initially)

Rules to set - A rule defining the products for the points and a rule specifying that the Virgin Red account must be open for a customer.

What can it apply to? - Website, Telesales, Bottles, Gifts, Cases, Event tickets (note, a different promotion for each item/area needs to be set up for this promotion), Beers & Spirits.

Vouchers required? - No

Basket Subtotal Promotions


What they do - Fire a discount based on rules firing within the basket

How it works - When a customer hits a certain amount, then a discount is added in the basket

Rules to set - Minimum spend should always be set along with a discount type

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Gifts, Cases, Event tickets

Vouchers Required? - No but usually used in conjunction with this promotion type

Set it up here

Delivery Promotions


What they do - Give either discounted or free delivery in the checkout based on a set of rules firing

How it works - When a customer hits the rules in the basket and checkout, the delivery will be discounted

Rules to set - Minimum spend should always be set and the delivery Discounts should be specified for each delivery method

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Cases

Vouchers Required? - No

Set it up here

Voucher Promotions


Single Use Vouchers

What they are used for - Group buying and CRM vouchers, where a customer is offered a unique code that can only be used once. Can also be set to use on specific product or product set

How it works - When a customer enters the code, if they are eligible based on the rules, the voucher will add to their account and be used against an eligible order.

Rules to set - A voucher prefix should be set and specify whether it should be 'Sticky' (stay on the customer account after end of session) a minimum spend should always be set.

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Cases, Gifts, Event tickets

Vouchers Required? - Yes

Other requirements - The vouchers should be created in Staging for testing purposes, then again in Live once the publish has gone

Set it up here

Multiple Use Vouchers

What they are used for - NEP vouchers where a single code is used for many people, usually in the form of a signup voucher

How it works - When a customer enters the code, if they are eligible based on the rules, the voucher will add to their account and be used against an eligible order. If it's a sign up, the customer will be signed up on checkout

Rules to set - A voucher code and maximum usage should be set, along with minimum spend. NEPs almost always have a rule specifying what customers are eligible.

What can it apply to? - Website, Telesales, Subscriptions, Bottles, Cases, Gifts, Event tickets

Vouchers Required? - Yes

Other requirements - The vouchers should be created in Staging for testing purposes, then again in Live once the publish has gone