1. Dashboard Back to top
The Dashboard provides a live snapshot of today’s activity and shortcuts to key pages.
What you’ll see
- Today’s Event: If an event matches today’s date, it’s shown with a quick link to scoring and live results.
- Quick Links: Navigation to Players, Schedule, Financials, and Results.
- Current Event Context: Injected into pages so you can see whether an event is in progress.
How to read it
- Status: If scoring is unlocked, admins will see actions to enter or adjust scores.
- Results: Flight results and contest summaries may appear for today (or navigate to Results pages).
2. Players Back to top
Use the Players page to manage the roster and open individual player profiles.
Adding a Player
- Open Players and select Add Player.
- Enter the required fields (see below) and click Save.
Editing a Player
- Open Players, locate the player, click Edit.
- Update the fields and click Save.
Name
Player’s full name as it appears on results.
Gender
Male / Female. Used for par logic (women: holes 9 & 18 treated as par 5).
Handicap (9-hole)
System stores 9-hole handicaps. For 18-hole tournaments, the handicap doubles automatically.
Birth Year / DOB
Optional demographic fields (DOB supports YYYY-MM-DD).
Player Profile
- Event History: Shows gross, net, and hole-by-hole scores for series and tournaments.
- Winnings Summary: Aggregates low gross/net and contest prizes.
- Handicap History: Displays last 10 rounds with Score and Equitable Score.
Handicap Calculation
| Rule | Details |
|---|---|
| Rounds considered | Best 5 of the last 10 recorded 9-hole rounds. |
| Equitable scoring (ESC) | Per-hole caps: Par+2 when 18-hole CH ≤ 9; else maximum hole score of 7, 8, 9, or 10 for CH 10–19, 20–29, 30–39, 40+ respectively. |
| Par basis | 9-hole par = 35 (women treat holes 9 & 18 as par 5 in per-hole logic). |
| Rounding & minimum | Average over-par is rounded to nearest integer, floored at 0. |
| 18-hole events | Stored 9-hole handicap is doubled for 18-hole net scoring and for ESC table lookup (course handicap basis). |
3. Schedule Back to top
The Schedule lists Recurring Events (e.g., weekly Twilight) and Tournaments (single or multi-round).
What you can do
- Create or edit recurring series events and standalone tournaments.
- Open scoring and results for any event.
- View configured contests for each event.
Adding Events
- Go to Schedule.
- Choose Create Recurring Event for weekly/seasonal play, or Create Tournament for tournaments.
- Complete the fields (see sections below) and save.
4. Create Recurring Event Back to top
Use this for weekly or seasonal play (e.g., “Men’s Twilight Thursdays”).
Fields
Name
Series name (e.g., “Men’s Twilight”).
Gender
Determines par logic and divisions.
Weekday
Day of week played (e.g., Thursday).
Start / End Dates
Season window for the series (inclusive).
Entry Fee
Per-player fee per event round.
Contests
Select active contests (closest to pin, longest drive, 50/50, etc.).
Worked Example: Twilight with Mixed Contests
You want a Twilight that costs $8 entry fee. Mandatory contests/fees and options:
- All players are mandatorily entered into a Hole-in-One contest for $2.
- Longest Drive for Flights 1–2 on hole 3 with a fee of $2.
- Longest Drive for Flights 3–5 on hole 9 with a fee of $2.
- Membership Draw for $2 (not tied to a hole).
- Every player is automatically entered into an Attendance Draw for a $12 sleeve of balls at no cost to the player (club-funded).
- Closest to the Hole on hole 2 for all flights with a fee of $2.
Step-by-Step Setup (Click-by-Click Guide)
- Go to Schedule.
- Click Create Recurring Event.
- Fill the series details:
Series name
Men’s 2025 TwilightGender
Male(affects par logic and reports)Day of week
WednesdayStart Date
2025-06-01End Date
2025-09-10Entry Fee
8.00(per player, per night) - Click Save to create the series.
- Open the series and click Add Contest to configure each contest below.
Contest 1 — Closest to the Hole (hole 2, all flights, $2)
- Type:
Closest to Pin - Holes: hold CTRL (Cmd on Mac) and click
2(you may select multiple if needed) - Flights: select
All(or 1-5) - Description:
Closest to the Hole #2 - Cost to player:
2.00 - Payout ratio:
0.75
- Club Cost:
0.00
- Payout type:
Pooled
- Mandatory: Leave unchecked
- Click Save Contest.
Contest 2 — Longest Drive (Flights 1–2 on hole 3, $2)
- Type:
Longest Drive - Holes:
3 - Flights: hold CTRL and select
1and2 - Description:
Longest Drive F1–2 (H3) - Cost to player:
2.00 - Payout ratio:
0.75 - Club Cost:
0.00 - Payout type:
Pooled - Mandatory: Leave unchecked
- Save.
Contest 3 — Longest Drive (Flights 3–5 on hole 9, $2)
- Type:
Longest Drive - Holes:
9 - Flights: hold CTRL and select
3,4,5 - Description:
Longest Drive F3–5 (H9) - Cost to player:
2.00 - Payout ratio:
0.75 - Club Cost:
0.00 - Payout type:
Pooled - Mandatory: Leave unchecked
- Save.
Contest 4 — Membership Draw ($2, no hole)
- Type:
Membership Draw - Holes: choose — / None
- Flights:
All - Description:
Membership Draw - Cost to player:
2.00 - Payout ratio: (e.g.)
0.50
- Club Cost:
0.00 - Payout type:
Pooled - Mandatory: Leave unchecked
- Save.
Contest 5 — Attendance Draw (club-funded sleeve, mandatory, $0)
- Type:
Attendance - Holes: — / None
- Flights:
All - Description:
Attendance – Sleeve of Balls - Cost to player:
0.00 - Payout ratio:
0(ignored for fixed prizes) - Club Cost:
12.00
- Payout type:
Fixed(club-funded) - Mandatory: Checked
- Save.
Contest 6 — Hole-in-One (mandatory, $2)
- Type:
Hole-in-One - Holes: choose your HIO hole(s) (par-3)
- Flights:
All - Description:
HIO - Cost to player:
2.00 - Payout ratio: (e.g.)
0.90(90% to prize pool) - Club Cost:
0.00 - Payout type:
Pooled - Mandatory: Checked (auto-added to each player)
- Save.
Save Series
Click Save. On Register Players, mandatory contests will appear pre-selected and locked; totals include entry fee + mandatory fees. Winner dropdowns on scoring pages only show players who paid and are flight-eligible.
Step 3 — Review the math
- Entry fee revenue:
$8 × # Paid Registrations - Pooled contest payout per hole:
(Entries × Cost × Payout ratio) ÷ (# Holes) - Fixed contest payout per hole:
Club cost(e.g., $12), regardless of entries - Club-retained funds: Contest revenue not paid out (e.g., membership draw with 50% payout, or any unawarded contests) remains with the club and appears as retained on the Financials page.
5. Contest Configuration (All Events) Back to top
Contests are optional add-ons for an event (recurring or tournament). Each contest can target specific holes and flights, collect optional entry fees, and pay out from pooled entries or a fixed club-funded amount.
Field-by-field (what each setting means)
Select contest type
Choose the contest you’re adding (e.g., Closest to Pin, Longest Drive, Hole-in-One, Membership Draw, Attendance Draw, Straightest Line).
Select holes
Pick the hole(s) this contest applies to. Hold CTRL (Cmd on Mac) to select multiple holes. Use — (if available) for contests not tied to a specific hole (e.g., a draw).
Select flights
Restrict the contest to specific flights (e.g., Flights 1–2 only). Hold CTRL to select multiple. Leave blank (or select all) to include every flight.
Cost to player
Per-player fee to enter this contest (e.g., 2.00). If set to 0, players are not charged.
Payout ratio
For pooled contests, this is the portion of collected entry revenue paid out to winners, expressed as a decimal (e.g., 0.80 = 80%).
Formula: Per-hole payout = (Entries × Cost to player × Payout ratio) ÷ (# Holes configured for this contest)
If payout_ratio = 0 (or left blank) and payout type is pooled, no automatic payout is computed.
Club cost
For fixed (club-funded) contests, enter the per-hole payout covered by the club (e.g., 12.00 for a sleeve of balls). This value is paid regardless of entries.
Payout type
Pooled: Payouts come from participants’ entry fees using the payout ratio formula above. Use this for contests like Closest to Pin or Long Drive that players buy into.
Fixed: Club-funded prize. Set club cost and the system uses that per hole; payout_ratio is ignored.
Mandatory
If checked, all registered players are automatically entered in the contest.
- If Cost to player > 0, the fee is auto-added to each player’s registration.
- If Cost to player = 0, players are entered at no cost (useful for club-funded attendance draws).
Holes × Flights nuances
- Need different holes or fees for different flights? Create two separate contest entries—one per flight group—with their own holes and costs.
- Per-hole payout is calculated independently for each contest entry, based on its selected holes and entries.
6. Create Tournament Back to top
Use this for one-off or multi-round tournaments (e.g., Club Championship).
Fields
Name
Tournament title (e.g., “Club Championship”).
Date
Start date (first round date).
Rounds
Number of rounds (e.g., 2 for 36 holes over two days).
Holes per Round
9 or 18. Affects handicap doubling and ESC basis.
Entry Fee
Per-player tournament registration fee.
Contests
Configure per-contest cost_to_player, payout_ratio, or club_cost (fixed). Use the Flights selector to restrict a contest to specific divisions (e.g., Flights 1–2 only).
Contest Payout Types
- Pooled: Payout = (Entries × Cost) × Payout Ratio ÷ Holes configured.
- Fixed (Club-funded): Per-hole payout = club_cost regardless of entries.
Example: Club Championship
- Name: Club Championship; Date: Aug 31; Rounds: 2; Holes: 18.
- Entry Fee: $50.
- Contests: Closest (holes 3, 7, 12, 16), Longest (hole 9), Line (hole 18).
- Save. Then use Registration to add (and mark paid) players.
Worked Example: Tournament with Mixed Contests
Tournament configuration with an entry fee and a mix of pooled and club-funded contests:
- Entry Fee: $100 per player
- Closest to the Hole: $5 (pooled)
- Closest to the Line: $5 (pooled)
- Longest Drive: $5 (pooled), split by flights and holes:
- Flights 3–4 on hole 3
- Flights 1–2 on hole 9
- BBQ Contest: club-funded $500 fixed prize, mandatory, no cost to players
Step-by-Step Setup (Click-by-Click Guide)
- Go to Schedule.
- Click Create Tournament.
- Fill the tournament shell:
Name
Club ChampionshipDate
2025-08-31(start date)Rounds
2(example)Holes per Round
18(handicap doubles automatically)Entry Fee
100.00 - Click Save, then open the tournament to add contests.
Contest A — Closest to the Hole ($5 pooled)
- Type:
Closest to Pin - Holes: select holes (e.g.,
3,7,12,16) using CTRL - Flights:
All - Cost to player:
5.00 - Payout ratio:
0.80(80% of entries to prizes) - Club Cost:
0.00 - Payout type:
Pooled - Mandatory: Unchecked (players opt-in)
- Save.
Contest B — Straightest Line ($5 pooled)
- Type:
Straightest Line - Holes: select (e.g.,
18) - Flights:
All - Cost to player:
5.00 - Payout ratio:
0.80 - Club Cost:
0.00 - Payout type:
Pooled - Mandatory: Unchecked
- Save.
Contest C — Longest Drive ($5 pooled), split by flights & holes
Create two entries to target different flight groups:
Entry 1: Flights 3–4 on hole 3
- Type:
Longest Drive - Holes:
3 - Flights: hold CTRL and select
3,4 - Cost to player:
5.00 - Payout ratio:
0.80 - Club Cost:
0.00 - Payout type:
Pooled - Mandatory: Unchecked
- Save.
Entry 2: Flights 1–2 on hole 9
- Type:
Longest Drive - Holes:
9 - Flights: hold CTRL and select
1,2 - Cost to player:
5.00 - Payout ratio:
0.80 - Club Cost:
0.00 - Payout type:
Pooled - Mandatory: Unchecked
- Save.
Contest D — BBQ Contest (club-funded $500, mandatory)
- Type:
BBQ / Special Prize - Holes: — / None
- Flights:
All - Cost to player:
0.00 - Payout ratio:
0(ignored for fixed) - Club Cost:
500.00 - Payout type:
Fixed - Mandatory: Checked (auto-included for every player)
- Save.
Register Players & Eligibility
- Open Register Tournament Players.
- Select a player → the contest list shows only those matching their flight.
- Mandatory contests auto-add to the player (and fees if applicable).
- Take payment (entry + contests). Paid status turns on automatically when totals match.
Scoring & Winners
- Open Tournament Scores.
- For each contest, the winner dropdown lists only players who paid for that contest and are flight-eligible.
- Enter any Distance/Notes (e.g.,
2' 3"or212m). - Lock when verified.
- If the tournament has multiple rounds, configure contests per round as needed (create separate entries with the appropriate holes/round context in your UI).
- Use separate contest entries whenever holes or flights differ. This ensures payout pools and eligibility are calculated correctly.
- For draws or prizes with no specific hole (e.g., BBQ), use Fixed payout with club cost and set Mandatory if everyone should be included automatically.
7. Editing Events Back to top
Events can be edited up to the point players are added. Some edits are restricted afterward to protect data integrity.
What can be edited
- Before registrations: All fields (name, date(s), holes, contests, entry fee).
- After registrations begin: Non-structural fields only (e.g., descriptions). Structural changes (dates, rounds, holes, contest sets) are locked.
- After scoring started: Scores become Locked; only super admins can temporarily unlock.
Unlocking (Super Admin)
- Toggle Unlock on the scoring or results page to make protected fields editable.
- Perform the correction and re-lock. System logs lock state changes.
8. Event Summary (Tally Sheet) — What Each Line Means
8a. Series Event Summary
Revenue box
- Entry Fees — money from paid registrations for this event.
Calc:entry_fee × # paid registrations(or persistedsummary.entry_fees).
Data:Registration(event_id, paid=True),Event.entry_fee. - Each contest row (Closest, Line, Longest, Card Draw, Membership, HIO, Attendance) — revenue collected from players who entered that contest.
Calc: sum ofcost_to_playerfor entries tied to this event/contest.
Data:EventContestInstancejoined viaRegistrationContestEntry. - Total Revenue — ground-truth revenue taken at the till.
Calc:sum(Payment.amount)for registrations in this event.
Data:Payment → Registration(event_id).
Payouts & Club Fees box
- Flight Payouts (Entry Fees × 80%) — portion of entry fees paid as flight prizes; remainder retained as club fee.
Calc:flight_payouts = entry_fees × 0.80,club_fee_flight = entry_fees − flight_payouts. - Contest rows (per contest type)
- Payouts:
• Pooled:(entries × cost_to_player × payout_ratio) ÷ hole_count(or saved final amount)
• Fixed:club_costper hole (club-funded) - Club Fees: club-retained portion for that contest.
Calc:club_fee = revenue − payout − club_cost
- Payouts:
- Totals — sums across all rows:
Calc:Total Payouts = flight_payouts + Σ(contest.payout),Total Club Fees = club_fee_flight + Σ(contest.club_fee).
Event Settlement box
This section is designed to reconcile exactly to Collections by Method.
- Club Profit Today — total retained profit from entry fees + retained contest portions.
Calc:club_fee_flight + Σ(contest.club_fee). - Membership Reserve Contribution — revenue earmarked to membership reserve.
Calc:used_contests['membership'].revenue. - Hole in One Reserve Contribution — revenue earmarked to HIO reserve.
Calc:used_contests['hole_in_one'].revenue. - Attendance Prize Cost — cost of club-funded attendance prize(s).
Calc:used_contests['attendance'].payout(fixed cost). - Gift Certificate Cost — prize budget paid as gift cards.
Calc:payout(card_draw) + payout(custom). - Paid Out Today (Cash) — cash prizes paid today.
Calc:flight_payouts + payout(closest) + payout(line) + payout(longest). - TOTAL — proof-of-balance line, equals Collections by Method total.
Calc:club_profit_today + membership_reserve + hio_reserve + attendance_prize_cost + gift_cert_cost + cash_payouts
=sum(Payment.amount)for the event.
Collections by Method
- Cash / Credit / Debit / Gift Card — payment breakdown.
Calc:sum(Payment.amount)grouped byPayment.method. - Total —
sum(all methods); equals Settlement TOTAL if balanced.
Other fields
- Total Number of Golfers — paid registrations count (or persisted
summary.num_golfers). - Colour of TEE’s — display field from summary.
- Employee Name — staff who closed the event (if recorded).
8b. Tournament Summary
Revenue box
- Entry Fees — sum of tournament registration fees paid.
Calc:sum(Registration.entry_fee_paid)(orsummary.entry_fees). - Each contest row — revenue from paid contest entries.
Calc:sum(TRCE.unit_price_paid)per contest. - Total Revenue — pinned to Payments for this tournament.
Calc:sum(Payment.amount)→summary.total_revenue.
Payouts & Club Profit
- Entry Fees → Club Profit
Calc: Payout$0.00; Club profit= entry_fees. - Contest rows
- Payouts:
• Pooled:(entries × cost × payout_ratio) ÷ holes(or saved amount)
• Fixed:club_costper hole (club-funded) - Club Profit: retained portion for that contest
Calc:club_fee = revenue − payout − club_cost
- Payouts:
- Totals — sums across rows:
Calc:Total Payouts = Σ(contest.payout);Total Club Profit = entry_fees + Σ(contest.club_fee).
Event Settlement
- Club Profit Today —
entry_fees + Σ(contest.club_fee). - Cash Payouts — all cash prizes paid today.
- Prize (Non-Cash) Payouts — gift cards / fixed prizes paid today.
- Reserve Contributions — amounts earmarked to HIO/Membership reserves today.
- Collections by Method (below) should equal the day’s settlement total.
Collections by Method
- Cash / Credit / Debit / Gift Card — till breakdown.
Calc:sum(Payment.amount)grouped by method for this tournament. - Total — cross-check against settlement totals.
- Series: “Event Settlement → TOTAL” must equal “Collections by Method → Total”.
- Tournament: Entry fees show as club profit; contest profit =
revenue − payout − club_cost. - Unawarded contests keep their revenue as club profit (payout = $0).
- Fixed prizes (attendance/BBQ) appear as costs, not contest revenue.
9.Financials — What Every Number Means
Filters
- Start / End — limits all data on the page to this window (inclusive for event dates; exclusive end for timestamped payments). If blank, defaults to the current season window you configured in the app.
- Apply — reloads the page with the selected window.
Collections Cards
These two cards show how the money arrived during the window.
- Collections (Series) — sum of payments for series events in the window, grouped by method (Cash / Credit / Debit / Gift Card). The bottom line is the total collected for series.
- Collections (Tournament) — same breakdown for tournaments only.
Daily Collections Charts
Two line charts show daily payment totals, split by gender:
- Daily Series Collections — Men (blue) vs Women (pink) for series payments per day.
- Daily Tournament Collections — Men (blue) vs Women (pink) for tournament payments per day.
Series — Category Tables
Each table shows rows grouped by category (e.g., Entry Fees, Closest, Longest, Membership, etc.) with per-category Revenue, Costs, Payouts, and computed Profit.
- Series — Men / Women — split by the event’s gender (Men’s series vs Women’s series).
- Series — Combined — Men + Women totals merged by category.
How the columns are calculated (Series)
- Revenue
- Entry Fees — sum of paid registration entry fees for series events in the window.
- Contests (pooled) — sum of players’ contest entry fees (
cost_to_player) for that category. - Contests (fixed) — typically $0 revenue (club-funded prizes don’t charge players).
- Costs
- Fixed prizes — club-funded per-hole cost (
club_cost) recorded as a cost. - Pooled contests — usually $0 cost (payouts are captured in the next column, not here).
- Fixed prizes — club-funded per-hole cost (
- Payouts
- Flight payouts — from entry-fee pool (your 80/20 rule applied on the event summaries).
- Contest payouts (pooled) —
(entries × cost_to_player × payout_ratio) ÷ hole_count(or the exact awarded amount saved at scoring). - Contest payouts (fixed) — equals the club-funded amount actually awarded.
- Profit — calculated as
Revenue − Payouts − Costsper category. The table footer totals sum the columns across all categories.
Tournament — Category Tables
The same structure appears for tournaments, with an important difference: tournament entry fees are treated as club profit (not an 80/20 flight pool).
- Tournament — Men / Women — split by the player’s gender for tournament registrations/payouts.
- Tournament — Combined — Men + Women totals merged by category.
How the columns are calculated (Tournament)
- Revenue
- Entry Fees — sum of paid tournament registration entry fees in the window (club profit).
- Contests (pooled) — sum of
unit_price_paidfrom tournament contest entries (TRCE). - Contests (fixed) — typically $0 revenue (club-funded).
- Costs — fixed prize costs (e.g., BBQ, gift packs) recorded for tournament contests.
- Payouts — awarded contest payouts recorded per event/round for the tournament.
- Profit —
Revenue − Payouts − Costsper category; totals sum down the column.
Funds
These cards show current balances (opening + transactions) for your reserve-style funds:
- Hole-In-One Funds — Series (Men/Women/Total) and Tournament (Men/Women/Total).
- Membership Funds — Series (Men/Women/Total) and Tournament (Men/Women/Total).
Admin Sanity Checks
- Collections vs Tables: The two “Collections” totals should roughly align with the sum of category Revenue across the Series/Tournament tables for the same window (differences occur if some revenue is club-funded or recorded outside the window).
- Pooled vs Fixed: Pooled contests flow into Payouts via payout_ratio; fixed contests flow into Costs (club-funded), not Revenue.
- Profit math: Confirm table footers: Profit = Revenue − Payouts − Costs.
- Date window: If a day looks “off”, check the filter dates (payments use a timestamp; events use a date).
10. User Roles & Access Back to top
| Role | Access | Actions |
|---|---|---|
| Public | Public pages (dashboard summary, player profiles, results). | View-only. No editing, no financials. |
| Admin | All admin pages (players, schedule, scoring, financials). | Add/edit players; configure events; enter scores; manage contests; view financials; lock scores. |
| Super Admin | Full access, including locked resources. | Everything Admin can do + unlock edits for corrections and manage protected settings. |
11. Locking & Unlocking Edits Back to top
Locking freezes sensitive records (scores, payouts) to prevent accidental changes once results are posted.
States
- Locked: Scores/payouts cannot be edited by admins; visible to all roles as read-only.
- Unlocked: Temporarily editable for corrections (super admin only).
Typical workflow
- Admins enter and verify scores.
- Admin locks the event once verified.
- Super admin may unlock briefly to correct errors, then re-lock.
12. Appendix & Glossary Back to top
Key Terms
- Gross: Total strokes.
- Net: Gross minus the player’s handicap (9-hole; doubled for 18-hole events).
- Equitable Stroke Control (ESC): Per-hole cap based on course handicap to make handicaps representative (Par+2 for CH ≤ 9; else max 7/8/9/10).
- Pooled Contest: Payout funded by entries × cost × payout ratio, divided per configured hole.
- Fixed Contest: Club-funded per-hole payout (not tied to entries).
- Flight: Division used to group players by handicap for results.
- Mandatory Contest: Contest automatically included for all players; if it has a fee, it’s auto-added to the registration.
- Club Cost: The amount the club pays for a fixed prize (e.g., sleeve of balls or a set-value award).
Gender-specific Par Note
For women’s events, holes 9 and 18 are treated as par 5 (men: par 4). This applies to net comparisons and countback tiebreakers.