Snap a round
Just finished shooting? Log it now.
Your team
Your stats
Your team's leaderboard
Team Trends
Site-wide scoreboard
Ranked by total combined score across every round ever logged, across all teams.
Top shooters
Top teams
Site Trends
Average score across every team, per round date.
Shooter
Score trend
Efficiency
Round history
Club Calendar
—
Saved
Changes save automatically as you tab or click away from a field. Leave any field blank if you'd rather not share it.
Security
Password
Two-factor authentication
Currently off
Public profile link
Read-only, no sign-in required — your rounds/average/best combined across every team and organization you belong to, the same numbers as "Your stats" on the Dashboard. Safe to share; regenerating invalidates the old link.
Off by default. While off, this link shows your stats without your name, and you appear as "Private Member" on any public (no-sign-in) team or organization leaderboard — a safer default for a roster that includes minors. This never affects what fellow signed-in teammates see.
Embed a small live stat card — paste into a forum signature (BBCode allows the tag below) or an email signature. Updates automatically as you log rounds.
Badge background
Your goals
Set a target and track your progress toward it — computed live from your rounds (team + personal, combined across every organization).
Your support requests
Matched to your account by email — includes anything submitted from Help & Guides under this same address, signed in or not. Submit a new one there.
Delete account
Permanently deletes your account. Any personal (non-team) rounds you logged are deleted with it. Team-scoped round/score history you contributed stays part of your team's leaderboard, the same as if you'd simply left the club. This cannot be undone.
Team stats
Team efficiency
Team Leaderboard
Team Trends
Game
Pick before reading or entering the sheet — station max and the AI prompt both depend on it.
1 — Upload the sheet
Using a blank sheet? Print the Trap Stats scoresheet — designed to photograph more accurately than a typical handwritten one.
Past Rounds
Full team management is on the web for now — Squad Leader guide
Team name
About this team
Shown to teammates, fellow league members, and admins — never on any public/no-sign-in page.
Team logo
Shown as a background behind your team's boxes on the site-wide scoreboard when your team or one of your shooters is leading.
Pending team requests
People who picked your team but still need approval from a Squad Leader or admin.
Squad Leader succession
Promote a fellow approved team member to Squad Leader alongside you. This is promote-only — removing someone else's Squad Leader status needs an admin.
Roster & handicap
Optional handicap yardage per shooter — shown as a hint while logging their round and on the Team Leaderboard. No automatic score adjustment.
Team invite link
While checked, this team won't appear as a pick-a-team option on the sign-up/join screen — only someone with this exact link can request to join. Uncheck to let anyone browsing pick your team.
Pre-selects this team on the sign-up/join screen so people don't have to find and type the exact name (or, while invite-only above, is the only way in at all). Joining still needs Squad Leader/admin approval. Auto-rotates every 7 days, so an old copy of this link stops working on its own.
Public leaderboard link
While checked, this link (and this team's rows on your organization's own public leaderboard link, if it has one) shows as not public — nobody on the open internet can see this team's names or scores at all. Doesn't affect what a signed-in fellow club member already sees.
Read-only, no sign-in required — safe to post at the clubhouse or share with family. Regenerating invalidates the old link. A roster member who has turned off "show my name publicly" on their own Profile is hidden here too; anyone who hasn't opted in (or whose roster entry isn't tied to an account at all — a guest, a one-off sub, or a name shared by more than one teammate) still shows their real name — worth knowing before sharing this link for a roster that includes minors, or turn on "Hide this team" above instead.
Leagues
Info, location, contact, schedule, cost breakdown, and standings for each league on this site. Your own team's league (if it has one) is pinned to the top.
Standings game
Events
Dated competitions — teams from any club can be added to the roster, plus individual entrants. Expand one to see its roster and, if you administer it, manage everything about it.
Log a personal round
Track a round separately from your team — just 5 station taps and a total, no roster needed. Personal rounds are yours alone; they never count toward any team, league, or site-wide team stat.
Game
Total: —
Saved.
Using a blank sheet? Print the Trap Stats scoresheet — designed to photograph more accurately than a typical handwritten one.
Join a team
Join an existing team or start a new one. You can keep browsing without one, but a team unlocks New Round entry, your team's leaderboard, and stat tracking.
Joining a league needs approval from that league's admin before the team is active.
Creating a new team makes you its Squad Leader, approved right away. Joining an existing team needs approval from that team's Squad Leader or an admin first. Any personal rounds you've already logged stay yours permanently — joining a team doesn't merge or reattribute them.
App settings
Site-wide only — organizations never see or configure this. Switch to Anthropic manually if Gemini has an outage.
Cloudflare Turnstile — bot-mitigation challenge shown on the registration form. Create a widget at the Cloudflare dashboard (Turnstile) for this site. Leave blank to skip; registration behaves exactly as it does today.
Stripe — billing/subscriptions for organizations upgrading off the free plan. Create Products+Prices for Small and Large (monthly and annual, 4 Price IDs total), a webhook endpoint at
/api/stripe/webhook (events: checkout.session.completed, customer.subscription.updated, customer.subscription.deleted, invoice.payment_failed), and enable the Customer Portal, all from the Stripe Dashboard. Leave blank to skip; orgs simply can't upgrade off the free plan until this is configured.Umami analytics — privacy-friendly traffic/engagement tracking. Sign up at cloud.umami.is (or self-host) and add a website there to get a Website ID. Leave blank to skip analytics entirely.
SMTP — used to email Squad Leaders/admins when someone requests to join their team. Leave blank to skip email alerts entirely.
Saved.
Audit log
The last 100 admin actions — settings changes, user/team/league edits, round edits. Sensitive values (API keys, passwords) are never recorded, only which field changed.
| When | Admin | Action | Status |
|---|
Users
| Name | Last login |
|---|
Sign-in log
Every sign-in attempt, successful or not — for spotting patterns like one IP hitting many accounts, or repeated failures against one. Failed attempts show a reason even though the account holder just sees a generic error.
| When | Method | Result | IP |
|---|
Teams
Tap a team to rename it, assign a league/division, manage its logo, roster, members, and rounds — or delete it.
Leagues
Optional grouping teams can belong to — info, location, contact, schedule, and costs shown in everyone's League tab. Assign a team to one from its card under Team Management.
Seasons
Optional date ranges (e.g. "Fall 2026") — pick one from the selector under your name to scope the Leaderboard, Trends, and site-wide scoreboard to just that season instead of all-time.
Organizations
Every organization on the deployment. Tap one to manage its invite/public links, membership setting, and about/fee text. Full event and season management for an organization still lives under that organization's own Organization tab.
Support: view an organization
A read-only snapshot of one organization's own setup, roster, and recent activity — for helping debug a reported issue without asking someone to share their screen. Opening a view here is logged in the Audit log above, same as any other admin action. Nothing on this screen can be edited.
Support tickets
Issues and questions members submit from their Profile tab. Responding here emails the member and marks their bell notification resolved.