Skip to content

Listdom Membership Addon Documentation

The Listdom Membership Addon allows you to generate revenue by selling membership packages for listings. It integrates with WooCommerce to let you define listing packages (e.g. Free, Silver, Gold plans) that users can purchase. Each package can limit how many listings a user can submit and for how long their listings remain active, along with restricting certain listing features. With this addon, you can turn your listing directory into a membership-based platform where users pay for the ability to post and maintain listings.

If you want to sell packages without WooCommerce, configure Listdom’s native engine instead. The Listdom Payments documentation and Listdom Payments Settings documentation explain how to enable gateways, checkout pages, appreciation messaging, and invoicing. After setup, membership purchases and renewals are recorded in Listdom → Payments.

Site administrators can create custom membership packages which users will buy. Each package must be associated with either a WooCommerce product or, if the Listdom payment engine is enabled, one or more Listdom Payments plans. Follow these steps to set up a membership package:

  1. Create a WooCommerce Product: In your WooCommerce catalog, create a new product that represents the membership (for example, “Gold Listing Package”). Set a price and make it a simple product (or a membership product if using recurring billing plugins). You do not need to publish this product on the shop page; it will be used internally for Listdom. If you have switched to the Listdom payment engine, build the needed payment plan(s) first so you can associate them with the package instead of a WooCommerce product.

  2. Add a New Package in Listdom: In WordPress admin, navigate to Listdom → Memberships. This section lists user memberships, but also allows managing packages. Click Add New Package (you may find this under All Packages or via an “Add Package” button).

  3. Package Settings: Configure the package in these groups:

    • Plan / Product Connection
      • WooCommerce Product: Select the WooCommerce product for this package so checkout can use that product’s pricing and renewal data.
      • Listdom Plan(s): If you bill through Listdom Payments, select one or more plans instead of WooCommerce product(s). Plans control billing details; package fields below control access rules.
    • Access Rules
      • Listing Limit: Number of listings the user can submit. Leave blank or 0 for unlimited.
      • Duration (Membership Duration): Membership length in days. Leave blank or 0 for never expire.
      • One-time Purchase: Limit purchase of this package to one time per user.
    • Listing Settings
      • Auto Confirm: Auto-publish listings submitted through this package.
      • Listing Auto Label: Auto-assign selected labels from core Listdom labels taxonomy.
      • Allowed Categories: Restrict package use to specific categories.
      • Allowed Labels: Restrict which existing labels can be assigned by users on this package.
    • Limits
      • Max Gallery Images: Maximum allowed gallery images per listing.
      • Description Length: Maximum listing description length.
      • Max Tags: Maximum number of tags per listing.
      • Max Visits: Optional visit cap (works with visibility-related behavior, if configured).
    • Dashboard Modules
      • Style: Select the package display style (or inherit category/global style).
      • Modules Toggles: Enable/disable per-package sections like Contact Details, Gallery, Custom Fields, Locations, Tags, Features, Labels, Address/Map, Price Options, Work Hours, and others shown in the package sidebar meta box.
    • Identifiers & Purchase Link
      • Package ID: Internal identifier useful for advanced references.
      • Purchase URL: Direct checkout URL you can place in pricing tables or CTA buttons. It adds the package to cart and redirects to checkout.

    Custom fields by package: With the Membership add-on, you can assign custom fields to specific packages from each custom field’s create/edit form (Listings → Custom Fields → Related Packages). In each package editor, the Available Custom Fields info box (under the Dashboard Modules area) shows the final custom fields available for that package. See Custom Fields documentation.

  4. Mass Membership (Optional): In the package edit screen, you’ll see a Mass Memberships section. This lets you assign this package to existing users in bulk:

    • All Users: Check this to give every user on the site this membership package.
    • Specific Users: If you prefer, leave “All Users” unchecked and select one or more usernames from the list to grant them this package.
    • Ignore Active Members: If checked, the system will not assign the package to users who already have any active membership. (This prevents duplicate or overlapping memberships.) After selecting, click Update on the package. The addon will automatically create membership entries for those users (free of charge) as if they purchased the package.
  5. Save the Package: Click Publish or Update to save your new package. Once saved, it becomes available for users to purchase on the front-end.

Each package you create will appear on the user’s Membership selection page (detailed below), showing its title, description, listing limit, duration, and price.

In addition to creating packages, there are global settings for the Membership addon. Navigate to Listdom → Settings → Addons tab → Membership to configure these:

  • Default Membership: Choose a package to automatically assign to every new user upon registration. This is useful if you offer a free starter package. For example, select a “Free Trial” package here and any newly registered user will immediately get that membership without payment. If set to None, new users start with no listings until they purchase a package.
  • Import Membership: Select a package that will be used when importing listings via CSV/JSON/Excel. If you import listings in bulk (perhaps as an admin or via a script), those listings need a membership association. The chosen package will be applied to imported listings (typically, you might create an “Import” package with unlimited listings and never expiring for this purpose). If left None, imported listings will not be tied to a membership, and they cannot be edited by front-end users until assigned.
  • Auto Order Complete: Toggle this On (Recommended). When enabled, any WooCommerce order for a membership product will automatically be marked Completed as soon as payment is done. This means the user’s membership activates immediately. (If disabled, you or the WooCommerce system would have to manually complete the order before the membership becomes active.)
  • Redirect to Add Listing Form: (Visible only if Auto Order Complete is on.) Toggle On to redirect users straight to the Add Listing page after a successful checkout. With this on, once a user pays for a package, they’ll skip the typical WooCommerce Thank You page and instead land on the Listdom “Add New Listing” form, ready to use their new membership.

These settings refine how the membership workflow behaves. Usually you will set a default package if you have a free plan, and enable auto-completion and redirection for a smoother user experience.

Filter Listings by Membership Package in Shortcodes

Section titled “Filter Listings by Membership Package in Shortcodes”

The shortcode builder includes a package-based filter so you can show listings from specific membership tiers only.

  • Go to Listdom -> Shortcodes and open or create a shortcode.
  • Open the Filter Options tab.
  • Use the Membership Packages checkboxes to select the package(s) you want to include in that shortcode output.

This is useful for creating pages such as “Free Listings” or “Pro Listings” without changing listing categories or labels. For full shortcode tab details, see Listdom Skin shortcodes Documentation.

Use the [listdom-pricing-tables] shortcode to display membership packages on any WordPress page, such as a public pricing page, upgrade page, or account area. The shortcode can show available packages, the current user’s active memberships, expired memberships, and an optional package comparison table.

The shortcode also supports this alias, which uses the same attributes:

[listdom-subscriptions-pricing]
[listdom-pricing-tables]

By default, this displays the available packages section.

Use the section attribute to choose which main sections are available in the shortcode output.

ValueResult
packagesShows available packages.
activeShows the current user’s active memberships.
expiredShows the current user’s expired memberships.
allShows packages, active memberships, and expired memberships.

You can combine multiple section values using spaces, commas, or pipes:

[listdom-pricing-tables section="packages"]
[listdom-pricing-tables section="active"]
[listdom-pricing-tables section="expired"]
[listdom-pricing-tables section="all"]
[listdom-pricing-tables section="packages active expired"]
[listdom-pricing-tables section="packages,active,expired"]
[listdom-pricing-tables section="packages|active|expired"]

Default value: packages.

When section is used, it automatically controls the available, active, and expired section visibility.

AttributeDefaultDescription
titleemptyAdds a custom heading above the pricing table. Example: [listdom-pricing-tables title="Choose Your Plan"].
descriptionemptyAdds a short description below the shortcode title. Example: [listdom-pricing-tables title="Choose Your Plan" description="Select the package that fits your directory needs."].
show_title1Shows or hides the title and description area. Set it to 0 when the page already has its own heading.
show_tabs1Shows tabs when more than one section is available, such as packages, active memberships, and expired memberships.
html_classemptyAdds custom CSS classes to the shortcode wrapper. Example: [listdom-pricing-tables html_class="my-pricing-table custom-layout"].
AttributeDefaultDescription
show_available1Shows or hides the available packages section.
show_active0Shows or hides active memberships for the current logged-in user. Use this on account or dashboard pages.
show_expired0Shows or hides expired memberships for the current logged-in user.
show_empty1Shows or hides the empty message when no packages or memberships match the shortcode settings.
empty_messageNo memberships or packages are available right now.Changes the message shown when the shortcode has no packages or memberships to display.
AttributeDefaultDescription
package_idsemptyLimits output to specific package post IDs. Use comma-separated IDs, such as [listdom-pricing-tables package_ids="101,102,103"].
exclude_idsemptyExcludes specific package post IDs. Use comma-separated IDs, such as [listdom-pricing-tables exclude_ids="101,102"].
limit-1Controls the maximum number of packages displayed. Use -1 to show all matching packages.
orderbymenu_orderSorts packages by menu_order, title, date, modified, ID, rand, or post__in. Use post__in to preserve the order used in package_ids.
orderASCSorts packages in ASC or DESC order.
only_purchasable0Shows only packages the current visitor is allowed to purchase.
show_purchased1Controls whether packages already purchased by the current user still appear in the available packages list. Set this to 0 for upgrade pages that should only show new options.
show_purchased_itemsemptyAlternate attribute for show_purchased. When provided, it overrides show_purchased.
AttributeDefaultDescription
show_image1Shows or hides the package image. Disable it for compact pricing cards.
show_badge1Shows or hides visual package badges, such as highlighted or featured labels.
show_price1Shows or hides package pricing information.
show_billing_label1Shows or hides billing text near the price, such as the billing period or recurring payment label, depending on the package type.
show_features1Shows or hides the package features list.
show_package_description0Shows or hides the package description text.
AttributeDefaultDescription
show_actions1Shows or hides all package action buttons. Disable this for read-only pricing or comparison pages.
show_purchase_button1Shows or hides the normal purchase button when actions are enabled and the user does not already have an active membership for the package.
show_purchase_again_button1Shows or hides the purchase-again button for eligible packages, mainly recurring packages that can be purchased again while the user already has an active membership.
show_select_button1Shows or hides the select button for valid active memberships. This button lets a user choose an active membership for the frontend dashboard flow.
AttributeDefaultDescription
show_comparison0Shows or hides the package comparison section.
comparison_titlePackages ComparisonChanges the heading above the comparison table.

When comparison is enabled, the output can compare package modules, categories, labels, limits, and other package-related features depending on the pricing table template and available package data.

AttributeDefaultDescription
available_titleAvailable PackagesChanges the available packages section title and tab label.
active_titlePurchasedChanges the active memberships section title and tab label.
expired_titleExpiredChanges the expired memberships section title and tab label.

Most show or hide attributes accept these enabled values:

  • 1
  • true
  • yes
  • on

Any other value is treated as disabled.

[listdom-pricing-tables show_image="true" show_price="yes" show_actions="on"]
[listdom-pricing-tables show_image="0" show_price="0" show_actions="0"]
[listdom-pricing-tables section="packages" show_tabs="0" show_comparison="1" title="Choose Your Membership" description="Compare packages and select the best option for your directory."]
[listdom-pricing-tables section="active expired" show_tabs="1" active_title="Active Memberships" expired_title="Expired Memberships"]
[listdom-pricing-tables section="packages" only_purchasable="1" show_purchased="0" title="Available Upgrades"]
[listdom-pricing-tables show_image="0" show_badge="0" show_features="0" show_package_description="0" show_billing_label="0"]
[listdom-pricing-tables show_actions="0" show_comparison="1" title="Compare Plans"]

Once the Membership addon is active, users will see a new “Memberships” section in their Listdom front-end dashboard. Here’s how the process works for an end user:

  • Dashboard Menu: In the user’s dashboard (usually accessed via a page using the [listdom_dashboard] shortcode), a new menu item Memberships appears. Users can click this to manage their membership or buy a new one.
  • Available Packages: The Membership dashboard page will list all the available packages (the ones you created) with their name, price, how many listings they allow, and how long they last. Users can compare the plans here.
  • Purchasing a Package: When a user selects a package to purchase, they’ll typically see a “Buy” or “Select Package” button (often represented with a shopping cart icon). Upon clicking it, the addon will add the corresponding WooCommerce product to their cart and take them to checkout. The user proceeds through the WooCommerce checkout and payment as usual.
  • Order Completion: If Auto Order Complete is enabled, the moment payment is successful, the order status changes to Completed automatically. The Membership addon will then create a new membership entry for the user tied to the package they bought. At this point, the user has an active membership and can use their package.
  • Redirect to Add Listing: With the redirect option on, the user is forwarded straight to the Add Listing form after checkout. They will see that they can now submit listings (up to the limit of their package). If the redirect is off, they’ll see the standard WooCommerce thank-you page and can navigate to add a listing on their own.
  • Using the Membership: Once their membership is active, the user can add up to the number of listings allowed by their package. The addon associates each new listing with the user’s membership. The user’s membership status and usage (e.g., how many listings used out of the limit) may be displayed on the Membership dashboard page, so they can keep track.
  • Expiration and Renewal: If the package has a duration, then from the date of purchase, it will expire after that many days. Upon expiry, the user’s listings might be automatically expired (removed from public view) by the addon. Users would then need to renew by purchasing a new package. For one-time packages, they can purchase a different package if one-time prevents re-buying the same. If you are using a recurring payments plugin (see note below), renewals can happen automatically.
  • Switching Packages: If a user still has an active membership but wants to upgrade to a higher package, they can purchase the new package as well. Listdom Membership addon allows users to have multiple membership entries. However, a single listing can only be associated with one membership at a time. The user interface includes options to switch a listing’s membership if the user has more than one active (for example, moving a listing from a free package to a paid package they bought). This is handled via a dropdown or button on the listing in the dashboard (e.g., “Switch Membership” action).
  • Membership Management: In the front-end, users can see details of their current membership (package name, remaining listing count, expiry date). They cannot manually extend it except by buying another package. Admins, however, could extend or modify memberships from the back-end if needed.

On the WordPress admin side, the Listdom → Memberships page shows all user memberships as custom post entries (post type: Listdom Membership). Each membership record includes the user (author), the package, status, and other metadata:

  • Statuses: Memberships can have statuses like Active (publish), Expired, Canceled, or On Hold. These statuses update automatically based on time or admin actions:
    • Active means the membership is currently valid.
    • Expired means the duration passed.
    • Canceled might indicate an admin or system canceled it (e.g., refunded or manually ended).
    • On Hold could indicate a paused membership (for instance, if using recurring payments and a payment failed).
  • Viewing/Editing: An admin can click on a membership to view its details (the associated package, dates, user info). You typically do not need to edit these manually, but you could adjust expiry dates or package associations if necessary.
  • Listings Association: Each listing post in Listdom will have a meta field linking it to a membership ID (lsd_subscription). Admins can see which membership a listing is under. If a membership expires, the addon (in conjunction with the Visibility addon) may expire the listings (set them offline).

In practice, most membership management (activation, expiry) is automated. Admins mainly intervene to set up packages and handle edge cases (like granting free packages via Mass Membership or troubleshooting payment issues).

Free and Paid Plans

You offer a Free package (1 listing, 7-day duration) for new users and a Premium package (unlimited listings for 30 days). A new user automatically gets the Free plan on signup, then upgrades to Premium via the Membership page to post more listings

Tiered Feature Access

Using Dashboard Modules settings, you create a Basic plan that does not allow Gallery or Video embeds, and an Advanced plan that enables all features. Users on Basic can list items with text only, enticing them to upgrade for rich media features

Recurring Revenue Model

You set up a Monthly Membership product in WooCommerce tied to a Listdom package. With WooCommerce Subscriptions, users are automatically charged each month and their listing quota renews without manual intervention, ensuring continuous revenue