I have an event in CiviEvent that should be a paid event for some of our user base but should be a free event for other users.

Presently the users are grouped using smart groups, but I could also create a membership if that would be more helpful.

The main question is how do I structure my price sets so that one price set is offered to one type of user, but a different price set (or no price set) is offered to a different type of user?

I thought it would be possible to create different price sets and only make them available to different user types, but I haven't figured out how to do that.

I also thought about using a cividiscount code, but the challenge is that I don't want people to share the discount code. (Is there a way to make a discount code limited to a certain user group?)

Thanks for any thoughts.

2 Answers 2


You could make a civiDiscount code that automatically applies to a membership you create (easier) - or (with the latest version) I believe you could create a discount code that targets only users in your group using an API call in the advanced filter (more difficult but maybe makes more sense).

If you have the discount code applied automatically, you don't have to share it with the users. The way this could still be exploited, if you are worried about that, is if you allow multiple registrations and/or with same email. In that case the user could share their login information with another to register another ticket.

More information on the cividiscount advanced filters: https://github.com/dlobo/org.civicrm.module.cividiscount/blob/master/README.md

  • Thank you! I did not know you could do automatic cividiscounts that apply to a particular membership. I'm going to play with that and I bet it will address my use case. Dec 17, 2016 at 0:13

Edit: I forgot this was a CiviCRM extension (Group-Based Pricing). My apologies. Luckily it's very easy to use.

I haven't used CiviDiscount but what I am using right now is Price Sets with Radio, Select, or Checkbox price fields. Within those, you can edit each option, and limit the visibility to certain groups. (I actually just posted asking if there's a way to do this with the "Text / Numeric Quantity" price field because it doesn't have the same options available).

  1. Create a Price Set with the fields: Radio, Select, or Checkbox. Fill out all price options, details, save it, and close the popup window.
  2. Click on Edit Price Options
  3. Click on Edit Option for the price that should have limited visibility.
  4. Limit Price Option To the group(s) you want to see this price option.

This also allows for people to pay the "full price" if they feel generous.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.