Define what a subscription gets a member
Reached from + New plan or from a row/tile click on the Membership plans page. Same shape for create + edit.
- Plan name — Standard / Premium / Unlimited / Junior / Senior / etc.
- Pricing — monthly / quarterly / annual; auto-renew toggle; setup fee.
- Included hours — total monthly cap, split across windows (e.g. 20 hrs total · 10 peak max).
- Booking-group access — which booking groups this plan can book; advance window per group.
- Pricing override — does this plan use "Included" for included hours, or always pay the rate card? Most plans use Included up to the cap, then fall back to the public rate.
- Add-ons — purchasable extras (e.g. +10 hours $40, guest pass $20). Operator can offer these at the member's renewal.
- Member perks — door-access window, locker, pro discount, free lesson per month.
- Guest policy — can a member bring a guest? Charged how?
- Cancellation policy — when do cancellations take effect; refund rules.
- Public visibility — listed on the public sign-up page / invite-only / hidden.
- Sort order — drag to reorder how plans appear on the public page.
- Impact preview — what changes when you save (affected members get notified; renewal terms; pricing diff).
Backend wiring pending. POST /operator/membership-plans in the live app; PATCH for edit. Pricing changes affect future renewals; current period is grandfathered.