Our primary membership sign up is via a dropdown list of options at different prices. Regardless of which option is chosen, we would like to give the sign-up person an option to upgrade (via an additional check box? to a premium version at a fixed additional price.

  • Just to clarify, did you try using other amount and add premium option that is available if the amount is big enough - like in civicrm.org/sites/civicrm.org/files/after_premiums2.png (cf. civicrm.org/blogs/micah/…) ? And if yes, what is missing ?
    – samuelsov
    Commented Mar 30, 2015 at 13:07
  • What do you mean by "premium option" in the context of having options in the dropdown? What do people get from the premium option? It would be helpful to know if the premium option is just a way to donate more (like a "contributing" member) or whether it's another set of benefits/services.
    – Andie Hunt
    Commented Mar 30, 2015 at 14:04

3 Answers 3


This could be done by creating a price set with the premium option, and then using the civicrm_post hook to make the change once the transaction was successfully completed in the DB.

  • I was hoping for something that did not require coding. That is beyond my skill set.
    – Dave T
    Commented Mar 29, 2015 at 22:12
  • Unfortunately that is likely the one that would involve the least coding. Anything else would involve coding to check a custom attribute of the membership to tell whether or not the premium option had been selected. Commented Mar 29, 2015 at 22:15

Pretty much the only things you can do without coding are by setting up a price set with two fields. The first field would be the membership types in a select or radio list. The second field would be a checkbox field with one option. It could be a regular field without any membership tied to it, and you'd just be collecting extra money if someone selects it.

If you wanted to track an extra set of benefits, you might create another membership type with a different membership organization and tie the checkbox to that. The membership organization indicates that it's not an alternative to the main membership but rather a membership that you can hold simultaneously with the other one. It'll make your life more complex in some ways, but you'll be able to quickly see who's got the premium membership.


Although I don't think this will satisfy Dave T's need for something without any coding, the following would be my preferred way.

Let's say you have three membership types, each with premium/non-premium options:

  • Student member
  • Individual member
  • Family member

You'd create six membership types in CiviCRM:

  • Standard Student member
  • Standard Individual member
  • Standard Family member
  • Premium Student member
  • Premium Individual member
  • Premium Family member

Then, set up a price set with two fields. One is radio buttons with one option per membership type. The other is just a single checkbox with no price (but a label saying "go premium for $100" or whatever). You add a bit of javascript to the form that does the following on page load and every time the checkbox changes status:

  • if the checkbox is checked, show the premium options, see if one of the non-premium options is selected, select the corresponding premium option, and hide the non-premium options, or
  • if the checkbox is not checked, show the non-premium options, see if one of the premium options is selected, select the corresponding non-premium option, and hide the premium options.

The result will be a single membership type, so it's easy to maintain, report, etc. However, from the member's perspective, the experience is one of an add-on rather than navigating among a bunch of options.

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.