Membership Plans
Commerce Free & Pro
Membership plans let students subscribe for recurring or one-time access to a bundle of courses. You set the price, billing interval, trial period, and which courses subscribers can access. Students see and compare plans on the public membership pricing page.
Overview#
Go to LMS Commerce > Memberships. From here you create new plans, see how many subscribers and courses each plan has, toggle a plan active or inactive, and export the full list to CSV.
Before you start#
Two things have to be in place, and neither is on by default.
- Turn on the Membership module. Go to Learnomy Settings > Modules and enable Membership. It ships disabled, so on a new site there is no Memberships menu at all until you switch it on.
- Connect a payment gateway. A plan with a price needs somewhere to take the money. See Payment Gateways. If you only want to try the flow first, the built-in Test gateway lets you buy your own plan without real card details.
The plans list#

The list shows every plan with columns for Title, Price, Trial, Courses (count), Subscribers (count), Status, and Actions.

Status tabs at the top filter by All, Active, or Inactive. Use the search field on the right to find a plan by name.
Row actions offer three options:
- Edit - opens the plan editor.
- Subscribers - jumps to the Subscriptions list pre-filtered to this plan.
- Delete - permanently deletes the plan. Existing subscriptions referencing the plan show "Deleted plan" in their records.
You can select multiple rows with the checkboxes and use Bulk Actions to Activate, Deactivate, or Delete a set of plans at once.
Starting from a template#
If you have no plans yet, the page shows a template picker instead of the empty table.

Four templates are available:
| Template | Price | Trial | Courses |
|---|---|---|---|
| Monthly Basic | $9/month | 14 days | Up to 5 |
| Yearly Premium | $79/year | None | Unlimited |
| Free Trial | $29/month after trial | 14 days | Unlimited |
| Custom | Blank | None | None |
Selecting a template pre-fills the editor. Every field is editable before saving.
Set up your first plan#
Step 1 - decide what the plan sells#
Answer this before you touch the form, because it changes what you fill in:
| You want to sell | Set it up as |
|---|---|
| Access to your whole catalog for a monthly fee | Monthly interval, leave Courses included empty, and rely on the plan granting access site-wide |
| A fixed bundle of specific courses | Monthly or Yearly, and tick exactly those courses under Courses included |
| A one-off payment for permanent access | Billing interval One-time (lifetime access) |
| A free tier that still requires signing up | Price 0, so members register and appear in your list without paying |
Step 2 - create the plan#
Go to LMS Commerce > Memberships and click Add New. Fill in the Essentials:
- Plan Title - what members see on the pricing page. "Pro" and "Annual" read better than "Plan A".
- Price and Billing interval - the amount and how often it recurs.
- Offer a free trial - turn it on and set the Trial length in days before the first charge.
Step 3 - choose the courses it includes#
Tick the courses this plan unlocks. Members are enrolled in every course you tick, automatically, the moment they subscribe.
Changing the list later applies to everyone already on the plan. A course you add is given to every current member in the background, a few hundred members at a time, so it can take a few minutes on a large plan. A course you remove is taken back from them, unless another plan they hold also includes it, or they hold it another way (bought it, or were added by hand). Their progress is kept.
Leaving everything unticked is a valid choice, not an oversight: the plan then grants membership without pre-enrolling anyone, which is what you want if your courses are set to "members only" and you would rather people pick their own.
Buying a course the plan already includes#
A member can buy a course their plan includes, so they keep it if their plan ends. This only applies to a course you also sell for a one-time price (pricing One-time, or One-time or members).
- On the course page, under Start course / Continue learning, the member sees "Included in your {plan} plan." and a small Buy to keep forever - {price} link. It is never the main button.
- At checkout they read: "You have this course through your {plan} plan. Buying it means you keep it if your plan ends."
- The purchase is recorded on its own. If the plan ends, the member keeps the course. If you refund the purchase, they keep the course through the plan for as long as the plan lasts.
- Someone who has already bought the course cannot buy it again, and the course's own instructor and administrators are not offered it.
Step 4 - write the selling points#
Under Features & Branding, add one bullet per line. These are the only words on the pricing card besides the price, so write what the member gets, not what the plan is called: "Every course, including new ones" beats "Full access".
Tick Highlight on pricing page on the plan you most want people to choose. Only do this to one.
Step 5 - publish it#
Click Create Plan. Save as Draft keeps it Inactive and off the pricing page, which is what you want while you are still writing.
Step 6 - look at it as a customer#
Open /membership/ in a private window. Your plan should appear as a card with its price, trial, and feature bullets.
If the page is empty, the plan is still a draft, or the Membership module is off.
Step 7 - buy your own plan#
With the Test gateway enabled, subscribe to your own plan and confirm three things: you land back on the site as a member, the courses you ticked appear in your account, and the subscription shows under LMS Commerce > Subscriptions.
This is the step people skip, and it is the one that catches a missing gateway webhook before a customer does.
On the member's Manage membership page, the Courses included section lists the plan's courses as cards that look like the catalog course card: a full-width cover (a title initial when the course has no cover), the title, and a Go to course button. When the plan includes more courses than are listed, a line under the cards shows how many more there are and links to the catalog.
Settings and options#
Every field on the plan editor#
Click Add New (or Edit on an existing plan) to open the plan editor.

The editor has a two-column layout: a main column of accordion sections on the left, and a Publish sidebar on the right.
Essentials accordion#

- Plan Title (required) - the name students see on the pricing page and in their account.
- Description - shown below the title on the pricing page card. Plain text.
- Price - the amount charged each billing interval, or the single charge when the interval is One-time.
- Billing interval - Daily, Weekly, Monthly, Yearly, or One-time (lifetime access). See One-time (lifetime) plans below.
- Offer a free trial - when on, the Trial length is the number of free days before billing starts.
- Pricing mode - Single price (one billing rate) or Monthly + Yearly (show both on the pricing page with a toggle).
- If you choose Monthly + Yearly, two additional fields appear: Price monthly and Price yearly. Students pick the option at checkout.
- Sold elsewhere - turn this on when buyers join the plan in another store (for example a WooCommerce shop) instead of at your site's checkout. See Plans sold in another store below.
- Store link - the page in that store where buyers join the plan. It appears once Sold elsewhere is on.
- Courses included - a searchable checklist of all your courses. Subscribers are auto-enrolled in every checked course. Leave all unchecked to give access without any course pre-enrolment.

One-time (lifetime) plans#
Choosing One-time (lifetime access) as the billing interval sells the plan as a single purchase rather than a subscription. The buyer is charged once, no recurring payment is set up at the gateway, and the membership never expires.
What changes across the site when a plan is set to one-time:
- The pricing card prices it as one-time instead of "/ month", and the button reads Buy for $X rather than the recurring Subscribe for $X / month (or / year, / week, / day).
- Checkout asks the gateway for a single charge, not a subscription. Nothing repeating is created at Stripe or PayPal, so there is no renewal to fail, retry, or cancel.
- The member's subscription record is stored with no period end at all, which is what keeps it out of the nightly expiry sweep. A lifetime membership is never expired by Learnomy.
- The member's Manage membership page reads "Lifetime access, paid
, " with no period, no next payment and no Pause, Cancel, Change plan or Update payment method. A lifetime member is not offered a switch to any other plan. To end lifetime access, refund the purchase.
Everything else about the plan works normally: included courses, course limit, thumbnail, features, and the Learning Space scope all behave the same way.
Because there is no renewal, a coupon on a one-time plan is simply a discount on the purchase, with none of the first-payment-only rules that apply to recurring plans. See Coupons.
Plans sold in another store#
Some sites sell memberships in a separate store and let Learnomy deliver the courses. Turn on Sold elsewhere on the plan and paste the store page into Store link. Then:
- Every Join button for the plan goes to the store link: the pricing page card, the Membership Pricing block and shortcode, and the Other plans list on a member's Manage membership page. The button reads Join this plan.
- Your site's checkout does not sell the plan. Anyone who opens a checkout link for it sees "This plan is sold in our store. Nothing has been charged here. Continue to the store to join." and a Go to the store button. The plan is also left out of the gift form, and members cannot switch onto it with Change plan.
- Until a store link is set, the plan stays off the pricing page, so nobody sees a card with nothing to press.
- Members still get the plan's courses when the store tells Learnomy about the sale, through a store bridge (Pro) or an incoming webhook.
With Learnomy Pro, mapping the plan to a WooCommerce product fills in an empty Store link with that product's page when you save the product.
This is the plan version of a course set to Access granted externally.
Features & Branding accordion#
- Thumbnail - the plan's image at checkout, and the small preview in the Memberships list. It is not shown on the pricing page card: that card is a price comparison and stays text only. Enter a URL or click Choose image to pick from the media library.
- Features - bullet points shown on the pricing page card. One line per feature. Use the trash icon to remove a row and Add feature to add another.
- Highlight on pricing page - marks this plan as the featured/recommended option (displayed with a visual emphasis on the pricing page).
Advanced accordion#
- Slug - the URL-friendly identifier. Auto-generated from the title; edit it to control the URL.
- Currency - a plan has no currency of its own. Every plan, like every course, is charged in the site currency set under Learnomy Settings > Payments. The price fields show that currency beside their label.
- Interval count - allows billing every N intervals, e.g. every 2 months. Defaults to 1.
- Course limit - the maximum number of courses a subscriber can access at one time. Leave blank for unlimited.
- Learning Space - scopes the plan to one Learning Space. Defaults to Not scoped to a space, which is a normal plan. See below.
- Status - Active or Inactive. Inactive plans are hidden from the pricing page and cannot be purchased.
Scoping a plan to a Learning Space
Pro feature. The dropdown only appears when Learnomy Pro's Spaces extension is active and at least one Learning Space exists. On a site without spaces the field is not shown at all, rather than shown empty.
Pick a space and the plan becomes a space plan. The scope is a restriction, not a grant: it does not add the space's courses to the plan. Subscribers still reach exactly the courses in the plan's own Included courses picker, and only while they are actually a member of that space. Somebody who buys the plan but does not belong to the space gets no course access from it, and somebody removed from the space loses the access the plan was giving them, without the subscription itself changing.
Use it to sell seats into one team or department rather than to the whole site. Leave it on Not scoped to a space for an ordinary plan.
Deleting a space does not delete the plans scoped to it. The plan survives, so you are never left billing against a product that vanished; point it at another space or unscope it.
Payment providers#
You do not map a plan to a Stripe price or a PayPal billing plan by hand. Set the price and the billing interval on the plan, and Learnomy creates the matching recurring product on the gateway the first time it is needed, in whichever mode (test or live) your gateway is configured for.
Earlier versions asked you to paste four IDs here - a Stripe test price, a Stripe live price, and a PayPal sandbox and live plan ID. Those fields were removed: they were four chances to typo an identifier that only failed at checkout, and the gateway can tell us the answer itself. If you are following an older guide or screenshot that shows a "Payment Provider Mapping" accordion, that section no longer exists and nothing replaces it - you have already done the work by setting the price.
When WooCommerce is your gateway it uses a single reusable checkout product and reads the price dynamically at checkout, so nothing is configured per plan there either.
Saving a plan#
Click Create Plan (or Update Plan when editing) in the Publish sidebar to save. The Save as Draft button saves the plan with status Inactive so it does not appear on the pricing page yet.
A success notice appears at the top of the page when the save completes.
The public membership pricing page#
Students browse plans at /membership/. The page shows each active plan as a card with title, price, trial period, features bullet list, and a subscribe button.

Plans with Highlight on pricing page enabled are visually emphasized. Plans with Monthly + Yearly pricing show a toggle so students can switch between the two rates.
A member who already holds a membership sees their own state on the cards instead of a Subscribe button, so the page never sends them to a checkout that would refuse the order:
- Their plan reads Current plan, or Current plan, ends
when they have cancelled. On a Monthly + Yearly plan both billing options are listed: the one they pay says Current plan, and the other explains that they are billed on the other cycle and links to Manage membership. Learnomy has no in-app switch between the monthly and yearly price of the same plan; the member cancels and subscribes again once the current period ends ("Available from "). - A paused membership reads Paused with a Resume link, and every other plan points to Manage membership. A paused member cannot start a second subscription.
- A member whose payment failed is asked to update the payment method before changing plan.
- A member on the free plan sees Upgrade to this on paid plans. Checkout accepts the order, and when the payment completes the free membership is cancelled so exactly one membership remains.
- Other plans offer Switch to this (Pro, see Subscription Lifecycle) or Manage current plan.
The same rule applies at checkout, the subscribe API and gift-code redemption: one membership per member, with the free-to-paid upgrade as the only exception.




The FAQ section and a gift membership call-to-action appear below the plan cards when configured in Learnomy Settings > Membership Page.

Editing the membership page content#
Go to Learnomy Settings > Membership Page. Three cards control the public pricing page:
- Membership page content - the Headline and Subtitle shown above the plan cards. Leave the headline blank to use the default.
- Page sections - toggles for Show the FAQ section and Show gift redeem / buy-as-a-gift widgets (gifting requires Learnomy Pro).
- Frequently asked questions - the FAQ editor itself.
The FAQ editor is an add/remove repeater, not a fixed grid of blank rows. Each question has a text field and an answer textarea, with a trash icon to delete that row. Click Add Question to append a new blank row. Blank rows (no question or answer entered) are ignored on save, so you don't need to manually clean up an empty row you added by mistake.
Gift memberships (Pro)#
Pro feature. Requires Learnomy Pro with the Membership Pro extension active.
Members can buy a membership as a gift for someone else, and the recipient redeems a code to activate it. Both halves live on a dedicated, shareable page at /<membership-slug>/gift/, and the gift call-to-action on the pricing page links to it.
Buying a gift#
On the gift page, the buyer picks a plan and a quantity. The running total updates live as quantity changes, and the buyer pays through your normal gateway (Stripe or PayPal) using the same on-page checkout as a regular purchase. The price is resolved on the server, so the displayed total cannot be tampered with. After payment, the buyer receives one gift code per quantity purchased to pass on to the recipient.
Redeeming a gift#
The recipient enters their code on the gift page (or anywhere you place the [learnomy_gift_redeem] shortcode). A logged-in recipient who redeems a valid code immediately gets an active subscription to the gifted plan; an anonymous visitor is prompted to sign in first. Redemption is atomic, so a code can be claimed only once even if two people submit it at the same moment. Invalid, already-claimed, or expired codes return a clear plain-English message rather than failing silently.
For quick access, a Gift entry is added to the My Account navigation so members can buy or redeem from inside their account.
Billing and retries settings (Pro)#
Pro feature. Requires Learnomy Pro with the Membership Pro extension active.
Go to Learnomy Settings and click Memberships Pro in the sidebar (its own settings nav group, anchor #membership-pro), then open the Billing & retries card. This is a separate section from Free's Membership Page content section (#membership-page), which controls the public pricing-page copy. These settings control what happens when subscription payments fail and how plan changes and refunds are handled site-wide.
| Setting | What it does |
|---|---|
| Payment retries | How long Learnomy keeps retrying a failed subscription charge before giving up and cancelling. Options: Conservative (14 / 28 / 56 days), Standard (7 / 14 / 28 days), Aggressive (3 / 7 / 14 days), or Off (cancel immediately on the first failure). |
| Plan changes | When on, switching plans mid-cycle credits the unused time from the old plan against the new charge. When off, the full price of the new plan is charged immediately. |
| Refunds | When on, refunding a payment also cancels the subscription immediately. When off, the refund is recorded but the member keeps access until the end of the current billing period. |
These settings apply to all membership plans on the site. You cannot override them per plan.
Tips#
- Inactive plans are hidden from
/membership/but their existing subscribers are unaffected. - Deleting a plan cancels no subscriptions automatically. Existing subscription rows show "Deleted plan" in their detail view.
- The plan's slug controls the URL anchor on the pricing page. Changing the slug after subscribers have shared links will break those links.
- Trial days only apply to new subscriptions. Existing subscribers are not affected when you add or change the trial setting.
- The Courses included picker lists all courses (up to 500). For larger catalogs, use the search field to filter.
- A one-time (lifetime) plan never expires and never renews, so nothing you do to the retry cadence, proration, or grace period affects it. Price it as a purchase, not as a discounted year.
- If your site runs WooCommerce as the payment gateway without the WooCommerce Subscriptions extension, recurring plans cannot be billed at all. The plan editor warns you at the Billing interval field itself, and One-time is the way to keep selling that plan on such a site.
- The Conservative retry cadence is recommended for sites with international subscribers where payment failures are often caused by temporary bank holds rather than genuine non-payment.