Memberships let you offer your regular customers reduced rates, included sessions, or early access to bookings - paid as a recurring subscription. They're a way to build predictable revenue, reward loyalty, and lock in repeat visits. A membership is a recurring product that lives alongside your sessions. Customers subscribe (via Stripe), and from then on they get the perks you've set up whenever they book.
What you can offer
Memberships are sold on a dedicated /members page that lives in your top nav, and are also promoted during checkout when a customer is about to pay drop-in for a session they'd save on as a member.
Local regulars. Anyone who comes weekly or more. A membership is usually the best value for them and the most reliable revenue for you.
Members-only sessions. Run sessions that only members can book - useful for off-peak community slots or exclusive events. To make a session members-only, open the session editor's Prices panel and turn off all the drop-in price options, leaving only the memberships you want to allow. Non-members then see no tickets and no book button on that session, so only do this when you mean to shut them out - if you wanted the session to be free for everyone, give it a £0 price instead.
Concessions and comps. Set the price to £0 to give away a membership. Useful for staff perks, partner venues, or community access programmes.
Each membership tier can give members a combination of three benefits:
- A pricing discount - either a percentage off the standard session price or a fixed member rate per session.
- A session allowance - a number of free sessions included per day, week, month, or billing period.
- Early access booking - members see and book sessions further ahead than non-members.
You can offer multiple tiers (e.g. Bronze, Silver, Gold) and customers pick the one that fits their usage.
Which sessions it applies to
By default a membership's pricing applies to every session, including ones you add later. That suits most sessions and suits none of the ones you'd never want a member to get free or discounted - a premium one-off, a guest teacher's evening, a workshop priced well above your usual rate.
You can set it from either end, and both write the same thing:
- From the session, while you're creating it. In the session editor's Prices panel each membership sits under either Valid membership or Not included - the heading it is under is the answer, so there is no tick to read. To move a tier, open its ⋯ menu and choose Not included in this session, or Include in this session to put it back. The preview beside you gains or loses that tier's card straight away. An excluded tier shows its name only - its session price and Sell at checkout setting are kept, just hidden, because neither applies while the membership doesn't cover the session, and both come back exactly as they were when you re-include it. Sell at checkout lives in the same menu, on included tiers only.
- From the membership, when one tier needs the same treatment across many sessions at once. Open the membership, turn on Limit to certain sessions, then pick the sessions it covers. A session you saved without a name is listed as No name with its days, length and capacity underneath (for example "Mon-Fri · 60 min · 16 spaces") so you can tell your unnamed sessions apart.
A new session is covered by every membership until you say otherwise, so a member's free session or member rate applies to it from the moment it goes on sale. Set this while you're creating the session - excluding it a week later doesn't get back the sessions members have already booked on it.
Excluding a membership does not stop a bundle or a session gift voucher. They are a separate mechanism with a separate switch - Can be used on this session, in the same Prices panel under Bundles & gift vouchers. On a premium one-off you almost always want both. The read-only Who can book this without paying full price summary at the foot of the panel lists what a session currently gives away, so you can check the pair in one place.
Where members see each tier
Two independent switches on each membership control where it appears:
- Show on members page lists the tier on your /members page, where anyone can sign up.
- Show on checkout offers it as a join-now prompt when a non-member is about to pay drop-in for a session they'd save on.
These are separate, so a tier can be on the members page but not pushed at checkout, or vice versa. Turning either off never affects existing members - an active member always keeps their rate even when the checkout prompt is hidden. You can also override the checkout prompt per session with the Sell at checkout option in the session editor.
Underneath those switches is a Checkout description. The checkout prompt is a compact card, so use this for a short one-line pitch (e.g. "Save 50% on every sauna"). The same short line is used on the tier's card on your /members page, so setting it keeps both places tidy. Leave it blank and both shorten the full description to a preview rather than printing all of it. Either way, customers can tap Learn more on the prompt to open the full membership page in a new tab without losing their in-progress booking. The field is always available, because Sell at checkout in the session editor can put the prompt in front of customers even with the tier's own Show on checkout switch off.
Your memberships page
The /members page has a short intro at the top - an image, a line of text, and an optional link. Edit these under Offers → Memberships: click the Members page button in the top right, next to Create membership, to open the editor. Use the link to point customers at anything on your own website that Session cannot know - full legal terms, what to bring, house rules - and leave the image blank to fall back to your default session image.
How the membership itself works is already answered for you on your FAQs page: what the allowance covers, whether unused sessions roll over, how far ahead members can book, and how it applies at checkout, all written from the settings on this page. Customers reach those answers from your memberships pages and their account page. Point your own link at what we cannot derive, rather than restating the mechanics, which would drift the moment you change a tier.
The intro only shows once you have more than one membership - that's when customers see the /members page, since a single membership sends them straight to that tier's own page. So the Members page button appears only after you've created a second tier, with a small dot to draw your eye to it the first time.
Discount on bookings
The simplest model. Members pay less for every session they book.
- Percentage discount - e.g. 20% off the default price. Applied automatically at checkout.
- Fixed price for all sessions - e.g. £10 per session regardless of the standard price. Useful when you want a clear "member rate" framing.
Both options apply to all sessions the membership covers. The discount is shown explicitly at checkout so members can see what they're saving.
This is a discount on sessions, for people who are already members. To take money off the membership payment itself, see discount a membership payment.
By default the member rate covers the member's own space. Turn on Apply to additional spaces and guests to charge extra spaces a member adds at the member rate too. With a percentage discount, this also covers private and group bookings - so a member booking a private session gets the same percentage off.
Use Spaces covered per booking to limit how far that reaches. Left at All spaces it behaves as above, with no limit. Set it to 2 and only the member plus one guest get the rate; everyone else on the booking pays the usual price. A private or group block is all-or-nothing - it keeps the discount only if the whole block fits inside the number you set, so a cap of 2 stops the member rate reaching an eight-space private hire.
Both settings apply the same way whether a member books their guests up front or adds them to an existing booking afterwards. If the member rate covers only their own space, a guest added later is charged the standard price, not the member price.
Session allowance
Better when you want to cap how much customers use their membership. Each member gets N free sessions per period. After the allowance is used up, members pay the full standard price for any extra sessions. This is the right model for "all-you-can-book within reason" tiers (e.g. "5 sessions a month for £50"), gym-style membership tiers, and any tier where you need a usage cap.
The included-session counter shows on the customer's cart and account page so they always know how many they have left.
How many spaces one session covers
By default a free session covers one space - the member's own. If they book for two, the second person pays the standard price.
Spaces covered per booking changes that. Set it to 2 and one free session covers up to two spaces on the same booking, which is how you sell a couples or duo tier: the pair books together, one session comes off the allowance, and both spaces are free. Anything beyond the number you set is charged at the usual price.
The same setting caps the member rate, so on a tier that has both benefits the number applies to each. Leave it at All spaces on an existing tier to keep the rate reaching every space a member books.
Two things worth knowing before you launch a duo tier:
- It only works when they book together. The allowance covers spaces on one booking, so a couple who each make their own single booking use two sessions, not one. Say so in the tier's description.
- Price it for two. A duo tier that covers two spaces per visit gives away roughly twice the value of a solo tier on the same session count, so set the monthly price accordingly.
When the allowance resets
You choose the reset period alongside the count - "4 free session(s) per Month". The options are Day, Week, Month and Billing period, and the difference between the last two matters more than it looks:
- Day, Week, Month are calendar periods in your venue's timezone. A monthly allowance resets at midnight on the 1st, the same moment for every member, whatever date they joined.
- Billing period resets on each member's own payment date. Someone who joined on the 18th gets a fresh allowance on the 18th of each month.
If you bill monthly and pick Month, the allowance resets on the 1st while members are charged on their signup date - so the month the system counts isn't the month a member thinks they've paid for. A member charged on the 23rd who has already used their allowance earlier that month gets nothing for that payment until the 1st comes round. Unless your members all joined on the 1st, Billing period is the setting that matches what they expect.
Day is for unlimited passes. It resets at midnight every night, so the count you set is a daily one - "8 free session(s) per Day" is 8 a day, not 8 a month, and works out at around 240 a month. That is how you build an unlimited tier, and it's why unlimited passes are set to 1 per Day. If you want a set number of sessions each month, pick Month or Billing period instead - the form warns you if you set Day to more than 1.
Members see which one you've chosen in the counter itself - it reads "2 sessions left this month" on a calendar period, and "2 sessions left this billing period" on a billing period.
A rescheduled booking takes its included session with it. On a calendar period (Day, Week, Month) the count follows the new date, so a session moved from the end of one month into the next stops counting against the old month and starts counting against the new one. If the member has already used their whole allowance in the period they're moving into, the move is refused and they're pointed at another date or at you - you can still move it for them yourself. A Billing period allowance is spent when the booking is made rather than when the session runs, so rescheduling never shifts it to another cycle.
You can set a member rate and a session allowance on the same tier - turn on both Free sessions and Member rate (Discount % or Fixed price). The first N sessions each period are free, then extra sessions are charged at the member rate instead of full price. Leave the Member rate toggle off for a pure allowance tier where extras cost the standard price.
Early access booking
Independent of the member rate and session allowance. When enabled, members can book sessions further into the future than non-members. Your session schedules have a booking window that controls how far ahead customers can book - usually a rolling number of days (e.g. "bookable for the next 90 days"). Early access extends that window for members of this tier. If non-members see 30 days ahead and your membership grants 30 days early access, members see 60 days ahead.
- Reward loyalty - members get first dibs on popular slots before they fill up.
- Lock in commitment - knowing you can book 90 days out makes it easier to plan around a regular routine.
- Differentiate tiers - Bronze might get 7 days early access, Silver 14, Gold 30 - a clean way to make higher tiers feel meaningfully better without changing prices.
Early access extends rolling-window repeat schedules only. It doesn't affect:
- Fixed-end-date schedules - if you've set a schedule to end on a specific date, that cutoff applies to everyone equally. A "summer programme ends 31 August" doesn't quietly extend for members.
- One-off events - the date is the date for everyone.
The base booking window is set on each repeat schedule individually under the Schedule tab. See the scheduling article for more on how booking windows work.
When the perk is on, members see the extra days seamlessly on the calendar - more bookable dates than a non-member viewing the same page. The benefit is also listed:
- On the members page card (e.g. "Book 30 days ahead of non-members").
- In the cart when they're an active member.
- On the membership details modal and post-purchase confirmation.
- On their account page under Membership status.
Discount a membership payment
Members pay for their tier through Stripe, so a discount on the membership price is a Stripe discount code, not one of your discount codes (those come off a session booking). You create the code once in your own Stripe account and the customer types it in at checkout.
The usual reason is a launch offer - a pre-launch deposit to knock off, a first-month promotion, or a founding-member rate. One code works across every tier, so you don't need to know which plan someone will pick.
- 1Go to Coupons in your Stripe dashboard and create a coupon. Set the amount off (or a percentage), and pick the currency.
- 2Set Duration to Once so it comes off the first payment only. Forever would discount every payment for as long as they stay a member.
- 3Optionally cap it - Max redemptions stops it once N people have used it, and Redeem by sets a date after which it stops working.
- 4On the same coupon, add a promotion code - that's the bit customers type, e.g.
DEPOSIT10. Keep it short and easy to read out. Add several codes to the same coupon if you'd rather each person had their own single-use one. - 5Share the code with the people it's for. They pick a tier on your memberships page and enter it at checkout.
Any active code on your Stripe account works here. If you use Stripe for anything besides Session - a Payment Link, an online shop - codes you made for those are redeemable at membership checkout too, and a code set to Forever would discount that membership for as long as the person stays a member. When you create a coupon, use Applies to to limit it to the products you mean it for. One exception: Applies to has no effect on bundles or gift vouchers, so leave it unset on any code you want to work across memberships and bundles alike.
The code field appears when someone joins from your memberships page, and on bundle and gift voucher checkout - so one code can cover whichever of those a customer picks. It does not appear on the join prompt that shows while a customer is booking a session, because that first payment bundles the membership and the session together. Point people at your memberships page when you send them a code.
Discounts are applied by Stripe, so redemptions show against the coupon in your Stripe dashboard rather than in Session's Offers area.
How edits affect existing members
Most membership edits propagate live to existing subscribers, but the rules depend on what you change:
- Name, description, checkout description, image - update everywhere immediately.
- Discount percentage / fixed price - the new rate applies to future bookings only. Existing confirmed bookings keep what was paid at the time.
- Session allowance count - applies immediately. Raising 4 to 5 gives every current member an extra session right away; sessions already used still count against the new total.
- Session allowance reset period - applies immediately, and resets every member's counter to zero. Usage is recorded against the period it happened in, so switching from Month to Billing period (or back) means the existing usage no longer matches the new period and everyone starts fresh from that moment. A member who had used all 4 gets 4 again the same day. Change this deliberately rather than as a side effect of another edit.
- Spaces covered per booking - applies to future bookings only. A booking already made keeps whatever its session covered at the time, so widening a tier from 1 to 2 does not retroactively refund the second space on last week's booking, and narrowing it does not claw one back.
- Early access days - applies immediately for all current members of the tier.
- Price - the new price takes effect on each member's next billing renewal via Stripe.
- Visibility - the Show on members page and Show on checkout switches only change where the tier is offered to new customers. Turning either off never cancels existing subscriptions or changes an existing member's rate.
When a payment fails
Cards expire and banks decline things. When a member's renewal doesn't go through, Stripe retries automatically over roughly the next two weeks - most failures fix themselves on the second or third attempt.
The member keeps their benefits while Stripe retries. That's deliberate: a card that fails on a Tuesday shouldn't lock someone out of a session they'd already planned. But it does mean that until it's resolved they're booking at member rates without having paid, so it's worth acting on.
You'll know because:
- You get an email the first time a payment fails, naming the member, their tier and the amount. You get one email per failed payment, not one per retry attempt, so a member whose card fails four times over a fortnight doesn't fill your inbox.
- It appears in your notifications in the same place as new bookings and cancellations.
- Their customer record shows it. Open the customer from the Customers page and their membership card carries an amber note with the date it failed and either when Stripe will try again, or a warning that Stripe has stopped trying.
- 1
Nudge the member
Usually it's an expired card. Ask them to open their account page, tap Manage payment on their membership and update their card in Stripe. The next retry then goes through on its own.
- 2
Check the retry status
If the note says Stripe has stopped retrying, nothing further will happen automatically - the payment won't collect on its own and the subscription will end. At that point either the member re-subscribes, or you cancel the membership to tidy the record.
If the payment later succeeds, the note clears itself and no further action is needed. There's nothing to mark as resolved.
Cancellation
There's no notice period and no minimum term. A member can cancel whenever they like, and they simply aren't charged again at their next renewal. There's nothing for you to action and no "one month's notice" to enforce - it works like cancelling any normal subscription.
A member cancels themselves from their account page (/{slug}/account): they open their membership and tap Manage payment, which takes them to Stripe to cancel. From the moment they cancel:
- They keep their membership - and all its benefits (discounts, included sessions, early access) - until the end of the period they've already paid for (the "grace period"). They've paid for that month, so they get it.
- At that renewal date the subscription ends instead of charging again. They are not billed for the following month.
- Once the period ends the membership becomes inactive and benefits stop. Their existing bookings are unaffected.
- They can resubscribe later from the same page.
On their account page a cancelled-but-still-in-grace membership shows a Cancelling badge and the line "Access until [date]", so they can see exactly when it lapses.
The Manage payment button sends members to your Stripe customer portal, so whether self-cancel is offered there (and whether it takes effect at period end or immediately) follows your Stripe billing settings. Stripe's default is cancel-at-period-end, which is the grace-period behaviour above. If a member can't find a cancel option, you can always cancel for them (below).
You can also cancel a member's subscription yourself - open the customer from the Customers page and choose Cancel membership on their membership. You pick how it ends:
- End when the period ends keeps their benefits until their renewal date, then the subscription stops - the same as a customer cancelling themselves. Their record shows a Cancelling badge and the date their access ends, so your team can see the status at a glance.
- End now stops the subscription and clears their Active status immediately, with no grace period.
Either way the person isn't deleted and their bookings are kept. A refund on its own doesn't cancel a membership - cancelling is the separate step that ends it.
To give money back - for example a duplicate charge during a migration - use Refund a payment on the same membership card, which refunds a subscription charge taken through Session and can cancel the membership at the same time. See refund a membership payment for the full flow.
Included sessions are a membership benefit, not a stored credit balance - they reset each period. There's no "credit" to remove when a member is refunded; if you want to stop the benefit, cancel the membership. Genuine session credits (from a bundle, gift or comp) are separate and can be adjusted on the customer's record.
Checking what a member's sessions went on
Open the customer from Customers and their membership card shows Sessions used this period, then a Used on list of the sessions those free sessions were spent on - date, time and session name, oldest first. If one session covered more than one space it says so on that line.
The list and the count come from the same place, so they always agree. Use it whenever a number looks higher than expected: nine times in ten the extra is a second booking the member made themselves, not a session taken twice.
Two things you'll see on that list occasionally:
- A line reading just a date and "session removed". The session was deleted after the member booked it. The free session was still spent, so the line stays rather than quietly vanishing from the count.
- "covers 2 spaces". One free session that covered a duo booking - see how many spaces one session covers.
The list is there to be read, not edited. Changing the number of spaces on an existing booking never spends a free session, and the way to give one back is to cancel the booking that used it - that returns it to the member automatically.
Pausing instead of cancelling
There's no pause button in Session. What there is: because your Stripe account is your own, you can pause payment collection on a member's subscription from your Stripe dashboard, and Session now reads that correctly - they stop being charged and their member benefits switch off for as long as it lasts. They show as Paused on the customer's record and on the subscription list under Offers → Memberships, so your team can see at a glance why someone isn't getting their member price.
Resume it in Stripe and their benefits come back on their own - nothing to re-enter and no re-signup.
Only pause from Stripe if you're on a deploy from 27 August 2026 or later. Before that, Session read a paused subscription as fully active, so the member kept their member price, included sessions and early access while paying nothing.
If you'd rather not use Stripe directly, Cancel membership with End when the period ends is the simpler route: they keep the rest of the month they've paid for and can resubscribe whenever they're back.
Troubleshooting
-
A member booked a session at the standard price instead of their member rate. Check that their membership status is Active on the customer detail page. If they're in the cancelled-but-still-in-grace state, the rate should still apply - if it didn't, capture the booking ID and we'll investigate.
-
I turned on early access but a member isn't seeing extra dates. The base booking window has to be in rolling mode (not fixed end date) for early access to extend it. Check the schedule under the Schedule tab - if it shows "Schedule ends on…" instead of "Bookable for the next…", early access can't extend that schedule. Switch to rolling if you want member extension.
-
Is there a notice period for cancelling a membership? Will a customer be billed the following month? No notice period and no minimum term. A member can cancel any time and won't be charged at their next renewal - they keep access until the end of the period they've already paid for, then it stops. They are not billed for the following month.
-
Can I offer free trial periods? Not directly through the membership editor right now. If you want trials, the workaround is to create a free membership tier (£0 price) and manually move customers to a paid tier when they upgrade.
-
A member says their allowance is short just after paying. Check the tier's reset period first - this is almost always Month where you meant Billing period. On Month the counter resets on the 1st, so any sessions the member took earlier that calendar month still count against it even though they've since been charged. See when the allowance resets. If the reset period is already Billing period, open the Used on list on their membership card and read off the sessions the count is made of - see checking what a member's sessions went on. If a session there genuinely isn't one they booked, send us the booking reference and we'll investigate.
-
Can I have multiple memberships per customer? A customer can only have one active membership at a time. If they try to subscribe to a second one, they'll be asked to cancel the existing one first.
-
A member's card failed but they still show as Active. Is that a bug? No - benefits deliberately survive Stripe's retry window, so they stay Active while the payment is being retried. Their customer record carries an amber note explaining the failure and when Stripe will next try. See when a payment fails.
-
I migrated members from another system - when are they first charged? A member imported as dormant who re-subscribes pays £0 now and is first charged on their old renewal date, so they aren't double-charged while their previous subscription winds down. Brand-new sign-ups are billed immediately.
-
I set a duo tier to cover 2 spaces but the second person was still charged. Two things to check. First, they have to book both spaces on one booking - if each person books separately that's two bookings and two sessions off the allowance, each covering one space. Second, the setting is per tier: confirm Spaces covered per booking reads 2 on the tier that customer is actually on. See how many spaces one session covers.
-
A member on a capped rate still got the discount on a private hire. A block keeps the member discount only when the whole block fits inside the number you set, so check the block's size against the cap - a 6-space private hire needs a cap of 6 or more. If the tier is still on All spaces, every block is discounted; set a number to stop that.
-
The membership prompt at checkout shows too much of my description. It shortens a long description to a preview automatically, but you choose the wording by setting a Checkout description on the membership - a short one-liner used on both the checkout card and the tier's card on your /members page. It sits under the two visibility switches and is always editable, whether the tier is offered at checkout from here or from an individual session's Sell at checkout.
-
A member cancelled and left the area, but their future bookings are still showing. Cancelling a membership never cancels bookings, and that's deliberate - most people who cancel still have sessions they've paid for or credits left to spend, so wiping their bookings would take away something they're owed. Clear the ones you want by hand: open the customer from the Customers page, click the booking in their history to open it on the bookings page, and cancel it there. Do that for each booking you want to free up.
-
A time-limited membership is prompting people to join on sessions it doesn't cover. If a tier only discounts certain days or times (an off-peak membership), the join-now prompt at checkout now only appears on the sessions the discount actually applies to - so a customer isn't nudged to join on a session where they'd get no member rate. Existing members are unaffected; this only controls the join prompt for non-members.
-
A customer says the discount code box isn't there when they join. The Stripe code field only shows when someone joins from your memberships page. It's deliberately absent from the join prompt that appears while they're booking a session, because that payment bundles the membership and the session onto one invoice. Send them to your memberships page to use the code.
-
A membership discount code worked once and now says it's invalid. Stripe coupons and promotion codes retire themselves permanently once they hit Max redemptions or pass Redeem by - they can't be reactivated. Create a fresh code on the same coupon, or a new coupon if the coupon itself is the one that expired.
-
I added a space to a member's booking and it looks like it took another free session. It didn't - changing the number of spaces on a booking never spends one. Open the Used on list on their membership card and you'll usually find the extra is a separate session the member booked themselves. If you want one free session to cover a guest every time, that's spaces covered per booking on the tier, not a per-booking edit.
-
A member's allowance count changed when they moved a booking. Expected on a calendar period: a rescheduled booking takes its included session with it, so moving a session across the 1st of the month moves the count too. On a Billing period allowance the count won't move, because it's spent when the booking is made. See when the allowance resets.
-
Can I pause a membership, or move someone's payment date? Neither is built into Session yet. You can pause payment collection on the subscription from your own Stripe dashboard and Session will read it correctly - see pausing instead of cancelling. Changing a renewal date is safe to do in Stripe too: Session reads the new dates back automatically, so the member's record stays right.
-
Where did the "Applies to this session" tick go? Into the row's ⋯ menu, alongside Sell at checkout. The heading a tier sits under - Valid membership or Not included - already tells you whether it applies, so the tick only restated it. Use Not included in this session or Include in this session in that menu to move a tier between the two.
-
I can't save my off-peak membership - it says a session has no bookable price. An off-peak tier takes a percentage off the session's normal price, so at peak times the member pays that normal price. The named session has no price at all - every price on it is switched off - which leaves the member nothing to pay. Open that session's Prices panel and add a price (a £0 one is fine if the session is meant to be free), or set a member price for the tier there. Switching the membership to a fixed member price, or to all times, also clears it. If the session was meant to be free for everyone, see make a session free.
-
I excluded every membership from a session and someone still booked it free. Memberships are only one of the two ways a session goes free. The other is a prepaid session - a bundle, a session gift voucher, or a Sessions discount code - which has its own switch, Can be used on this session, under Bundles & gift vouchers in the same Prices panel. Check the summary at the foot of that panel to see what the session gives away in total.