Skip to Content
RhythmHelp Center
/

Available Documentation

  • Platform
  • CRM
  • Portals
  • Security & Settings
  • Accreditation
  • Membership
  • Finance & Billing
  • Orders & Inventory
  • Events
  • Certifications
  • Awards
  • Careers
  • Fundraising
  • Integrations
  • Sponsorships
  • Submissions

Coming Later

  • DocumentsComing Soon
Membership
  • Overview

Subjects

  • Concepts
  • Tasks
  • Portal
  • Configure
  • Reference
    • Overview
    • Create and Maintain Elections Through the API
    • Look Up Elections Through the API
    • How Online Stores List and Sell Membership Packages
    • Record and Manage Ballots Through the API
    • Section Data Available Only Through the API
  1. Home
  2. Membership
  3. Reference

How Online Stores List and Sell Membership Packages

online store ‧ package catalog ‧ sell membership packages ‧ hide from online store ‧ storefront membership ‧ suggest donation ‧ membership catalog api

On This Page
  • Route
  • Request
  • How the Listing Is Built
  • Fields Returned
  • Keep a Package Out of an Online Store
  • Suggested Donations
  • Errors
  • Related

When an online store integration asks Rhythm which membership packages it can sell, Rhythm returns only active, visible packages from active, visible membership types. The store’s include and exclude lists narrow that set, and the response includes only the display fields available to storefront integrations. This is a public storefront listing, not a Console screen.

Route ​

Method and path Purpose 
POST /packages/{tenantId}/public/onlineStore List the membership packages and membership types a store can sell 

Request ​

Field Values Default Notes 
membership_type_restriction none, include, exclude none Keeps only the listed types, removes the listed types, or does not filter by type. 
membership_type_ids List of identifiers — Required when membership_type_restriction is include or exclude. 
membership_package_restriction none, include, exclude none Uses the same pattern for individual packages. 
membership_package_ids List of identifiers — Required when membership_package_restriction is include or exclude. 

An include restriction with an empty identifier list is valid and returns no results. Rhythm ignores any extra fields beyond these four in the request.

How the Listing Is Built ​

Rhythm processes a request in this order:

  1. Load every package in your Rhythm account.
  2. Apply the membership-type restriction.
  3. Apply the membership-package restriction.
  4. Load the membership type for each package still in the list.
  5. Remove anything excluded by the visibility rules below.
  6. Return only the display fields.
Rule Effect 
A membership type is inactive Rhythm drops every package of that type. 
A membership type is hidden from the Portal Rhythm drops every package of that type. 
A package is hidden from the Portal Rhythm drops the package. 
A package is hidden from the online store Rhythm drops the package (see below). 
A package is inactive Rhythm drops the package. 

A store’s own restrictions cannot override these visibility rules. A membership type can still appear in the response with no packages under it when the type passes the rules, but package-level rules remove all of its packages.

In the Console, you hide a package from the Portal with the Hide this package from the portal checkbox in the package's Membership & Renewal Information section. Portal visibility also depends on the package's eligibility criteria, so a visible, unhidden package can still be unavailable to a shopper who does not meet those rules. An inactive package works the same way in the Portal, which means members never see it there, but staff can still find and edit it in Console search.

Tip

If a package seems to be missing from a storefront listing, reproduce the issue through the storefront's own order flow with the membership type you expect. Do not test through a Membership application process, because storefront listings and application processes use different eligibility paths.

Warning

When a storefront purchase is for a child organization's membership but bills a parent or other bill-to organization, Rhythm can evaluate eligibility against the paying organization instead of the organization receiving the membership. This can produce an ineligibility error even though the receiving organization actually qualifies.

Fields Returned ​

Rhythm returns only the fields below. Everything else on the type or package record is left out, including the package’s own display order and image.

Record Fields 
Type id, name, universal_shopping_cart_image_uri, display_order, display_in_portal_as 
Package id, name, price, member_price, membership_type_id, enable_special_prices, display_in_portal_as, description 

member_price is documented as the package’s renewal price. Pricing and special-price rules decide what a shopper actually pays at checkout, not this listing.

A Store Cannot Sort Packages in Your Own Order

Because package display_order is not returned, a storefront cannot reproduce the package order you set in the Console from this listing alone.

Keep a Package Out of an Online Store ​

A package’s hide_from_online_store field keeps it out of every online-store listing while leaving it available in the Portal. This is separate from hide_from_portal, which controls Portal visibility. There is no Console control for hide_from_online_store; setting it requires calling the package API directly.

Suggested Donations ​

A package can carry a list of fundraising products and suggested amounts in suggest_donations, so those donations can be proposed at checkout. Each entry names a fundraising product that must already exist, and Rhythm will not let you delete a fundraising product while a package still names it. Create and maintain those fundraising products in Finance & Billing setup, outside the membership application area; the package only references a product that already exists there. There is no Console control for this list, so you can only set it through the package API. This article does not confirm whether any checkout experience currently reads it.

Errors ​

Response Cause 
400 InvalidRequest: … A restriction value is something other than none, include, or exclude; a list is sent as a single value instead of an array; or include or exclude is sent without the identifier list. 
401 Unauthorized The request carries no identity. 
A failed listing with no specific package-level error A remaining package’s membership type could not be loaded, so the whole response fails instead of dropping only that package. 

Related ​

  • Add-Ons, Their Types, and Prices
  • How an Application's Order Is Priced

Continue in This Subject

PreviousLook Up Elections Through the APINext Record and Manage Ballots Through the API

Related Articles

  • Add-Ons, Their Types, and Prices

    Group optional extras into add-on types, create an add-on members can hold once or in multiples, restrict who can buy it, and price it for one membership package or every package.

  • How an Application's Order Is Priced

    How Rhythm builds the priced order behind a membership application, from the package or change fee down to chapter, section, and add-on dues, seat charges, and cross-sells.

  • Coupons

    Create, review, change, and retire membership coupons; choose what a coupon discounts and for whom, cap its discount, and limit how many chapter or section dues lines it can reduce.

On This Page

  • Route
  • Request
  • How the Listing Is Built
  • Fields Returned
  • Keep a Package Out of an Online Store
  • Suggested Donations
  • Errors
  • Related
Rhythm Help Center© Rhythm Software

Search article titles, settings, tasks, and troubleshooting topics. Press Enter to see results.

Browse Platform Documentation