Club Owner's Guide
Club dashboard, club registration, platform terms, locations, per-location revenue, lanes, membership management, classes, copy class, assign students, registration fee, auto-cancel unpaid, events (tournaments/competitions/workshops/camps/annual day), editing events, sibling discount, add-ons, coaches, coach email invites, timesheet approvals, attendance, owner marking, QR check-in, attendance records, broadcasts, financials filter shell, refunds and ad-hoc, offline processing fee, coupons, coaching packages, Video Library, equipment and inventory lending, club terms and conditions, insights and monthly reports, access lockout, Stripe Connect, suspension
Last updated July 1, 2026
Club Owner's Guide#
This is the longest role-specific file because club owners run the business end of Prodemy. If you're setting up a new club, read top to bottom. If you're operating one, jump to the section you need.
For anything money-related, also read 06-payments-and-billing.md. For broadcasts, also read 07-messaging-and-notifications.md.
The club owner dashboard#
Your dashboard is at /dashboard/club. From top:
- Four summary cards — total members, classes today, monthly revenue, pending approvals.
- A weekly revenue chart.
- Upcoming classes and events in a calendar strip.
- Pending items queue (membership requests, coach invites, refund requests).
- Quick actions — create class, send broadcast, add member, view financials.
Sidebar sections: Overview, Members, Coaches, Coach Timesheets, Classes, Events, Amenities (formerly "Lanes"), Inventory, Video Library, Broadcasts, Financials, Insights, Reports, Coupons, Settings. (Sidebar labels were tidied up over time — "Tutorial Videos" became "Video Library," "Lanes" became "Amenities," and "Tournaments" became "Events" since events now cover more than tournaments.)
Registering your club#
If you haven't already set up a club, here's the flow:
Step 1: Register as a Club Owner#
Sign up at /register and pick "Club Owner" as your role. Complete account creation and verify your email. See 01-getting-started.md.
Step 2: Create your club#
After onboarding, you're prompted to create your club. Fill in:
- Club name (public-facing).
- Activity type — one of Cricket, Dance, Yoga, Painting, Martial Arts, Music, Swimming, Gymnastics, Other. This drives terminology and drill library defaults and cannot be changed later.
- Description, logo, website, social links (all optional).
- Primary location — full address.
- Optional: additional locations, lanes (for cricket/racquet sports), initial coaches to invite.
Step 3: Wait for admin approval#
New clubs start in PENDING status. A platform admin reviews your submission — typically within 1–2 business days. You get an email when approved.
While pending, you can still:
- Explore the dashboard.
- Create draft classes and events.
- Invite coaches.
You cannot accept paid enrollments or publish events until approved AND Stripe Connect is set up.
Step 4: Set up Stripe Connect#
This is required before your club can accept paid classes. Go to Settings → Billing → Stripe Connect.
- Click "Set up payments."
- You're redirected to Stripe-hosted onboarding — enter business info, bank account, and KYC documents (driver's license, EIN/SSN, etc.).
- Stripe processes this asynchronously. Usually done within minutes for simple businesses, up to a few business days for complex ones.
- You return to Prodemy when done.
Your Stripe Connect status shows in Settings → Billing as ENABLED or PENDING. Until it's ENABLED, paid class creation is blocked.
(Admin can grant a specific override called "Allow paid without Stripe" for certain edge cases — e.g. clubs that only accept offline payments. If you need this, raise a ticket.)
Accepting Prodemy's platform terms#
As part of signing up your club, you accept Prodemy's platform-wide Terms of Service — the agreement is the Club (your organization) accepting, with you signing on its behalf. The version you signed is recorded. If Prodemy publishes a material update later, you'll see a banner on your dashboard asking you to review and re-accept. You can always see which version you signed (and read it) from the "Club Agreement With Prodemy" card in Settings → Billing, which also shows your platform fee agreement.
This is separate from your own club's Terms & Conditions, which your members accept — see "Your club's Terms & Conditions" below.
Locations#
Clubs can have multiple physical locations. Each class, lane booking, or tournament ties to a specific location (or a free-text venue address for off-site events).
Adding a location#
Settings → Locations → "Add location." Enter name, address, city, state, zip, phone, optional website. Save.
Editing#
Click the pencil icon next to any location. Same form, pre-populated. Changes don't affect existing scheduled classes — they keep the old address until you manually reassign.
Disabling a location#
Click the location → toggle "Active" off. Disabled locations won't appear in new class creation dropdowns but don't break existing schedules.
Lanes and facilities (cricket / racquet sports)#
If your activity type uses lanes (indoor cricket nets, tennis courts, etc.), you can monetize them as bookable slots.
Creating lanes#
Settings → Lanes → "Add lane." Enter:
- Lane name (e.g. "Indoor Net 1").
- Location it belongs to.
- Hourly rate.
- Peak hours — different rate for peak times (e.g. weekdays 6–9pm).
- Optional: bowling machine surcharge (extra $ per hour if machine is used).
- Cancellation policy — refund rules for bookings.
- Booking window — how far in advance parents can book (e.g. 7 days).
- Max slots per booking (e.g. 3 hours max).
- Sort order for display.
Availability#
Lanes have availability sets (daily time ranges when they're bookable) and peak hour overrides. Configure both on the lane edit page.
Maintenance mode#
Temporarily unavailable? Toggle "Maintenance" on. Existing bookings remain; new ones are blocked. Toggle off when ready.
Disabling a lane permanently#
Different from maintenance. Disabling cancels all future bookings with refunds and removes the lane from the grid. Warns you of affected bookings before confirming.
Availability grid for parents#
Parents see a grid with time along one axis and lanes along the other. Green = available, gray = booked, striped = peak pricing. They click a slot to book and pay.
Lane bookings have a 10-minute payment hold — the slot is locked the moment they click, released if they don't pay within 10 minutes. Prevents overbooking during checkout.
Membership management#
Sidebar → Members. Every student (and linked parent) enrolled in your club.
Approving new members#
When a student requests to join, they appear in "Pending" with a blue badge. Click to review — name, DOB, skill level, existing clubs, optional note. Approve or reject.
On approval:
- Student's membership becomes ACTIVE.
- Any linked parents are auto-approved as linked members (so they see schedules and broadcasts).
- The student gets a welcome notification.
- Their data flows into your dashboards (weekly drill completions, leaderboards, etc.).
Auto-approve toggle#
In Settings → Membership, you can toggle "Auto-approve new members." If on, every request is approved instantly without review. Useful for growth-focused clubs. Turn off if you want manual vetting.
Removing a member#
Click a member → "Remove." You see an impact summary (pending payments, active enrollments, tournament registrations, coaching packages). Three removal modes:
- Scheduled — pick an end date. Member remains active until then, then becomes TERMINATED automatically. Good for "last day of season" removals.
- Immediate — terminate now. Active enrollments are cancelled, pending payments are refunded per the class's refund policy.
- Banned — immediate termination plus blocks the member from rejoining. Use for behavior issues.
Confirmation requires typing "DELETE" for scheduled/immediate, "CONFIRM" plus a 24-hour cool-off for banned.
Member list filtering#
Filter by status (ACTIVE / SUSPENDED / TERMINATED), skill level, age group, enrollment status, payment status. Search by name or parent name. Click a chip filter to combine filters (e.g. "Active + U-13 + Overdue").
Linked parents appear as indented sub-rows under each child with a purple "Parent" badge. Your active member count excludes linked parents.
Classes — the core offering#
Classes are your recurring paid programs. Students enroll, pay monthly (or per your billing cycle), and attend.
Creating a class#
Sidebar → Classes → "Create class."
Basic info:
- Class name (e.g. "U-13 Intermediate Cricket").
- Description.
- Location.
- Days of the week — toggle buttons Mon–Sun. Select multiple for classes that meet 2x/week or more.
- Time range per day.
- Max enrollment.
- Age group (optional).
- Skill level (optional).
Coach assignment:
- Pick one or more coaches from your active coach roster. Assigned coaches get added to their schedule and can mark attendance.
- You can change coach assignments later without affecting enrollments.
Payment settings (BillingConfig):
- Fee amount.
- Billing cycle — monthly, per-session, weekly, etc.
- Due day — e.g. 1st of the month, 15th, on enrollment date.
- Proration method — full fee regardless of join date, or prorated by days remaining.
- Grace period — days after due date before late fees apply.
- Late fee type — flat, daily, or percentage.
- Late fee cap.
- Reminder cadence — how many days before the due date to send payment reminders.
- Auto-lock threshold — days past due before the parent's dashboard auto-locks. 0 = never.
- Refund window — hours after enrollment during which full refund is guaranteed (overrides default; platform minimum is 24h).
- Partial refund percentage — e.g. 50% after the full window expires but before a second threshold.
Note: the platform defaults for new classes are now "no grace period," "never auto-lock," and a refund window of 0 — deliberately hands-off. Set explicit values per class if you want grace, auto-lock, or a guaranteed refund window. Existing classes keep whatever you previously saved.
Class type:
- Regular class — included in standard pricing and enrollment flow.
- Special class — workshop or bootcamp with a one-off fee, typically outside regular schedule.
Publish when ready, or save as draft.
Changing a class fee#
Once the class has enrolled students, fee changes are guarded. Click "Edit fee" and you get a dialog with two options:
- NEW_ONLY — new enrollments get the new fee; existing enrollees keep their current fee indefinitely.
- ALL_ENROLLED — all enrollees get the new fee, effective on a date you pick.
Plus a required "Effective date" — never retroactive. Plus mandatory notification to all affected parents.
For ALL_ENROLLED, Prodemy automatically sends a "Fee change" email to every affected parent with the old fee, new fee, effective date, and their option to withdraw if they disagree. Upcoming unpaid charges are recalculated to the new amount automatically (already-paid charges are never touched — the forward-only rule), so what a parent is asked to pay always matches the current fee. The same applies when you change a class's schedule or per-session rate.
Changing a class schedule#
Same guarded flow. Pick day/time changes and an effective date. Parents get a "Schedule change" email and an option to withdraw within a grace window. If they withdraw within the window, they get a pro-rated refund.
Ending a class#
Not every class runs forever. "End class" workflow:
- Set an end date (today or in the future).
- Pick whether to give refunds (all / prorated / none — at your discretion within the class's policy).
- Pick whether to offer enrollees a replacement class.
- Confirmation — type "DELETE" and confirm.
On the end date, the class stops appearing in the schedule. All active enrollments are cancelled. Parents get a "Class ending" email with refund amount (if any), credit amount (if offered), and reason.
You can undo "End class" within 14 days via the Financials → Activity log → revert action.
Enrollment approval flow#
By default, class enrollments require your approval — student or parent enrolls, you review.
You can change this per class in Settings: "Require approval" on or off. If off, enrollments are instant.
Who can enroll#
- Parent-enrolls-child — status APPROVED immediately.
- Child self-enrolls — status PENDING_APPROVAL. Parent reviews and approves. On approval, payment is created.
For paid classes, instant enrollment is blocked if the parent has an unpaid balance at your club beyond the grace period.
Copying a class#
Every class card (Active, Ending, or Archived) has a Copy action that opens the create-class wizard pre-filled from that class — same fee, schedule, billing settings, coaches, and registration-fee setup. It creates a brand-new class with an empty roster — no enrollments, attendance, or payments are copied, and the original class is untouched. You must change at least the name or the start/end dates before you can create the copy (Prodemy won't let you create an exact duplicate by accident). Great for spinning up next season's version of a class or a parallel section.
Assigning students into a class#
Rather than waiting for families to enroll, you can assign club-member students directly into a class from the class roster. For each student you assign, Prodemy creates an approved enrollment plus a pending payment billed to the right payer (the parent for a minor, the student for an adult self-payer), and notifies them to pay through the normal checkout. You auto-approve by assigning, capacity is respected, and any registration fee applies as usual.
One-time registration fee#
You can charge a once-a-year registration fee that applies to a family's first class enrollment each season, on top of the class fee. Configure it in Settings → club registration fee: turn it on, set the default amount, and set the season anchor (e.g. September 1). You can override the amount per class, or turn it off for specific classes. Key rules: it's charged once per student per season per club (re-enrolling later in the same season doesn't re-charge), existing enrolled students are grandfathered when you switch it on, and the registration fee is non-refundable by policy. Coupons can be set to apply to the registration fee, the class fee, or both.
Auto-cancelling unpaid enrollments#
If you set a class's auto-lock threshold, Prodemy can also auto-cancel an enrollment whose first payment stays unpaid past that window — freeing the seat and clearing roster bloat from people who enrolled but never paid. When the threshold is 0 ("never"), nothing is auto-cancelled. This runs automatically in the background.
Tournaments#
Tournaments are multi-division, multi-team competitive events. This is the richest workflow on the club-owner side.
"Tournaments" in the sidebar is now labeled Events, because the same area runs several kinds of events: Tournament, Competition, Workshop, Camp, and Annual Day. Cricket tournaments keep the dedicated, full-featured form described below (divisions, team builder, USA Cricket fields). Other event types use a simpler multi-step create form (covered in "Other event types and extras"). Past events move to a Past/Archived tab so your live list stays clean.
Lifecycle (simplified)#
DRAFT → REGISTRATION_OPEN → REGISTRATION_CLOSED → FORMING_TEAMS → ROSTERS_PUBLISHED.
Note: "IN_PROGRESS" and "COMPLETED" statuses were removed. Tournaments stay in ROSTERS_PUBLISHED indefinitely and can be reopened for edits anytime.
Creating a tournament#
Sidebar → Tournaments → "Create tournament." Fill in:
- Name, description, venue name, venue address (free text — no dropdown).
- Date or date range.
- Tournament manager — dropdown of active club coaches + "Other" for manual entry.
- Divisions — check age groups from USA Cricket categories (U-11, U-13, U-15, U-17, U-19, U-23, Seniors) and pick a division label (Open, Div A, Div B, etc.). Each checkbox creates one division.
- Tournament type — TOURNAMENT (with teams) or WORKSHOP / CAMP (single-category, no teams).
- Registration fees per division.
- Early-bird discount deadline and amount.
- Late registration surcharge deadline and amount.
- Team registration fee (optional flat fee for team entry).
- Collection method — Stripe / offline / both.
- Requirements checkboxes — require USA Cricket ID / require CricClub ID / collect jersey size.
Publish to open registration, or save as draft.
Registration phase#
Parents and students see the tournament in their Tournaments tab. They pick a division (age group + label), pay the registration fee, and their registration goes CONFIRMED.
- A student can register for their designated age group, or "play up" one category (e.g. U-13 player into U-15).
- A student can register for one division per age category, so max 2 divisions per tournament (their age + one up).
- For each registration, a PENDING payment is created under the parent's account. Parent pays via Stripe checkout.
Closing registration#
Click "Close registration." No new registrations allowed. You can reopen later if needed.
Team builder#
Once registration is closed, click "Form teams."
Phase 1 — Generate teams: for each division with confirmed registrations, pick how many teams to create. Click "Generate." System creates empty teams with auto-names (Falcons, Hawks, Warriors, Phoenix, etc.).
Phase 2 — Player assignment: drag-and-drop style player pool.
- Player pool on the left, unassigned players grouped by division.
- Team cards on the right with empty rosters.
- Click a player, then click a team to assign. Click the X on an assigned player to return them to the pool.
- Role toggles per player on a team — C (Captain), VC (Vice-Captain), WK (Wicket Keeper for cricket). Max 1 per role per team.
- Manager dropdown per team — pick a parent or club coach as team manager. Saved automatically.
- "Randomize" button auto-distributes unassigned players and assigns roles.
Phase 3 — Review and finalize: validates every player is assigned. If some are unassigned, you see a warning and can create more teams or waitlist them. If all assigned, you see the Review page with full rosters.
Click "Publish rosters and notify." This:
- Locks the rosters.
- Sends a notification to every player and parent with their team, manager, and teammates.
- Creates a team chat channel per team (see
07-messaging-and-notifications.md).
Reopening registration#
From any post-open status (REGISTRATION_CLOSED, FORMING_TEAMS, ROSTERS_PUBLISHED), you can reopen. All existing teams, rosters, and published data are preserved. New registrants appear as unassigned in the pool.
Cancelling a tournament#
Click "Cancel tournament." You see an impact summary — registered players, registered payments, teams formed, scheduled chats. Pick a refund option (full / pro-rated / none — at your discretion). Type "DELETE" to confirm.
All registered families get a "Tournament cancelled" email with refund amount, refund method (Stripe or credit), and reason.
Undo cancellation#
Within 14 days of cancellation, you can undo. Click the cancelled tournament → "Reinstate." Registrations are restored. Refunds already issued stay — they don't auto-reverse. Use with care.
Workshops, Camps, Competitions, and Annual Day#
These are the non-tournament event types. They use a simpler multi-step create form (no divisions or team builder) and collect the participant details you choose — age category, jersey size, IDs, allergies, emergency contact, photo consent, costume/t-shirt size, dietary needs, custom fields, and so on.
- Workshop — single session, a multi-session series, or drop-in (e.g. "Saturday Painting Workshop").
- Camp — runs as a set of sessions (often weekly); see "Camp sessions and add-ons" below.
- Competition — a competitive event without the full cricket-tournament team machinery.
- Annual Day — a showcase/recital-style event.
When you create one, you set the schedule, capacity, a registration window (open/close dates), public visibility, a refund policy, and any participant info fields. Lifecycle and cancellation flows mirror tournaments.
Camp sessions and add-ons#
- Sessions. A camp is built from individual sessions (e.g. each week). Families can register for any combination of sessions rather than the whole run, and you can offer bundle pricing.
- Add-ons. Offer paid extras like early drop-off and late pickup, each with its own per-day fee. Families pick the days they need at checkout.
Sibling discount#
Set a sibling discount on an event and Prodemy applies it automatically when a family registers more than one child — a reduced rate for the 2nd child and (optionally) a further reduction for the 3rd and beyond. It's calculated at checkout; families don't enter a code. Changing the discount config applies to new registrations only (the forward-only rule).
Public event page#
Events can be made public — they get a shareable, search-engine-indexable landing page at a clean URL (under your club's public page). Share the link anywhere; anyone can view it without logging in, and registering takes them into the normal flow.
Editing an event after creation#
You can edit an event after it's created, with sensible guardrails so you don't disrupt people who already registered:
- Before anyone registers, most things are editable.
- Once there are active registrations, scheduling (dates/times), the refund policy, and the event's basic shape (e.g. switching a camp's structure) are locked — the registration snapshots have to stay stable. The event type itself can never be changed (delete and recreate instead).
- Pricing edits are forward-only — a new price applies to future registrants; people who already registered keep what they paid.
- Changing the venue is allowed and notifies everyone who's registered.
- Generic events also let you add/edit/remove categories, sessions, and add-ons after creation. If you try to delete a sub-item that registrations depend on, Prodemy blocks it and tells you to handle those registrations (e.g. refund) first, so nobody's registration silently disappears.
Cricket tournaments are edited through their dedicated tournament form (team registration fee and cricket flags are editable there; divisions via the expanded division UI).
Coaches#
Sidebar → Coaches. All coaches affiliated with your club.
Inviting a coach#
Click "Invite coach." Enter their email.
- If they already have a coach account, they get an invitation they can Accept or Decline.
- If they don't have an account yet, they're emailed a sign-up link. When they sign up through it, they're automatically added to your roster as an active coach (no separate approval, and their email is verified by the act of clicking the invite).
Pending email invites show up in a Pending email invites list on the Coaches tab, where you can Resend (which issues a fresh link and invalidates the old one) or Revoke an invite. Invites expire after 14 days if unused. There are sensible rate limits on how many invites you can fire off, to prevent accidents.
Managing coach access#
Per coach, you can set:
- Active status — ACTIVE / INACTIVE. Inactive coaches can't mark attendance or receive bookings.
- Verified — flip this when you've done your own background check. Parents see the "Verified by [Club]" badge on verified coaches.
- Class assignments — which classes they teach.
Removing a coach#
Impact summary shows: upcoming sessions they're assigned, students who've booked them, pending reviews, coaching packages they sell. Confirmation required.
Removed coaches: sessions reassigned or cancelled (with refunds), reviews archived, coaching packages paused.
Coach verification#
Two levels of verification:
- Club verification — you flip the switch after background check.
- Platform verification — done by admin. Parents see a higher "Platform verified" badge on platform-verified coaches.
Independent coaches (not in any club) can only be platform-verified by admin.
Coach timesheets#
If you want coaches to log their hours, use Coach Timesheets (sidebar → Management → Coach Timesheets). Coaches submit a weekly timesheet (entries with date, start/end time, activity type, and a paid-or-volunteer flag); you review them:
- Approve or Reject (rejections need a reason and bounce back to the coach to fix and resubmit).
- Unlock an approved timesheet if it needs an edit.
- Mark Paid once you've paid the coach (Prodemy tracks the status; the actual payment happens outside the platform).
- Bulk-approve a batch of submitted timesheets at once.
There's also a report view to total hours by coach over a period, with an Excel export. Coaches get Friday/Sunday reminders if they haven't submitted the current week. (Timesheet management is web-only today.)
Attendance#
Sidebar → Attendance (or via each class → Attendance tab).
Taking attendance yourself#
Club owners can now take attendance directly, not just coaches — handy when a coach is out. There's a "Take attendance" tab listing every class at your club that's markable. Attendance for a session is a single shared record: if both you and a coach touch it, Prodemy shows "marked by [name] / last edited by [name]" so it's clear who did what, and saving updates the same record.
QR check-in#
You can enable a printed QR code per class so members check themselves in with their phone camera (no special app). Manage it from the class's attendance area — turn it on, set the check-in window (how early it opens, when "late" kicks in), display or print the code, and rotate it if needed. Scans create check-in entries that a coach (or you) finalize when saving the roster; once a session is saved complete, further check-ins are locked.
Attendance records (filter & export)#
Beyond marking, there's a filterable Records view of attendance across the whole club — filter by class, student, status, check-in method, or date range, search notes, and export to Excel. It surfaces the per-entry detail that previously only existed in exports. Visible to both you and your coaches.
What you see#
Per-class attendance records with:
- Session date.
- Who marked it (coach or you).
- Status breakdown — PRESENT / ABSENT / LATE / EXCUSED / UNMARKED counts.
- Who pre-reported absences.
Drill-downs#
Click a session to see per-student entries. Click a student to see their attendance history across all their classes at your club.
Exports#
"Export" button on any view. Choose CSV or XLSX. Includes every entry with student name, session date, status, notes, who marked, pre-report flag.
Per-class and per-student metrics#
- Attendance rate over time (weekly / monthly / all-time).
- Streak length per student.
- No-show count.
- Late count.
- Excused count.
Broadcasts#
See 07-messaging-and-notifications.md for the full broadcast explanation. Quick summary for club owners:
- Sidebar → Broadcasts → "New broadcast."
- Pick audience — all club, specific location, specific class, specific age group, all coaches, all parents, or custom.
- Write message, set priority (Normal / Important / Urgent), expiration, channels (in-app + optional email; SMS text delivery is now live).
- Attach image or video if desired.
- Send now or schedule for later.
SMS text delivery is live platform-wide. Whether a given recipient actually gets a text depends on their own SMS settings and Prodemy's per-event SMS policy (admins manage which event types are eligible). Some security/payment-critical alerts always text regardless of preference. See 07-messaging-and-notifications.md.
Reconciliation dashboard (Financials)#
Sidebar → Financials. The revenue drill-down.
Four summary cards#
- Collected this period.
- Outstanding (due but not yet past).
- Overdue (past due date).
- Student paid count.
Filters#
Payment type (Classes / Tournaments / Workshops / Coaching / Membership / Lane), status (PAID / PENDING / FAILED / REFUNDED), specific class or event, date range.
Per-student table#
Name, parent, item, amount, due date, status badge, late fee accrued, actions — Remind, Lock, Receipt, Confirm (for offline payments).
Tournament drill-down#
Tournaments expand to divisions. Divisions expand to per-registration details. Each level has its own export.
Bulk actions#
- Lock all overdue — sets access lock on every family with an overdue payment past the auto-lock threshold.
- Send reminders to all unpaid — fires reminder emails.
- Export — CSV or XLSX.
Offline payment confirmation#
If a parent records an offline payment (Zelle / cash / check / bank transfer), it shows up here with a "Confirm" button. Click to confirm receipt, enter the reference number you received, and mark it PAID. This releases any access lock the parent may have triggered.
Stripe payouts timeline#
A timeline view of your Stripe payouts with dates and amounts. Click "Open Stripe dashboard" to jump to your Stripe Express dashboard.
Filtering, sorting, and exporting#
The Financials table uses a consistent filter toolbar: date-range chips (Today / Last 7 days / Last 30 days / This month / This quarter / Last quarter / All time / Custom), per-column filter popovers (status, method, recipient, class, etc.), sortable columns, and an Export to Excel button that respects whatever filters you've applied.
Per-location revenue#
If your club has multiple locations, you can filter Financials by location to see revenue per site. When a location filter is active, the figures focus on the revenue that can be tied to a place — class and amenity (lane) revenue — and the summary tiles re-scope to that location too. (Revenue that isn't tied to a specific location, like tournaments, memberships, or ad-hoc charges, drops out while a location filter is on, since it can't be attributed to one site.)
Refunds and ad-hoc payments#
- Ad-hoc payments (one-off charges you raise to a parent) appear in Financials and have their own filterable history. Ad-hoc requests never auto-charge — the parent always pays deliberately.
- A Refunds view gives you one place to see every refund (from refunded payments and refunded ad-hoc charges) with the same filter/sort/export toolbar.
- A Payment Actions History section (on the Billing → Payment Actions tab) lists your payment requests and refunds, with cancel and detail actions.
Offline payment processing fee#
Offline payments (Zelle/cash/check/bank transfer) can carry a small processing fee so offline isn't a free workaround for card fees. The fee can be split between Prodemy and your club — your club keeps its share, and Prodemy's share is billed on your monthly invoice. Admins set the default rate and split; you can see the resolved rate on your fee-agreement card. See 06-payments-and-billing.md.
Coupons#
Sidebar → Coupons. Discount codes you create and give out.
Creating a coupon#
Click "Create coupon." Choose:
- Code — auto-generated (8-character random) or custom (min 6 chars, case-insensitive).
- Discount type — percentage off, fixed amount off, free period, sibling discount.
- Discount value.
- Valid from / valid until dates.
- Max uses (total across all users).
- Max uses per user.
- Minimum purchase requirement.
- Scope — ALL (applies to everything), ALL_CLASSES, ALL_TOURNAMENTS, ALL_WORKSHOPS, or SPECIFIC.
- If SPECIFIC, pick which classes/events/etc. the coupon applies to.
- Account-linked option — restrict the coupon to specific parent/student accounts. Prevents sharing.
Inline coupon creation#
You can create a coupon directly from a class or tournament creation form — "Add coupon for this class." This solves the chicken-and-egg where you want to create a class and a promo code at the same time.
Redemption rules#
- Coupons are redeemed at checkout atomically. No race conditions.
- Platform commission is calculated on the pre-coupon amount. The discount comes out of the club's share.
- Expired or used-up coupons return friendly error messages to the parent.
Managing existing coupons#
List view shows code, discount, status (Active / Disabled / Expired), usage count, expiry date. Actions: Edit, Disable, Delete.
Disabling is safer than deleting — it keeps the record for accounting. Deleting removes all trace.
Coaching packages#
If you want to offer prepaid bundles of coaching sessions at a discount, create a package.
Club-owner-delivered packages#
If you personally deliver coaching (you're a club owner who also coaches), create packages under your name:
- Settings → Packages → "New package."
- Name (e.g. "5-Session Starter Pack").
- Number of sessions included.
- Total price (not per-session — total).
- Hourly rate (per-session rate for internal reference).
- Validity in days (e.g. package expires 90 days after purchase).
- Status — Active / Inactive.
Per-session rate is computed as price ÷ sessionCount for parents to see the savings.
Coach-delivered packages#
Coaches on your roster can also create their own packages. These appear under the coach's profile.
Parent purchase flow#
Parent goes to Coaches → picks a coach → sees available packages → buys. Gets N credits. When booking a session, Prodemy auto-spends one credit instead of charging per-session. If no credits, parent pays per-session as usual.
Package expiry#
Unused credits expire at the end of the validity period. Parents get a warning 14 days before expiry. After expiry, credits are lost — no refund.
Video Library#
Publish tutorial videos for your members — technique breakdowns, drills, match analysis. (This area was previously called "Tutorial Videos.") Sidebar → Video Library.
Uploading and organizing#
Upload a video (large files upload in chunks with a live progress bar), and tag it with a category and skill level. Group related videos into ordered series members can work through in sequence (drag to reorder). Feature a few at the top of the library. You can also surface selected videos on your club's public profile so prospective families can sample your content.
Trash and restore#
Deleting a video moves it to a Trash bin where it's restorable for 30 days, then it's permanently removed (and the underlying file cleaned up).
Where members see them#
Members open their Video Library to browse by category and level, follow series, favorite videos, and pick up where they left off ("continue watching"). Your coaches can publish into the club library too.
Equipment & inventory lending#
Sidebar → Inventory. Track the gear your club owns and lend it out with a proper chain of custody.
Cataloging gear#
Add items to your catalog. An item can be tracked as:
- Per-unit — each physical thing is its own record (good for serial-numbered or high-value gear), each with its own QR label.
- Bulk — tracked as a count (e.g. "20 cones"), with one item-level QR.
Lending and returns#
Lend an item to a club member, a coach, a parent, or an external party. Prodemy records the condition (and a photo) when it goes out and again when it comes back, so there's an accountable hand-off both ways. Set a due date if you want one — families get reminders as it approaches, and items past due are flagged as overdue.
Money on a loan#
A loan can carry:
- A refundable deposit — held when the item goes out, released back when it returns in acceptable condition (as a card refund or platform credit, your choice).
- A rental fee.
- A damage / replacement charge if it comes back damaged or doesn't come back.
Member deposits and rentals are paid through the normal checkout. (Coach/external loans are handled as offline payments.)
QR check-out / check-in#
Print QR labels for your items. Scanning a label (with a phone camera or in-app) opens the right check-out or check-in flow — fast hand-offs at the desk.
This feature is on by default for clubs; an admin can turn it off per club if you don't use it.
Your club's Terms & Conditions#
You can publish your club's own Terms & Conditions — a waiver/policy document members accept. Sidebar → Settings → Terms.
- Two formats. Paste rich text or upload a PDF. You can mix formats across versions.
- Members accept at join. New members accept your current terms when they join; parents accept on behalf of their minor children.
- Material changes → re-acceptance. When you publish an updated version, mark it material if it needs everyone to re-accept — existing members then see a banner prompting them to review and re-accept. Non-material updates only affect new joiners (existing acceptances are grandfathered).
- Version history is permanent. Published versions are kept for the record; "Remove" just stops requiring terms going forward.
Admins have a platform-wide compliance view of which clubs' members have accepted. (This is separate from Prodemy's own platform terms that you accept — see "Accepting Prodemy's platform terms" above.)
Insights and reports#
Sidebar → Insights. A dashboard of how your club is doing — engagement and leaderboard-style metrics you can slice by time period, age-group bucket, and class.
Monthly report email#
You can receive a monthly Insights report — a PDF of the previous month — by email. This is on by default for club owners; turn it off in Settings if you don't want it. You can also generate a PDF report on demand from the Insights page anytime. Generated reports are listed under sidebar → Reports (kept for ~90 days), where you can re-download them.
Access lockout management#
See 06-payments-and-billing.md for the full auto-lock explanation. Quick summary for club owners:
- Auto-lock triggers when a family is past the auto-lock threshold for a class. Configurable per class.
- Manual lock: click a member row → "Lock access" → add reason → confirm. The family's dashboard locks immediately until you unlock or they pay.
- Bulk "Lock all overdue" action in Financials — locks every family past the auto-lock threshold at once.
- Auto-unlock via Stripe webhook on payment success. Usually within minutes.
Feature gating#
Admin controls which features your club has access to. Common gates:
- Lane/amenity booking system.
- Coaching packages.
- Equipment & inventory tracking (on by default; admin can disable per club).
- Advanced analytics.
See your Settings → Features page for what's enabled. If you need a gated feature, raise a ticket.
Club suspension#
If admin suspends your club, new enrollments, bookings, and tournament registrations are rejected. Existing members keep access. You'll see a red banner on every page explaining the suspension.
To reactivate: raise a ticket with the reason for suspension (if known) and any corrective actions you've taken.
If this doesn't help#
Raise a ticket at https://prodemy.app/contact. Include your club name, what you were trying to do, and any error messages. Tickets are read and replied to by email. There is no live chat with a person.
Was this article helpful?