Basket Rules

The Basket rules in Tixly are your tool for flexible pricing and other basket changes. They open up a new way of giving benefits to certain customers or on specific orders.

A basket rule consists of Conditions (the things that need to be true) and Actions (the things you want to happen). If the conditions of a rule are met, all these rules actions are performed.

You can have rules with actions that modify the prices of items in the basket, set the available delivery & payment options or result in (upsell) messages being shown. Example of functionalities you can create with this new module are:

  • Buy 5 tickets get 1 free ticket.
  • Don't pay a transaction fee if you are a member.
  • Buy 4 tickets for shows in December and get 2 drinks for 50% discount.
  • Show a message to customers with 10+ tickets in a transaction that are not yet members, to become a member and get a 5% discount. Have them add the membership and get the discount in the same transaction.

The rules work online, as well as in the Box Office. Online, the actions are completely automatic, in the Box Office you keep control and see the actions as suggestions.


If you have a complex workgroup with multiple organisations, rules can be limited to an organisation and skin. When you set no organisation on a rule, it will work for all organisations. 

Create basket rule

To create a new Basket Rule navigate to Administration - Basket rules and press Add rule in the upper right corner.



  • Name: Set a logical, easy to use name for internal use.
  • Organisation: Essential when your workgroup has multiple organisations with their own skins. This makes the rule to only be effective on the skins that are linked to this workgroup. When you set no organisation on a rule, it will work for all skins.
  • Priority: This is the order in which the rules will be applied. From low to high.
  • Has valid dates: Allows you to set a date time frame in which the rule is active.
  • Is active: When not active, the rule is not used. 


A condition is a set of logic statements that are applied to the contents of the transaction and the customer that is buying.

This is done on the basket page, and in the Box Office, every time something is added / removed or changed to the basket.

The conditions of all active rules are evaluated and when they pass, all the actions of this rule are applied.

Example of a condition:

You see two lines with a statement:

  • The first statement saying what event tickets to look for in the basket.  
  • The second statement says you need to have at least 3 of these.

Because the two statements are connected to an AND operator, the whole condition will only match if you have tickets in your basket for events taking place on or before 01-01-2022 AND when you have more than 3 of those.

There is an AND and an OR operator. The difference is:

  • AND:  all statements (or group of statements) this operator connects to need to be true. As in the above example.
  • OR: if any of the statements that this operator connects to is true, the condition is true.

See the example below that checks if the buyer has a specific customer tag OR a specific active membership.

Parameters overview

The following parameters can be used in the statements. They are categorized as seen in the following table.






Can be used in combination with almost all other statements to evaluate the number of times this is in.

When no Count is specified a [Count]>=1 is used internally



A specific event





Primary event group



Secondary event group



Event start date



Ticket type



Ticket price



In specific subscription



In subscription



Events with primary event group



Events with secondary event group

You can set a secondary event group on a selection of events and use it here to target this whole group at once. eg. Give 50 events the seconday group "spring festival".


Events with promoter



Hours to first event



Event start date









Number of events in subscription












Giftcard group



Customer has tag



Customer has active membership



Customer has active donation




Box Office | Online



In person | Remote


Box Office user

Specify specific persons


Has cookie

Used for special integrations


Number of tickets per event

Looks at all events in the order, if they match this number.

eg. min 2 tickets per event


Number of tickets

Total number of tickets in the order, not limited to any of the statements. 


Number of subscriptions

How many subscriptions you are buying in total

eg. If you buy "Old music" subscription for 4 persons. And "Opera premieres" subscription for 3 persons. This 'Number of subscriptions' = 7


Number of subscriptions per subscription type

Looks at all subscription types in the order and returns the minimal amount of subscriptions to them.

In the above example, the 'Number of subscriptions per subscription type' = 3


Number of unique subscription types

In the above example this would be 2


Number of unique events

Count the events in the order does not make a distinction between events in a subscription or not in a subscription.


Number of donations



Number of products



Number of unique products



Number of memberships



Number of unique memberships



Number of giftcards



Number of unique giftcards



Delivery type



Delivery price



Delivery method



Total price of the order



Subscription renewal

Is any of the subscription in the order a renewal


Promo code

When used in a rule a promo code box is shown at checkout.


It is generally best If you use parameters of one category in a group. You can mix them, but it is much easier to understand what they do when keeping them separate.

Example:  A condition with group (1) that has four statements about Events and a group (2) with two statements about the customer.

Each parameter can be compared to a value. When comparing a parameter with a numerical value you have these options (called comparison operators):

  • less or equal
  • less
  • not equal
  • greater
  • greater or equal

Example:  To test if an Order contains two or more products you make this statement: [Number of products]  [greater or equal] [2]

Other parameters can be either:

  • equal
  • not equal.

Example: [Customer has active membership] [equal] [Friends of the Opera]


When the Condition is met, that is that all statements in the rule conditions are true, then the actions of the rule will be executed.

Each rule should have at least one action, but can have as many actions as you like.

The following action types are available:

  • Discount: to change the price of items in the order.
  • Message: to show a message box with information or an upsell
  • Change delivery price
  • Change order fee
  • Override delivery options
  • Override payment options
  • Set payment interval options

Here you see a discount  action with 25% discount on every 2nd ticket for a max of 4 discounted tickets to two specific events.



Discount action 

This action allows you to change the price of elements in the basket. It is important to realize that the items you discount need to be specified here in the discount action. The conditions used in the rule to check if this rule is true do not select the items for a discount. This might look a bit strange, but also allows you to be more flexible. 

An item with a discount will be shown on the basket page with the new price, the normal price is shown crossed out in front of this the emphasize the discount. (see screenshot below)

Type: The discounts can be a percentage of the original price (-25%) or a flat value of the original price (-5) or set a new price. 

Count: Here you specify how many items get this discount. Unlimited, Limited to a max number of items . Interval allows to give every 2nd item up to a max number of items a discount. Setting the count to 'Subscriptions' will discount all tickets in the number of subscriptions specified, regardless of how many event tickets are in it.

Condition + Predicate + Category: This specifies which items to discount of all the items in the basket. 

With Predicate  set to all you can set category to be Tickets, Products, giftcards or memberships.

example:  [Cheapest + All + Tickets], means of all the tickets in the basket, give the discount to the cheapest tickets.  

Setting Predicate to 'Specific' allows you to select a category like 'Events' and the selecting a number of specific events. This will give the discount only to the tickets to these events. (See screenshot above)

As a category you can select: Events, Event groups, Secondary event groups, Promoter, Subscriptions, Products, Memberships and Ticket Types.

Message action

With the message action you can present a message to the customer on the basket page. This can be used to Inform users about items in their order, Warn users when buying an event or Cross-sell specific items.  Example of a simple message is pictured below.



Messages can be set per language and consist of at least a Header and a Message.  In the message you can use markup and insert links. You can use this to link a specific page on your website where the user can select more events to buy or read more on membership advantages. And only show this to people who are not already a member.

Type: This changes the color of the message border. These can be changed in skins  to stand out even more. 

Position:  Use to sort the messages when you have multiple messages in one order.

Recommended events, Recommended subscriptions, Recommended memberships:  here you can select a number of items you would like to show as an upsell with this message. 

Change delivery price

Sets a new price for the active delivery item. Use case:  When a user orders more then 4 tickets the post delivery will cost less. 

Change order fee

Sets a new price for the order fee. Use case: When you normally charge € 4 per order, you may set this fee to € 0 for customers that have the 'VIP' customer tag.

Override delivery options

At event level in Tixly you can specify the delivery options available to choose from when ordering this event. With this action type you can change this per order. A good use case is:  Only allow e-tickets of pick up at the box office when the earliest event in the order is in less then 5 days.  

Override payment options

Here you can set what payment option will be available for an order. You might want to give certain customers, specified by customer tags, the option to choose direct debit. Or only allow this payment type when ordering subscriptions.  

Set payment interval options

The payment interval is used in combination with direct debit, and currently only available in combination with the Mollie payment service provider.

In the database we can set a number of interval options which you can let the user choose from. These options can have a number of installments, timing and percentage.  For example:

- pay 100% 4 weeks after the order

- pay 30% immediately, 30% after 6 weeks, remainder after 10 weeks. 

You can a also select 'Allow instant payment' where the payment is executed a.s.a.p. 



All rules are evaluated for the order. All the rules with only discounts or messages will be executed. For rules that have any of the other actions, only the first matching rule will be executed.

For example, if you have a basket that matches the rule on top (#40) and would also match the rule at the bottom (#35) only the top one will be executed. That is as they both have an 'Override delivery options' action, as you can tell by the green truck icon.

This means that the other actions of the bottom rule will also not be executed.


It is a good habit of having the rules for specific conditions higher on the list, with lower priority numbers. And have the more generic rules that have a broader definition lower in the list.



AND and OR, easy mistakes

See this example. It is an attempt to check if someone buys for one of the events and has a specific tag. How this has been set up triggers the actions for much more orders then intended.


The condition has the [OR} on two events. but also on the lower group with [Customer has tag] statement. The lower group has only one statement, therefor the [AND|OR] toggle is inactive, you can see this by the colors and because it does not respond to clicks.

The effect is that now for every customer with this tag or for everybody with one of the events in the order the actions of this rule will be executed. 

The correct setup is like this:


Here you see that the [Customer has tag] statement AND the group below must be true. The group below is true if one of the two events is in the basket. 

Target persons not having a specific membership.

You want to promote a membership to persons buying something. For example persons buying 10 or more tickets, but are not a specific member.  You first idea might be to set it up like this.


The rules are taken literally and the above actually does:

-  Check if the customer has an active membership that is not equal to type [Goldmember]


-  Check if the customer has an active membership that is not equal to type [Silvermember]

This works as long as a customer has a membership, any other than the two mentioned. But you want to target anybody without these memberships, also persons without any membership.

The correct way to do this is like this:


Here you check if the customer has zero memberships of type [Silvermember]. This works also for customers without any membership.  This is then done for the other membership type also. 

You can do a check for customers not having a certain customer tag. This should be set up in similar way.