An add-on is an optional item a member can buy with a membership, such as a subscription, badge, or extra event seat. Add-ons belong to add-on types, and each add-on can use one price for every membership package or a separate price for a specific package. This article explains how to create add-on types and add-ons, control who can buy them, and set prices. For the membership types and packages you can connect to an add-on, see Chapters, Sections, and Add-Ons.
Where to Find It
In the Membership & Committees Console, go to Setup, then:
- Add Ons › Types to create or edit add-on categories, such as "Publications" or "Merchandise."
- Add Ons › Add Ons to create or edit add-ons, and to open an add-on's own page, called the Add On 360°, where you add prices.
Create an item as a membership add-on when members need to see and choose it in the Portal, or when an organization administrator needs to choose it for a specific covered individual during a process. A generic product used only to collect payment does not support either option.
From the Add On 360°, select Create Dues Product to price the add-on. Create Dues Product appears only after you turn on Add On Dues on the add-on and save it. Before that, the dues product field you see is not where you enter a product or amount directly. After you price the add-on, members can buy it during join and renewal applications when the type and eligibility restrictions below allow it.
Add-On Type Settings
| Setting | Options | Default | Effect |
|---|---|---|---|
| Name: | Any text | — | Required. Staff see this name when they choose an add-on type. |
| ID: | Generated from the name; letters, digits, underscores, and hyphens | Generated | Required. You set it once, and you cannot change it after you create the type. |
| Status: | Active / Inactive | Active | When a type is inactive, Rhythm leaves the type and its add-ons out of Setup pickers. |
| Deletion Protection: | On or off | Off | Only Rhythm staff see this. When this is on, the type cannot be deleted. |
| Only certain types of members can purchase add ons of this type | Checkbox, revealing a membership-type list | Off | Turns on the type-level restriction described below. |
| Membership-type list | Select one or more active membership types | Empty | These membership types can buy add-ons of this type. Rhythm refuses the save if the checkbox is on and no type is selected. |
| Portal Description | Rich text | Empty | Members see this text when they choose add-ons of this type in the Portal. |
Tip
An add-on appears on a membership application only for the membership types added to its type. If a member's package does not show an add-on you expect them to see, edit the add-on type and add the missing membership type. Restricting an add-on type to organization membership types, instead of allowing individuals, can also help avoid override conflicts caused by individuals buying it directly.
Warning
If a member cannot buy an add-on and sees a message that their membership type is not allowed to have it, check the membership-type list on the add-on type. A missing or incorrect entry there can cause this error even when the restriction looks like it should allow the purchase. The same restriction can block a renewal when the add-on type does not allow the membership type being renewed. It can also cause a page transition error, instead of automatically reconciling the add-on, when a member who holds the add-on tries to change to a membership type that the add-on type does not allow.
Add-On Settings
| Setting | Options | Default | Effect |
|---|---|---|---|
| Type: | An active add-on type | The type last chosen in this browser | Groups the add-on and controls who can buy it when the type restricts membership types. Rhythm marks this field as required, but you can save an add-on without one. |
| Name: / ID: | Text / generated | — | Required. The ID is set once, when you create the add-on. |
| Status: | Active / Inactive | Active | An add-on with no status, or one saved as inactive, is not available to buy. |
| Deletion Protection: | On or off | Off | Only Rhythm staff see this. |
| Eligibility Criteria | Switch, revealing a rule builder | Off | Limits the add-on to people who meet the criteria you build. If you turn the switch on, you must add at least one rule. If you turn it off and save, Rhythm removes any stored rules. |
| Hide this add on from the portal | Checkbox | Off | Intended to keep the add-on out of the Portal's add-on chooser. |
| Members can purchase more than one of this add on | Checkbox | On | When this is on, a member can choose a quantity. When it is off, they can buy only one. |
| Add On Dues | Switch | Off | Marks the add-on as one that costs money. Turn this on before you add prices from the Add On 360°. |
Warning
"Hide this add on from the portal" does not currently keep the add-on out of the Portal. The Portal still includes an add-on with this box checked when it offers add-ons to a member, and an application can still charge for it. If you need to stop members from buying an add-on, make it inactive instead.
Tip
"Members can purchase more than one of this add on" controls the quantity on a single order. A separate Purchase Limits control, edited from the add-on's dues product, limits how many times the add-on can be purchased over a period or over the member's lifetime. It is enforced across every order, not just one order.
Pricing an Add-On
After Add On Dues is on, open the add-on's Add On 360° and select Create Dues Product:
| Setting | Options | Default | Effect |
|---|---|---|---|
| Select a package: | An active membership package, or blank | Blank | Leave this blank to make the price the catch-all, which is charged for every package that does not have its own price. Choose a package to price the add-on for that package only. |
| Name: / ID: | Locked | Built from the add-on and package names | Rhythm regenerates these automatically whenever you change the package. |
| Price | Currency amount | — | The add-on's price for the chosen package, or for every package if you leave the package blank. |
When Rhythm builds an application's order, it first looks for a price for the applicant's chosen package. If it does not find a package-specific price, Rhythm uses the catch-all price. If Add On Dues is off, or the add-on has no price at all, Rhythm does not add an add-on line to the order.
Tip
You do not need to price an add-on separately for every package. One catch-all price, including a price of zero, covers every package that does not have its own price. Add a package-specific price only when that package should cost something different.
Tip
Setting up an organizational membership with included seats and extra paid members takes more than this add-on setup. You also need a membership type, a membership process, and a package configured for that organization membership, in addition to attaching the dues product here. For an organization process, whether an administrator can choose which assigned individual receives an add-on depends on that process's Organization Options setting "Allow organizational admins to modify individual's add ons." When it is on, both staff and Portal users can make that assignment.
If you are replacing an initiation fee that was set up as a miscellaneous product with a bundled membership add-on, the add-on reports as a different product type in financial reporting. You can still configure the add-on's financial setup to use the same G/L accounts. To make a bundled initiation fee add-on available on a package, edit the membership package and add the add-on under its Bundled Products section. Choosing Regular Bundling there lets the initiation fee line item appear normally on the order.
Tip
Add-on pricing can also come from a formula instead of a flat price. A formula can check whether an add-on was already selected, for example with arrayIncludesPropertyValue(add_ons, 'add_on_id', 'ID_OF_THE_ADD_ON'), or count selections in a multi-select custom field to charge only beyond a free threshold, for example length(field__array) > included_count ? (length(field__array) - included_count) * unit_price : 0. You can also use a conditional special-pricing rule so one dues product charges normally the first time but resolves to $0 when the member already has the qualifying add-on. That prevents a later change process from charging for the same add-on twice.
Warning
Add-on special pricing is evaluated from the member's existing membership and package eligibility, not from the package selected in the application currently in progress. This is expected because the pricing logic uses already-recorded membership information, not an in-progress purchase choice. Testing special pricing with a contact whose existing eligibility does not match what you are about to select can give a misleading result.
A single add-on also cannot reliably be free for one workflow and charged for others when the difference depends on which form or process is used. For example, making it free through a change-of-affiliation process but charged at join or renewal is not reliable. Custom conditions can usually handle only one of those scenarios at a time, not route between all of them.
Add-Ons Bought by a Contact or by an Organization
An add-on you sell through a change-affiliations application process belongs to whichever Customer Type: that process uses. Set the process's customer type to Contact to sell the add-on to an individual contact. Set it to Organization to have the add-on belong to the organization instead, where only an admin contact acting on the organization's behalf can buy it.
Tip
If your membership packages already let an organization buy additional seats by choosing a quantity, think twice before also exposing a separate add-on for extra seats on the same purchase path. Offering both can lead a purchaser to double-count how many extra people they are paying for. Remove the add-on if the package's own seat purchasing already covers the need.
Dependencies and Precedence
- Type restriction limits who can buy the add-on; eligibility criteria narrow it further, and each is checked at a different point. Rhythm checks the membership-type restriction only when it builds an application's order. It does not filter the Portal's own list of add-ons a contact or organization may buy, and it is not checked when you attach an add-on to a membership directly in the Console. Eligibility criteria work differently: Rhythm evaluates them when it decides which add-ons to offer a contact or organization, so someone who does not meet the criteria typically will not see the add-on there. In practice, an add-on with eligibility criteria can sometimes still appear while a member is filling out a membership application, then produce an error only after they select it and try to continue.
- A price naming the applicant's package wins over the catch-all price. If two prices name the same package, or you create two catch-all prices, Rhythm does not guarantee which one is charged, so avoid duplicates.
- A price is checked whether or not it is active. When Rhythm prices an order, it does not skip inactive prices, and it reads at most the first 500 prices it finds for the add-on.
- Rhythm intends to limit the total number of add-on price products your Rhythm account can hold, but that limit is not currently applied, so you are not stopped from creating more.
- Making an add-on inactive does not, by itself, remove its Add On section from an application form. To take an add-on off a form's signup experience, remove the Add On component for it from the application form. Check any conditional visibility settings on that component too.
- A membership renewal form needs the Add-Ons component to control what carries forward. If a renewal form does not include it, Rhythm can automatically include an add-on in the member's renewal order. Adding the Add-Ons component lets you deselect an add-on that is no longer offered, so it does not continue into future renewals.
- Use the membership add-on ID field, not the generic Add Ons field, for mass updates. Mass Update on membership add-ons is matched by the add-on's own ID field. The generic Add Ons expression field is not the right target for this operation.
Change Impact and How to Revert
- Turning an add-on type or an add-on inactive removes it from Setup pickers immediately. It does not undo anything already sold. It also does not stop a membership package configured to charge automatically for members beyond an included limit, because that additional-member charge comes from the package's own configuration, not from this add-on's status. In that setup, additional seats are not created by a commerce add-on product. Members are added through the ordinary membership process, and Rhythm applies the extra-member fee automatically once they exceed the included amount.
- Turning off Eligibility Criteria and saving removes the stored rules. To restore them, you need to rebuild the criteria.
- Deleting is blocked while something still uses the record:
- You cannot delete an add-on type while any add-on belongs to it.
- You cannot delete an add-on while a price, an application-process rule, an application, or a membership names it. Delete its prices first.
- You cannot delete a price product while a membership package charges for it as an extra-contact price.
- Deleting the last reason a chapter is blocked from deletion, or the last price on an add-on, removes that block.
Permissions
Creating, editing, and deleting add-on types, add-ons, and their prices are Console actions available to a Membership administrator. If your account restricts who can reach Setup, ask the person who manages your Rhythm account's security roles to grant access to add-ons.
Validation and Errors
| What you see | Meaning and what to do |
|---|---|
| A red warning icon and "A record already exists with this name." beside ID: | The generated ID is already in use. This warning does not block saving. Change the name if you want a different ID. |
| The save is refused with a message about Eligibility Criteria | You turned on the switch without adding any criteria. Add at least one rule. |
| A server error when deleting an add-on type, add-on, or price product | Something still names the record. Remove that reference first, as described in Change Impact above. |
| An add-on appears unexpectedly on a renewal order | Check the add-on's own configuration and the renewal application or form setup. As a temporary step, you can remove the line item from the order summary by hand. |
| A member you expect to be eligible cannot see or buy an add-on | Compare the add-on's Eligibility Criteria with that contact's current field values. The criteria check the contact record as it stands today, so a value changed after the criteria were written can make someone ineligible when you expect them to qualify. Testing with a specific chapter, dues product, and contact can confirm whether the criteria and the contact's stored answers match. |
| An add-on line appears on a renewal order you did not expect | Check the add-on's own configuration, including its type restriction and eligibility criteria, and the renewal application or form the order came from. As a temporary fix, you can remove the add-on line item from the order summary by hand while you investigate. |