โš™๏ธ Setup & Season Basics

1.02Holes Per Round

Typically 9 for a league night.

๐Ÿ† League Structure, Roster & Playoffs

4.01Playoff Teams

Full explanation coming soon.

4.02Finals Duration (weeks)

Full explanation coming soon.

๐Ÿ—บ๏ธ Courses & Tees

1.01How many courses does this league use?

Controls whether the Course column appears on schedule views.

Default Tees & Tee Selection Order

Every active player can have a personal Default Tee (set one at a time on their player profile, or in bulk from Admin โ†’ Default Tees) โ€” the tee color that pre-fills for them at score entry instead of leaving everyone on the course's own default. This is separate from scoring on its own: setting a default tee doesn't change anyone's handicap or points by itself. It only decides which tee's yardage/par/handicap-index data gets pre-selected โ€” but whichever tee is actually used for a scorecard does drive that round's net score and points, since par and handicap allocation are tee-specific.

A player's tee is worked out in this order, lowest to highest priority:

  1. The course's own default tee (set once per course).
  2. The player's personal Default Tee, if one is set โ€” overrides the course default.
  3. A one-week tee change made from the print-scorecards popover โ€” overrides both, for that single matchup only.

Picking a tee from the print-scorecards popover before a round also updates that player's personal Default Tee automatically โ€” a tee picked once is what's remembered going forward, with no separate "save as default" step. Two exceptions: a hybrid pick (two different tees combined on one card) only ever affects that week's card, since a personal default can only hold one tee; and if a substitute is playing in someone's place, the sub's tee pick doesn't change the absent player's own personal default.

๐Ÿ“… Scheduling & Season Segments

7.01Segment Start Week

First week included in the segment.

7.02Segment End Week

Last week included in the segment.

๐Ÿงฎ Handicaps

2.01Differential Method

Par-based is the default for casual leagues.

2.02Rounds to Average

Number of most recent rounds used in the calculation window.

2.03High Scores to Drop

Worst rounds dropped before averaging (within the window).

2.04Min Rounds Required

Minimum rounds before a handicap is calculated.

2.05Handicap Percent (%)

Playing handicap = index ร— this รท 100. Typically 90%.

2.06Max Handicap Index

Cap applied after percent reduction. Typically 18.

2.07Max Score Over Handicap

Used for Equitable Stroke Control in differential calc.

2.08Allow Negative Handicap

If unchecked, handicap index is floored at 0.

2.09Carry Scores Across Seasons

Include rounds from prior seasons in handicap window.

2.10Pre-Eligibility Temp Handicap % (Member)

Applied to a regular memberโ€™s own round differential (gross โˆ’ par) for any round played before they reach Min Rounds Required. Computed independently for each pre-eligibility round โ€” not averaged or carried forward.

2.11Pre-Eligibility Temp Handicap % (Sub)

Same calculation as 2.10, but used when the scorecard for that specific round is flagged as a substitute, regardless of the playerโ€™s normal roster status.

๐ŸŒ๏ธ Scoring & Points

1.03Scoring Format

Match Play: per-hole W/T/L pts, individual A-vs-A/B-vs-B. Stableford: accumulate pts per hole vs par, compare totals. Best Ball: each teamโ€™s hole score is the lower of its two playersโ€™ net scores, teams compared head-to-head. Team Totals: each teamโ€™s hole score is both playersโ€™ net scores added together, teams compared head-to-head. Only one format is active at a time.

1.04Does this league use handicaps?

Full explanation coming soon.

1.05Match Play Pts Per Hole (Win)

Points awarded for winning a hole. Loss = 0.

1.06Match Play Pts Overall (Win)

Bonus points awarded for winning the overall 9-hole total.

1.07Match Play Pts Per Hole (Tie)

Points awarded to each player when a hole is tied. Also used for the overall-total tie.

3.01Max Score Per Hole (optional)

Leave blank for no per-hole cap. Example: triple bogey max.

3.02Action When Exceeded

Full explanation coming soon.

3.03Custom Warning Message (optional)

Full explanation coming soon.

8.01Priority 1

Full explanation coming soon.

8.02Priority 2

Full explanation coming soon.

8.03Priority 3

Full explanation coming soon.

8.04Priority 4

Full explanation coming soon.

๐Ÿ”„ Subs & Absences

1.08Absence Overall Point Policy

Controls whether an absent playerโ€™s ghost score can win the overall (match) point against their opponent. "Excused" is set per-absence in the sub/absence popover. Default matches current behavior.

๐Ÿ’ฐ Skins & Contests

5.01Default Scoring

Full explanation coming soon.

5.02Default Buy-In Amount ($) (optional)

Full explanation coming soon.

5.03Allow Players to Self Opt-In

Members can opt themselves in/out of skins for a round.

๐Ÿ“ Self-Reporting

6.01Allow Members to Submit Scores

Members can enter their own scores instead of waiting for an admin.

6.02Require Admin Approval

Self-reported scores are held for admin review before counting.

๐Ÿ“Š Reports & Dashboard

9.01Announcements banner

Full explanation coming soon.

9.02Weekly round recap (medalists / net lows / odds & ends)

Full explanation coming soon.

9.03Activity feed (recent results, upcoming, standings snapshot)

Full explanation coming soon.

9.04League activity feed (notification-style timeline)

Full explanation coming soon.

๐Ÿ“ข Communication

This section is being written โ€” check back soon.

๐Ÿ—‚๏ธ League Setup
The Players

Adding Players & Teams

A roster starts with players, not teams. Add each one from Players โ†’ Add Player, then pair two players into a team from Teams โ†’ Add Team for whichever season they're playing in. A team can also carry a nickname; if it's left blank, BGLT falls back to showing both players' last names wherever a team label is needed.

A player who leaves the league doesn't need to be deleted. Deactivate (on the player's profile) keeps their entire scoring/handicap history intact while dropping them off the active roster and out of the pool of players available to add to a new team. Reactivate reverses it any time.

Team size is fixed at two players today; there's no path yet, not even a manual workaround, to a three- or four-player team. If a league ever needs that (a scramble format, for instance), that's a real gap to flag rather than something to work around in the roster screens.

Divisions

Divisions aren't a separate setup screen. They're a free-text Division field right on each team (Add/Edit Team). Give two teams the same division name and they're grouped; BGLT suggests names you've already used so it's easy to stay consistent instead of a typo quietly creating a third division by accident.

I deliberately kept divisions, playoffs, and skins flights as separate, purpose-built features instead of one shared "grouping" mechanism driving all three. A single overloaded setting is easy to configure once and then forget is silently controlling several other things.

Playoffs

Two settings drive the playoff bracket: Playoff Teams (defaults to 4) decides how many top-standings teams qualify, and Finals Duration (defaults to 2 weeks) decides how many weeks the bracket runs. See Playoff Teams and Finals Duration.

Generating the bracket pulls straight from the season's current standings at that moment, seeding the top N teams, so it's worth generating it after the regular season is actually finished, not mid-season as a preview, since there's no separate re-seed step short of resetting and regenerating.

Importing Players, Teams, Schedules & Scores

Moving a league here from another system, or just starting from a spreadsheet instead of hand-entering a roster, goes through Admin โ†’ Import Players (the same tool handles all four data types, not just players). It walks through Players, Teams, Schedule, and Scores one at a time, in that order. Each later type expects the earlier ones to already exist, so importing schedule before players won't find anyone to schedule.

Both .csv and .xlsx files work. Each of the four types has its own downloadable template on the upload page (real column headers plus one filled-in example row), worth starting from rather than guessing what BGLT expects.

After uploading, a column-mapping step shows up before anything is actually written: headers get auto-matched to BGLT's fields where the names line up, but any column can be remapped by hand, individual rows can be excluded, and a whole column can be ignored, all before committing, so it's safe to upload first and clean up the mapping second.

A league that already has its roster in BGLT doesn't need to start at Players. Schedule or Scores can be imported on their own as long as the players/teams they reference already exist.

The Course

Adding a Course

From Courses โ†’ Add Course, search the built-in Golf Course database first. It pulls in the course, its tees, and full hole-by-hole par/yardage/handicap data in one shot, which is far less typing than entering it by hand. That search is rate-limited (a usage meter on the page turns red as you approach the monthly cap), so it's worth searching precisely rather than browsing broadly.

If a course isn't in that database, add it manually, then add each tee color one at a time and fill in the per-hole par/handicap data for it: more setup work, but nothing the automated search can do that manual entry can't eventually match.

27-Hole & Multi-Combo Courses

BGLT doesn't have a dedicated "27-hole course" flag. Instead, enter each 9-hole set as its own tee/hole configuration, then add one course entry per 18-hole combination your league actually plays (e.g. a facility with A/B/C nines becomes three course entries: A/B, B/C, and A/C).

It's an admin data-entry pattern, not a missing feature. BGLT's course model already supports arbitrary tee/hole configurations including independent 9-hole sets, so nothing needs to change to schedule any of the combinations once they're entered.

Assigning Tees

Every course has its own default tee (set from the course's detail page), and every player can have a personal default tee on top of that. See Default Tees & Tee Selection Order for how the two combine and where a one-week print-scorecards change fits in.

There's no course-by-course bulk grid or an assign-by-tee-name-across-courses shortcut today. The Default Tees mass-edit page covers setting everyone's tee for one course at a time, which is fine for a league that plays mostly one home course, more repetitive for one that rotates across several.

Tee Times

This section is being written โ€” check back soon.

The Schedule

Creating & Editing a Schedule

Schedule โ†’ Generate builds a full round-robin from that season's teams in one pass. After it exists, individual weeks can still be added, removed, or bulk-edited, and any single matchup can be corrected on its own. Generating isn't a one-shot, all-or-nothing action.

Regenerating from scratch clears the existing schedule first, so it's meant for before a season starts, not as a way to patch one wrong matchup: use the single-matchup edit or bulk-edit tools for that instead.

Rain-Outs

A rained-out week gets flagged, then optionally rescheduled. That's two separate steps, not one combined action:

  1. Mark it. From that week's schedule row, mark it as a rain out. This is blocked once any matchup that week already has a completed score, so it can't be used to quietly undo real results.
  2. Reschedule it (optional). From Rain-Outs, either move it onto an existing week or insert a brand-new week at any date you pick. Matchups carry over unchanged either way, only the date moves.
  3. Or leave it unrescheduled if the season's just shrinking by one round instead of replaying it.

Season Segments

Segment Start Week and Segment End Week (7.01 / 7.02) carve out a stretch of the season (a "first half" or "second half," for example) that standings and reports can be filtered down to, without needing a whole separate season for it.

The Scorecards

This section is being written โ€” check back soon.

๐Ÿ”‘ General Information

Two Ways to Sign In

BGLT gives a league two different ways in.

Shared League ID & Password: Everyone uses the same League ID and the same password, except admins, who have their own unique password. This is fast and easy to hand out to a whole roster without asking anyone to create an account. Because it's fast and easy, this is the default way a league gets set up.

Individual Account: Email & password, tied to one specific person. Anyone can create their own individual account and link it to their league(s). If you're active in more than one league, an individual account lets you move between them without logging in and out over and over.

To link your individual account to a league, hit the โ€œAdd Leagueโ€ button from the โ€œMy Leaguesโ€ page. Log into your league using the shared League ID and password, and you're linked. Switch which league is active anytime from My Leagues, and remove one from your account there too, without affecting the league itself or the shared League ID and password.

Both ways to sign in work side by side. Some people can keep using the shared league password while others use their individual account.

Individual accounts can hold league admin roles as well. The League Admin can promote any league member's individual account to an admin role from Admin โ†’ Manage Users.

If the shared admin password is forgotten, use โ€œForgot Passwordโ€ on the login page's League tab: enter the League ID and the admin email on file, and a reset link goes out automatically. The shared member password has no self-serve reset; contact your league admin for it.

Individual accounts (either role, including an admin's own individual account) have their own separate โ€œForgot Password?โ€ link on the login page's Individual Account tab: enter the account's email and a reset link goes out the same way. Another League Admin can also reset an individual account from Manage Users if that's faster, or reach out directly if yours is the only admin account.

Running a One-Time Event or Tournament

BGLT isn't only for a full season-long league โ€” it works just as well for a single event, like a 1-4 day member-guest, club championship, or scramble tournament. Behind the scenes there's no separate "event mode": a tournament is simply a league with one short season.

When creating a new league, choose Event / Tournament instead of Ongoing League on the Create League page. It doesn't change what's possible, just tailors the wording as you go and adds a quick-start tip on the Season Setup page pointing you straight at building a short schedule.

From there, set up your roster and course like normal, then go to Schedule and add just the rounds your event actually has โ€” one round, or several over a weekend โ€” instead of a full recurring season. Scoring, handicaps, standings, and skins all work exactly the same either way.

Transferring League Access

Because individual accounts carry a role on top of the shared league password rather than replacing it, handing admin access to someone else doesn't mean changing a password the whole league would need re-told. From Admin โ†’ Manage Users, promote any existing individual account to League Admin, or demote one back to Member, with the Set Role action. No password changes involved either way.

If the person taking over admin duties doesn't have an individual account yet, have them register one first (see โ€œTwo Ways to Sign Inโ€ above) using the league's current admin or member password, then promote that new account from Manage Users.

The league's shared League ID + admin/member passwords stay in place no matter who holds individual admin roles. Rotate those separately, from League Settings, if a departing admin's access to the shared login itself needs cutting off too. Promoting/demoting an individual account's role doesn't touch the shared passwords at all.

Before Your First Season: A Setup Checklist

A handful of decisions are much cheaper to make once, before week 1, than to change mid-season after real rounds have already been scored against the old settings:

  1. Handicap settings: rounds-to-average, handicap percent, and the max index cap all feed the handicap calculation from the very first round. Changing any of them after scores exist means running a full Handicap Rebuild to make history consistent with the new numbers. See Handicaps.
  2. Absence & sub policy: decide upfront whether an absent player's ghost score can win the overall point against their opponent, and how subs get requested vs. admin-assigned. See Absence Overall Point Policy.
  3. Rain-out plan: know how a rained-out week gets rescheduled before the first one actually happens, not while it's raining. See League Setup โ†’ The Schedule.
  4. Tiebreakers & scoring format: pick the scoring format and point values before anyone's played a hole under them; changing formats mid-season mixes two different points systems in the same standings.
  5. Skins/contest money: if any real stakes are riding on skins or contests, set the pot/payout rules up before week 1, not after the first pot's already been played for. See Skins & Contests.
  6. Tees: set each course's default tee and, if it matters to your league, each player's personal default tee, so scorecards aren't defaulting to a guess on the first week. See Default Tees & Tee Selection Order.
๐Ÿ† League Formats and Ideas

This section is being written โ€” check back soon.

๐Ÿ“ข E-mail and Text Messaging

Setting Up League Email

Member-facing email (announcements, a round being posted, a sub getting assigned) goes out through your own league's SMTP settings, configured once from Admin โ†’ Email Settings: host, port, sender address/name, and whether each of those three trigger types actually sends an email or stays silent. There's no shared platform sender for these: a league that never sets this up simply won't send member emails; players/admins would still see the in-app Announcements or notification, just no email copy.

A Test send is built into that same settings page: after saving, send a test straight to the address on file before trusting the real thing to any player's inbox.

Platform-level emails (password resets, League ID lookups) are separate from all of this. Those send from BGLT's own sender regardless of whether a league has configured its own SMTP at all.

A one-off Blast (subject + free-text body, sent to every player with an email on file) also lives on the Email Settings page, for anything that doesn't fit the Announcements or Weekly Recap flows below.

Announcements & Weekly Recap

Announcements post from Admin โ†’ Announcements: shown in-app, and emailed too if Email Settings has that trigger turned on. They can be toggled active/inactive without deleting them, so an old one can come down without losing its text if it's needed again.

The Weekly Recap is a heavier, separate tool: a full digest (results, standings, low gross/net, handicaps, upcoming schedule) built from real season data, with a live preview and an Email vs. plain-text Copy mode, so it can go out however a league actually communicates (email blast, group text, whatever's normal for that group), not just email.

Two real gaps worth knowing about: BGLT doesn't send text messages directly; the Copy-as-text mode is built for pasting into a group text yourself, not automated SMS. And there's no delivery log for emails sent (bounces, opens): a Test send confirms the setup can send at all, not what happened to any specific real email afterward.

๐Ÿ“Š Reporting

Exporting & Printing

Standings, scores, the roster, and the schedule can each be exported straight to CSV from the season Reports page. Useful for anything that needs to leave BGLT, like a league newsletter or handing a spreadsheet to a new admin.

For anything meant to be read on-screen or printed as-is, BGLT doesn't have a separate print/PDF button. The browser's own Print command works directly against the page as rendered, same as any other web page.

Printing Scorecards is the one report built specifically for a physical hand-out: a season's scorecards laid out for printing (header, group rows, side/team labels, points columns) rather than the on-screen scoring view, reachable from the Admin Quick Options row.

Stats & Records vs. Weekly Reports

Two places can sound like they cover the same ground. The weekly Reports page is season/week-scoped: standings, a specific week's scorecard, a full season summary, and the CSV exports above. Stats & Records is the standing library (season stats, hole-by-hole averages, a scoring leaderboard, head-to-head player comparison, and participation), browsable any time, without picking a week first.

One thing BGLT doesn't have: a way to save a particular filter or report view and pin it for later. Stats & Records' categories are fixed; if there's a specific cut you find yourself rebuilding every week, that's worth flagging rather than assuming it's saved somewhere already.

๐Ÿงฎ Handicaps

How Your Handicap Gets Calculated

BGLT's handicap is par-based, not the USGA slope/rating system. That's by design, to keep it simple for a casual weeknight league. It's built entirely from your own recent rounds, nothing else.

Each round produces a differential (your gross score vs. par, adjusted by Max Score Per Hole if that's set). Your index is the average of your most recent rounds: how many rounds are in that window and how many of your worst scores get dropped before averaging are both league-level settings. See Rounds to Average and High Scores to Drop.

That raw index isn't what you actually play off of. It gets reduced by Handicap Percent (typically 90%) and capped by Max Handicap Index to produce your Playing Handicap, which is the number that actually gives you strokes on the course.

One setting worth knowing about upfront: Carry Scores Across Seasons decides whether rounds from a prior season still count toward your averaging window once a new season starts, or whether everyone effectively starts fresh.

New & Returning Players: The Pre-Eligibility Period

A player needs a minimum number of real rounds (Min Rounds Required) before they have a real, averaged handicap index. Before that, they're not left at scratch. Each pre-eligibility round gets its own one-off temporary handicap, computed fresh from that single round's own score. It's never averaged with other pre-eligibility rounds and never carried into the next one.

There are actually two temp-handicap percentages, not one: one for a regular member's own rounds and a separate one for rounds flagged as a substitute. That sub flag is per-round, not a permanent label on a player, so if a full member fills in as someone else's sub for a single week, that one round uses the sub percentage even though every other round of theirs uses the member one.

Provisional rounds are marked with a small asterisk wherever a handicap shows up (standings, schedule, player profile, dashboard), so it's clear the number isn't final yet. Once a player crosses the minimum-rounds threshold, their real average takes over automatically on their very next round; there's no manual switch to flip.

Fixing a Wrong Handicap

Three different tools touch handicaps and points, and they're not interchangeable; using the wrong one either does too little or redoes more than necessary:

  1. Recalc Handicaps (season page, โ€œโ†บ Recalc Handicapsโ€): recomputes every player's current index for one season from their latest rounds. Doesn't touch match results or points at all.
  2. Recalc Points (Admin โ†’ Season panel, โ€œ๐Ÿ” Recalc Pointsโ€): recomputes hole and overall points for every completed round in one season, using each round's already-stored handicap. Reach for this after a scoring-rule change, not a handicap change. It deliberately leaves handicaps alone.
  3. Rebuild Handicap Timeline (Admin โ†’ More Tools โ†’ ๐Ÿ›  Rebuild Handicap Timeline), the full rebuild: every player's handicap, every round's net score, and every match's points, walked in true chronological order across every season, using whatever settings were actually in effect on each round's own date. This is the one to reach for after changing a handicap setting (rounds-to-average, percent, cap, etc.). It can preview the result first (same code path as the real apply, just rolled back afterward) before you commit to it.
  4. Two separate manual-override mechanisms also exist, and they don't conflict with each other: the Handicap Matrix lets you hand-edit one specific round's playing handicap, while the Handicap History page lets you set an override that becomes every following round's starting point going forward, with a required reason kept visible in that player's history permanently.
  5. If a player's handicap needs to stop counting old rounds after an injury or long absence, set an Oldest Date For Handicap on their player edit page. Rounds before that date are excluded from their averaging window without deleting any of their actual scoring history.
๐ŸŒ๏ธ Points

Choosing a Scoring Format

A league runs one scoring format at a time, set on League Settings: Match Play, Stableford, Best Ball, Team Totals, or Classical Stroke Play (see Scoring Format for how each one is scored). Switching formats mid-season is possible, but every round already played stays scored under whatever format was active when it was entered. It mixes two point systems in the same season's standings, so it's worth picking a format before week 1 rather than partway through.

Each format has its own point values (per-hole win/tie, overall bonus) as separate settings: Match Play's are at 1.05-1.07, Best Ball's at 1.09-1.11, Team Totals' at 1.12-1.14, and Classical Stroke Play's single points-per-stroke setting at 1.15. Only the settings for the active format actually do anything.

Why Match Play Shows Two Different Net Scores

If your league runs Match Play, you'll notice the Scoring Debug page shows two different net numbers per hole. That's not a bug; it's two genuinely different calculations answering two different questions.

Hole-by-hole win/loss is decided by comparing strokes the way real singles match play does: only the higher-handicap player in the pairing gets strokes, one per hole up to their handicap gap with the other player, given on the hardest holes first. This result depends on who you're paired against. The same round could come out differently against a different opponent.

The overall point for the round works differently on purpose. It compares each player's own full net score (their own gross minus their own full handicap, nothing to do with who they're paired against) the way stroke play does. This is the number that also drives your personal stats, Standings, and the Net column everywhere else in the app.

Because the two methods allocate strokes differently, they can occasionally disagree on a single hole. Someone can be down on the hole-by-hole result but still take the overall point, or vice versa. That's expected, not a scoring error. Stableford leagues never see this, since every player scores against par independently there with no opponent-dependent math involved.

Overriding a Matchโ€™s Points

The scoring engine can't model every possible ruling: a rules infraction, a bonus, a one-off admin decision. For those, an admin can manually override a player's points for a specific matchup directly from the Scoring Debug page (โ€œOverride Points โ†’โ€ next to any matchup).

A reason is required for every override, and nothing gets silently lost: the full history of every override ever set on a matchup (who, when, what it was before, what it changed to) stays visible on that same page permanently, not just the current value. An overridden value shows an โ€œOverriddenโ€ badge anywhere it appears.

Clearing an override is its own explicit action, not something that happens as a side effect of re-saving scores. Clearing it re-runs the normal points calculation for that round so the value actually reverts to what the engine would compute on its own.

๐Ÿ”„ Subs

Handling a Sub or an Absence for a Matchup

From any matchup's Subs/Absences page, mark any scheduled player Absent, and either assign an existing player as their SUB or type in a new name on the spot. Typing a new name creates that person as a player automatically, no separate roster step needed first.

Each absence can also be marked Excused, with an optional reason. Excused status feeds directly into how that absence affects the overall point. See โ€œWhat Happens When a Player Is Marked Absentโ€ below.

Players Requesting a Sub

A player who knows they can't make an upcoming week can request a sub straight from their own schedule, with an optional note, instead of texting the admin directly. Their request shows up under My Sub Requests, where it can be cancelled any time before it's filled if plans change.

Every open request across the whole league lands in one place for the admin (Admin โ†’ ๐Ÿ”„ Sub Requests), sorted by the week it's for, ready to assign a specific sub to from that same queue rather than hunting through individual matchups.

What Happens When a Player Is Marked Absent (No Sub)

If a player is marked Absent with no sub assigned, BGLT still needs a score to keep the matchup scoreable. It generates a โ€œghostโ€ score for them automatically (par on every hole, adjusted for their handicap), shown in italics wherever it appears so it's never mistaken for a score they actually played.

Whether that ghost score can still win the overall point against their opponent is a league policy choice, not automatic. See Absence Overall Point Policy. Marking an absence Excused only matters if that policy is set to key off excused status; otherwise it's just a record-keeping note.

Ghost scores never count toward personal gross stats (average gross, best gross, rounds played for gross purposes), regardless of what the points policy is set to, since nothing was actually played. That exclusion is unconditional and separate from the points question above.

๐Ÿ’ฐ Contests

Setting Up Skins

Skins run per round, not per season. The Skins page (season overview) lists every completed round in that season as its own entry: participant count, pot size, and whether it's been calculated yet. Nothing calculates automatically; an admin opens a round and hits Calculate once scores are in.

Each round pulls its buy-in amount and gross/net basis from the season's Skins defaults (Default Buy-In Amount, Default Scoring) unless overridden for that specific round. If nobody wins a hole, its pot carries forward into the next calculated round rather than disappearing.

Skins Flights split entrants into handicap-based groups (Low/High, or more) so one low-handicapper doesn't sweep every hole. Flights use up to four threshold cutoffs set on the season's Skins settings; once enabled, results, pots, and carryovers are all tracked separately per flight, not pooled together.

Turning on Allow Players to Self Opt-In lets members choose for themselves whether they're playing for skins that week, instead of an admin building the participant list by hand every round.

Setting Up Custom Contests

Beyond skins, Custom Contests cover the usual side games (Long Drive, Closest to Pin, Low Gross, Low Net, Most Birdies, or a fully custom one), set up per season from the Contests admin page, each tied to a specific week (or every week, if Recurrence is set to run it week-by-week instead of once).

Team Low Net is the one type BGLT calculates automatically from that week's scorecards: Calculate (or Calculate All, for a recurring one) fills in results with no hand-entry. Every other contest type needs its winner(s) entered manually, since there's no way to know who hit the longest drive from scorecard data alone.

Results stay editable after the fact, and the Contest Winners report pulls everything together across a season (by contest, by week, low score, or skins leader), so players aren't hunting through individual weeks to see who's won what.

๐Ÿ”ง Trouble Shooting

This section is being written โ€” check back soon.