CiviDiscount is a popular extension for CiviCRM that provides tools for building coupon-code and automated discounts for event registrations and memberships. It has flexible and powerful options, but not the most intuitive interface. This primer will walk through the key steps in constructing a discount record.


What is the discount?

The first step is to determine what the discount will be. This is the simplest of the three steps: the amount will either be percentage based or a fixed amount. Use the Discount Amount field and discount type dropdown to configure the amount.

Where is it applied?

CiviDiscount supports applying discounts to either event registration fees or membership fees. To discount events, expand the events panel and choose to discount either specific events or all events of the selected event types. Here is where it gets tricky though: in addition to those two options, you also have the ability to filter by specific price set fields using the selector in the Additional Options block. While this provides significantly more fine-grained control over your discounting ability, it can also be a bit challenging to work with. The number of price sets and their corresponding price fields can quickly grow in size depending on how you use the system. While the selector does group the fields into their sets, it still can be cumbersome to find the right fields. Remember that the tool is searchable -- as you begin typing characters the list will filter to display only matching options. To discount memberships, expand the memberships panel and choose which membership types will be discounted. As with events, this too can be controlled using the price field options selector.

How is it applied?

Discounts are applied in one of two ways: either through a code that is provided to end users who will enter it into the form, or through one of the automatic discount options. Every discount you create must have a code generated for it -- this becomes the unique identifier for the discount record. But it's only used in the first use case. In such a situation, you may choose to manually define a code that is meaningful to the end user (e.g. "Oct2016" for a membership promotion held in October). Click the "Random" button to auto-generate a unique hash value. Keep in mind that once the discount code is created, it cannot be modified.

As the name suggests, automatic discounts will be applied to users matching the criteria without requiring they enter in the code. Once one or more options are selected from the available fields, the automated behavior will kick in. One note: keep in mind that automated discounts are only activated when CiviCRM knows who the user is -- either because they've logged in or because they accessed the form using a checksum token.

The most frequently used discount method is membership type and status. Using a combination of these, you can provide discounts for members in good standing attending events. For example, you might choose severel membership types and then select statuses of New, Current, and Grace to grant the discount to active members.

Other options

There are a few additional options that are worth mentioning in passing.

  • usage limit determines the maximum number of times this code can be used. This is useful if you want to extend a discount to the "first 10 people to register for an event," or a similar promotion.
  • activation and expiration date will limit when the discount is active.
  • organization will associate the discount with a specific organization, which may be useful for tracking and reporting purposes. 

Final Tips

When you first begin to use the CiviDiscount tools, be sure to test thoroughly. In particular, if you are using the automatic discount features or applying the discount based on price set fields, make sure you carefully replicate the situation where the discount will be applied -- as well as situations where it should not be applied (e.g. visit the form as a member and a non-member). Discount code usage is tracked through a tab on the contact record, providing a helpful way to see who has used which codes.