Club Owner's Guide
Club dashboard, club registration, locations, lanes, membership management, classes, tournaments, workshops/camps, coaches, attendance analytics, broadcasts, reconciliation, coupons, coaching packages, tutorial videos, access lockout, Stripe Connect, suspension
Last updated April 20, 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, Classes, Tournaments, Workshops & Camps, Lanes, Broadcasts, Financials, Coupons, Settings.
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.)
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.
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.
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.
Tournaments#
Tournaments are multi-division, multi-team competitive events. This is the richest workflow on the club-owner side.
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 and Camps#
Same as tournaments, but simpler. One age category per event, no team formation, no divisions. Registration collects age category, jersey size, IDs, allergies, emergency contact.
Workshops are typically single-session (e.g. "Saturday Painting Workshop"). Camps are multi-day (e.g. "5-day Cricket Summer Camp").
Lifecycle and cancellation flows are identical to tournaments.
Coaches#
Sidebar → Coaches. All coaches affiliated with your club.
Inviting a coach#
Click "Invite coach." Enter their email. If they have a Prodemy account, they get a link request. If not, they're emailed a signup invite. On acceptance, they join your coach roster.
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.
Attendance analytics#
Sidebar → Attendance (or via each class → Attendance tab).
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 [coming soon]).
- Attach image or video if desired.
- Send now or schedule for later.
SMS cost estimate shown before you send (based on recipient count). Fees charged to your Stripe when SMS delivery goes live.
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.
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.
Club tutorial videos#
Upload short "how to" videos to help your members. Optional but useful.
Uploading#
Settings → Tutorial videos → "Upload video." Drag and drop (MP4/MOV/AVI, max 500MB). Add title, description, category.
Where parents see them#
Parent Videos page → "Club tutorials" tab. Students can see them too. Browsable by category.
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 booking system.
- Coaching packages.
- SMS broadcasts.
- 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?