Skip to main content

CiviCRM Meetup -- Advanced Techniques for Contributions & Memberships

The latest CiviCRM Meetup, this last Thursday, was about an interesting topic to CiviCRM developers: Advanced Techniques for Contributions & Memberships.

In preparation for the meetup, we built a demonstration and detailed how-to for this event. The complete how-to is available on Skvare's new Demonstration website at The use case for the demonstration is a national organization that collects additional membership fees, depending on the state residency of the member. We provide a method for doing so from a contribution form, using a CiviCRM module extension with PHP hooks and several other jQuery modifications to the form contained in a javascript file. When a user goes to the form, they are presented with a select field from which they choose the state they are located in. Upon choosing the state, cities options are loaded into a city select field; a State fees field is populated with the proper fee amount for the state. Submitting the form adds the state fees to the membership amount.

Instead of using price sets, we created contact sub-types of the organization type, and added a custom field to store the fee data. This method is preferable to price sets once the number of options grows beyond 10-20. It also allows the admin users to modify the amounts, use CiviCRM's built in contact administration to manage the data, and allows the flexibility of adding additional custom fields if, for example, the localized due amounts are different for different membership types. The example could easily be used for other scenarios such as school districts or any other type of local chapter dues of a regional or national organization.

The discussion was lively with all participants asking questions and giving valuable input. The CiviCRM Meetup group in Dallas is always interactive; it is a great forum for people to come with both questions and answers. Please visit the Dallas/Fort Worth CiviCRM meetup page to see future Meetup topics.

Share this post