Is it possible to have a CiviEvent page that offers a membership, and if you select that membership, receive a discount on certain price set options in the same form?

I found this: https://github.com/aghstrategies/com.aghstrategies.eventmembershipsignup

However it remains unclear if it will do the above.

Things I've considered:

  1. Webform CiviCRM. Can't use it because it does not support complex price sets and loses the abilities of Civi to change/update registrations.

  2. Drupal Commerce / Rules - same as above.

  3. Having people sign up for Membership using Contribution Page, pay, then go to Event page, pay. Two payments, too many steps.

Thank you for your help.

Reasoning: we want to encourage people to join as a Member to receive a discount from our event and have it done on one form. Currently there is no easy pathway for this AFAIK.

4 Answers 4


The Event Membership Signup extension is designed for this purpose--to give a discounted price for the membership/event combo--but it won't help in certain complex scenarios.

If your event fee is $100, and your membership fee is $50, and you want to give a $20 combo discount, there are two ways to do it. You could add a new price field with a single checkbox option for $30 membership, or you could add a new option to your existing event price field offering a registration and membership together for $130.

On the other hand, you cannot (without custom code) say that selecting the membership option gives 20% off on each of a bunch of possible add-on items. The discount comes from the price you assign to the option that gives you the membership, so the discount can't be variable.

  • Makes sense. Any samples or advise about how to make custom code that would do as I described below? If one chooses the Membership Price Field (normal price), then it would dynamically reduce the price of other options by 10%. If they de-selected the membership, it would revert back to normal price.
    – Zachary
    Commented May 22, 2016 at 1:54
  • @Andrew - great little extension - voted you up! Commented May 22, 2016 at 13:58
  • 1
    @Zachary check out hook_civicrm_buildAmount which is the hook you'd use to discount the other selected items when the membership item is selected. It won't provide your users immediate feedback on the discount--you'll need to write Javascript to update prices when they select the membership add-on--but it will display correctly on the confirmation and thank-you pages.
    – Andie Hunt
    Commented May 22, 2016 at 15:33
  • @AndrewHunt I am going to accept your answer because the comment you left was what I consider to be the solution in tandem with the extension mentioned.
    – Zachary
    Commented May 22, 2016 at 19:25

The info.xml of the extension you linked to strongly suggests it will do what you want. You specify that certain price options include a membership. If that doesn't work, you're going to need to write an extension to handle this. Memberships aren't available on event pages without an extension.

  • From the Extension page: "When people sign up for an event, you may want to offer registration for an additional event or membership dues while they're checking out. This extension ties event registration or membership to a price option, so you have full control over the price--potentially offering a discounted bundle rate." You can offer a discount on the membership itself (as a price option) using Cividiscount. However, I do not see a way to have that price option selected, and then based on the selection, discount other price options on the form.
    – Zachary
    Commented May 22, 2016 at 0:03

We have done this with Drupal Commerce and Rules... it gives you lots of flexibility but does involve a significant amount of work.

  • Do you experience Drupal Commerce/Rules being able to be used for Event Management purposes? That is why we are using Civi primarily, because we can list participants, change their registrations, send receipts/emails, and use CiviMail to do mailings, automated reminders, etc.
    – Zachary
    Commented May 24, 2016 at 17:19
  • 1
    We hooked Drupal Commerce into CiviEvents using rules so our client could get the best of both worlds!
    – Andrew
    Commented May 25, 2016 at 21:47
  • Any chance of a writeup ? :)
    – Zachary
    Commented May 27, 2016 at 5:07

I have done a lot of this kind of discount in the past using jquery. My approach would be to add the discounted prices in the event price set with the undiscounted ones as a multiple radio option and have jquery hide them onload. I would then add a trigger to either the role selection or an additional price set item that will unhide the appropriate event price.

  • If javascript is disabled, then the user could see both and choose the cheaper one? Also, this may complicate reporting - we'd have to do add the results of both fields together to get the right count (not a big deal, just extra work)
    – Zachary
    Commented May 24, 2016 at 17:19
  • 1
    I did a JavaScript enabled and browser version check before the forms would load. All fields in the same price set will be added together.
    – Generic
    Commented Jun 4, 2016 at 8:14
  • 1
    To help with reports, I would sometimes add a hidden field (tag, group or custom question) that jquery triggered when the price selection was made.
    – Generic
    Commented Jun 4, 2016 at 8:30

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.