A CiviCRM extension that adds advanced controls to membership types for renewal windows, upgrade paths, group restrictions, and custom membership reporting.
For fixed-period memberships (e.g. January 1 – December 31 annually), you can block early renewal until the Fixed Period Rollover Day is reached.
- Enable "Limit renewal to 1 period ahead" on the membership type.
- On the contribution page, submitting a renewal before the rollover day shows an error telling the member the earliest date they may renew.
- If the membership has already expired, renewal is always permitted regardless of the rollover day.
For rolling memberships (duration relative to join date, e.g. 1 year from signup), you can define how far in advance of the end date renewal is allowed.
- Set "Disallow renewal until" with a number and unit (days/months).
- Example: setting 30 days means renewal opens 30 days before the membership expires.
- Submitting a renewal before that window opens shows an error with the earliest allowed renewal date.
Controls which membership types a contact is allowed to change to on a public contribution page, based on their current active membership type(s).
- Configure "Member can change to" with one or more target membership types.
- On form submission, the extension checks whether the submitted membership type is a valid upgrade from any of the contact's current active memberships.
- If the contact has multiple active memberships, the upgrade is allowed if any one of their current types permits it — the restriction only applies when no current type allows the selected upgrade.
- When blocked, the error message lists the allowed upgrade paths for each restricted type.
Limits membership signup or renewal to contacts who belong to specific CiviCRM groups.
- Configure "Only allow members of groups" with one or more groups.
- On form submission, if the contact is not a member of any of the required groups, they receive an error listing the required groups.
- Works for logged-in contacts whose group membership is known.
Extends the group restriction to anonymous (not logged-in) form submissions.
- Enable "Apply renewal restrictions to unauthenticated users" on the membership type.
- When enabled, the extension attempts to identify the contact from submitted form fields using CiviCRM's unsupervised deduplication rules, then applies the group restriction.
- Privacy note: enabling this reveals whether a matching contact record exists for the submitted details, which may disclose information about existing members.
A custom search available under Search › Custom Searches that lets administrators find contacts based on complex membership criteria:
- Include membership types — contacts who have one or more of the selected types.
- Exclude membership types — contacts who do NOT have any of the selected types (useful for finding members of Type A who have not yet upgraded to Type B).
- Membership status (include/exclude) — filter by current membership status.
- Date filters — join date, start date, and end date ranges with relative date support.
Results show contact ID, type, name, email, phone, and membership type name.
Three custom CiviCRM reports are included:
| Report | Description |
|---|---|
| Membership Donation | Combines membership and contribution data. |
| Membership Renewal | Tracks upcoming and past renewals. |
| Separate Membership Amount | Reports membership fees separately from other contributions. |
All settings are configured per membership type at Administer CiviCRM › CiviMember › Membership Types (edit an existing type).
| Setting | Applies to | Description |
|---|---|---|
| Member can change to | All types | Membership types this type is allowed to upgrade to. |
| Limit renewal to 1 period ahead | Fixed only | Block renewal before the Fixed Period Rollover Day. |
| Disallow renewal until N unit | Rolling only | Open the renewal window N days/months before expiry. |
| Only allow members of groups | All types | Restrict signup/renewal to contacts in these groups. |
| Apply renewal restrictions to unauthenticated users | All types | Extend group check to anonymous form submissions. |
Settings are stored in CiviCRM's settings store, namespaced per extension and membership
type, so they do not modify the core civicrm_membership_type schema.
- PHP 7.2+
- CiviCRM 5.65+
git clone https://github.com/Skvare/com.skvare.membershipextra.git
cv en membershipextracd <extension-dir>
cv dl com.skvare.membershipextra@https://github.com/skvare/com.skvare.membershipextra/archive/master.zipFixed Membership Type settings:
Rolling Membership Type settings:
Renewal restriction on contribution page:
Group restriction on contribution page:
Custom membership search:
Membership change Rule settings:
Membership change Rule error message:
Developed by Skvare, LLC for the CiviCRM community.
Skvare LLC specializes in CiviCRM development, Drupal integration, and providing technology solutions for nonprofit organizations, professional societies, membership-driven associations, and small businesses. We are committed to developing open source software that empowers our clients and the wider CiviCRM community.
Contact Information:
- Website: https://skvare.com
- Email: info@skvare.com
- GitHub: https://github.com/Skvare
Contact us for support or to learn more.
You might also be interested in other Skvare CiviCRM extensions:
- Database Custom Field Check: Prevents adding custom fields when table limits are reached
- Registration Button Label: Customize button labels on event registration pages
For a complete list of our open source contributions, visit our GitHub organization page.






