Admin Guide

Eggbeater Admin Panel

Everything you need to set up your club, manage tournaments, and keep parents informed.

1

Getting Started

What is Eggbeater?

Eggbeater is a tournament management platform built for water polo clubs and high school programs. Your admin panel is where you build schedules, manage rosters, communicate with parents, and run live scoring — all from your phone or laptop.

Parents and admins can access Eggbeater via our mobile-optimized web app or by downloading the Eggbeater native app for iOS or Android.

Open the Admin Panel

Go to eggbeater.app/admin.html?club=your-club-id in any browser. Bookmark it for quick access.

Sign In with Google

Tap Sign In with Google and use the Google account that was authorized by your club's platform admin. Your email must be on the approved admin list.

Select Your Age Group

Use the age group pills at the top of the screen to switch between teams (e.g., 14U Girls, 16U Boys). Each age group has its own schedule, roster, and tournament data.

Start Building

Add your games, import your roster, configure settings, then hit Save & Deploy to publish everything to the parent app instantly.

💡

Tip: The admin panel works great on mobile. You can manage everything from the pool deck on your phone.

2

Your Dashboard

The Header

The header bar is your command center. It shows your club name, the current tournament, and the active age group. Here's what each piece does:

  • Age Group Pills — Tap to switch between teams. A colored dot shows each team's status (green = live, red = draft, gray = no data). The list now wraps for better visibility on mobile.
  • Tournament Library — In the "+ Games" tab, manage your private library of tournament drafts. Save entire workspace snapshots (games + rosters) to swap between tournaments easily.
  • Save & Deploy Button — Saves and publishes your currently active workspace to the parent app instantly.

Navigation Tabs

The admin panel is organized into tabs. On desktop/tablet, all tabs are visible directly in the left sidebar — no More button needed. On mobile, the primary tabs (Schedule, Roster, Games) are in the bottom bar, and the remaining tabs are one tap away via the More button:

Schedule Roster Games More … (mobile)
ScheduleView and manage the current game schedule for the selected age group
RosterAdd players, import from spreadsheets, manage cap numbers
GamesTournament settings, add/edit games, clock config, multi-team mode, templates, brackets
Club InfoOrganization type, logo, branding, admin management, join links
CommunicationPush notifications, announcements, Telegram/GroupMe/TeamSnap bots
ArchiveSeason dashboard, past tournament records, stats
HistoryTournament results, MaxPreps import (high school)
3

Club Setup

First-Time Setup Checklist

When you first access your club's admin panel, complete these steps to get everything configured:

  1. Set Organization Type — Go to Club Info and choose "Club / Age Group" or "High School". This changes the age group labels (10U-18U vs. Varsity/JV).
  2. Set Club Name — This appears in game cards as "Pacific Waves vs. NorCal Gold". Leave blank to use the default "vs." format.
  3. Set Branding Colors — Pick your club's primary and secondary colors so the parent app matches your brand.
  4. Upload Club Logo — A square image under 150KB. Shows in the app header and game cards.
  5. Share the Join Link — Copy your club's parent link from Club Info and share it with families. They'll open it in a browser to follow your team.
📱

Parent Link: Your club's app URL is eggbeater.app/?join=your-club-id. Parents open this link, pick their age group, and they're set. No account required.

4

Schedule & Games

Adding Games

Go to the Games tab to build your tournament schedule. You have several options:

  • 📊 Bracket Sheet SyncRecommended for tournaments. Connect directly to the tournament director's Google Sheet and pull your schedule automatically. See below for a full walkthrough.
  • Tournament Library — Save your current "Workspace" (games and roster) as a named draft. You can build these in advance and load them when needed.
  • + Add Game — Add games manually with opponent, time, location, pool, and cap color.
  • Start Fresh — Use the "✨ Start Fresh" button to clear your current workspace games and roster without affecting your saved drafts or the live site.
  • Paste Schedule — Paste a full schedule from a spreadsheet (Google Sheets, Excel).
  • Clone from Archive — Reuse a past tournament's structure (games/roster) with scores cleared.

📊 Bracket Sheet Sync — Step by Step

If the tournament director shares a Google Sheet with the bracket, you can pull your team's schedule directly from it — no copy-pasting required. The app re-checks the sheet on a schedule and updates your games automatically if anything changes.

💡

Before you start: Make sure the Google Sheet is set to Anyone with the link can view (Share → Change → Anyone with the link). It won't work on a private sheet.

Step 1 Paste the Google Sheets URL
Copy the full URL from your browser (or the link the tournament director sent you) and paste it into the field. Tap Next →.
Step 2 Enter the pool seedings range
This is the grid on the sheet that lists which teams are in which pools. Enter the cell range (e.g. J3:M6). If the first row of that range contains pool names like "Pool A / Pool B / …", the app picks them up as headers automatically. Tap Fetch Pools → and you'll see a preview grid of all pools and seeds.
Step 3 Find your team
Type your team name exactly as it appears on the sheet (e.g. Diablo). Tap Find My Team →. The app highlights your team in the pool grid and confirms your pool and seed (e.g. "✅ Found: Pool B, Seed 2"). It then automatically scans for your games.
Step 4 Review your games
The app scans the schedule columns (Date / Location / Time / White / Blue) and finds every row containing your team name. It automatically sets cap color based on which column your team appears in — White cap if you're in the White column, Dark if you're in the Blue column. Review the list and tap Continue →.
Step 5 Re-bracket (Day 2 advancement)
If the tournament has a second day where teams advance based on pool results, tap Yes, it does. Enter the cell range that shows the bracket paths (e.g. J13:M29) and tap Fetch Re-bracket →. If it's a one-day tournament, tap No, single day.
Step 6 Set the auto-sync interval
Choose how often the app should re-check the sheet for changes — every 5, 10, or 30 minutes, or manual only. Tournament directors sometimes update game times or locations the morning of the event; auto-sync means parents always see the latest schedule.
Step 7 Deploy to the app
Review the summary (games found, pool, re-bracket, auto-sync interval) and tap 🚀 Deploy to App. The games go live immediately and the admin panel switches to the Schedule tab so you can review. If you have auto-sync enabled, the app keeps checking the sheet in the background.
⚠️

Finding the right cell ranges: Open the Google Sheet, click the top-left cell of the pool grid and note the cell reference in the top-left of the sheet (e.g. J3), then click the bottom-right cell (e.g. M6). Your range is J3:M6. The same method works for the re-bracket range.

🎨

Colour-coded bracket sheets: Some tournament directors use row background colours (e.g. yellow = 14u, cyan = 12u) instead of a text column to indicate age groups. The Bracket Sheet Sync wizard handles this automatically. In Step 1, check "Age groups separated by row colour", enter the legend cells (e.g. A18, B18) where the sheet labels each colour, and tap Detect. The wizard reads the age group labels, shows them as buttons, and you tap yours. The column layout is also auto-detected, so sheets with non-standard column orders (e.g. Game# / Time / White Hats / Dark Hats / Pool) work without manual configuration.

📅 Calendar Subscribe Feed

After deploying games through NJO Mode, parents can subscribe to a WebCal calendar feed that auto-updates in Google Calendar, Apple Calendar, or Outlook.

  • How it works: After NJO Mode deploys, a webcal:// link appears. Copy and share it with parents (e.g. in a group chat). Parents tap the link once to subscribe — all games appear as calendar events immediately.
  • Auto-updating: The feed refreshes every 5 minutes. As bracket opponents are confirmed, game titles update automatically (e.g. "Bracket Game TBD" becomes "vs. San Clemente Red"). Times and locations also update if the director changes them.
  • Calendar name: You name the calendar in Step 4 of the NJO wizard (e.g. "14u Girls NJO 2026 — 680 Drivers"). This name shows in the parent's calendar app.
  • Works everywhere: Google Calendar, Apple Calendar (iPhone/Mac), Outlook, and any app that supports iCal/WebCal feeds.

📱 What Parents See — Live Activities, Widgets & More

These features are automatic — once you deploy games, parents get access to all of them with no extra setup on the admin side.

  • Live Activities (iPhone) — During a live-scored game, the score appears on the iPhone lock screen and in the Dynamic Island with team logos, a running clock, and a live event feed. Auto-starts when scoring begins, auto-ends on Final.
  • Live Updates (Android 16) — A persistent notification chip shows the current score (e.g. "Q2 7–5") and updates on every poll tick. Requires Android 16+ with notification permission granted.
  • Home Screen Widgets — Parents can add Score, Schedule, and Stats widgets to their home screen on both iOS and Android. Widgets update automatically as games progress.
  • Calendar Subscribe — Parents subscribe once to the WebCal feed and all games appear in their calendar app, auto-updating as the bracket resolves. See Calendar Subscribe Feed above.
  • Offline Scoring — Scorers can enter scores even with no internet. Goals queue locally and sync automatically when connectivity returns.
💡

Tip for admins: Let your parents know these features exist! A quick message in your group chat — "You can add a widget or follow the game on your lock screen" — drives adoption.

🏆 NJO Mode — National Junior Olympics

NJO Mode is a dedicated wizard for USA Water Polo's National Junior Olympics — a 4-day, multi-bracket tournament with a complex advancement structure. It reads directly from the MASTER BY DIVISION sheet that USA Water Polo posts each year, which contains every game for every division in a single tab.

💡

When to use NJO Mode vs Bracket Sheet Sync: Use NJO Mode when you have the USA Water Polo MASTER BY DIVISION sheet. Use the regular Bracket Sheet Sync wizard for all other tournaments. NJO Mode auto-detects the sheet format — if it sees the GMID division column it knows it's an NJO sheet.

Step 1 Paste the NJO sheet URL
Open the MASTER BY DIVISION tab in the USA Water Polo sheet, copy the full URL (including the #gid=… at the end), and paste it into the field. Tap Detect NJO Format →. The wizard fetches the sheet, finds the GMID column, and lists all available division codes (e.g. 12G, 12GX, 14G, 14GX).
Step 2 Configure Team A
Select your division from the dropdown — the labels decode automatically (e.g. 12G = 12U Girls Championship, 12GX = 12U Girls Classic). Enter your team name exactly as it appears in the White or Dark columns on the sheet (you can omit the pool-seed prefix — e.g. just San Clemente Red not B1(2)-San Clemente Red). Tap Find Team A & Scan All Games →. The wizard finds all group play games for your team and traces the full bracket tree using the W to # / L to # advancement columns.
Step 3 Configure Team B (optional)
If you're bringing two teams to NJO (e.g. Team A in 14G Championship, Team B in 14GX Classic), tap Yes — add Team B and repeat the same configuration. Each team gets its own bracket in the parent app — parents tap A or B to switch.
Step 4 Name the parent calendar & set sync frequency
Enter a name for the parent calendar subscribe link — something specific like 14u Girls NJO 2026 — 680 Drivers. This is what parents see when they subscribe. Then choose how often to auto-sync (every 5 minutes is recommended during NJO since bracket opponents get confirmed quickly after pool play).
Step 5 Deploy to app
Review the summary and tap 🏆 Deploy NJO to App. Two things happen: (1) Group play games go live in the Schedule tab immediately with real opponents, times, and locations. (2) The Bracket tab populates with all possible games your team could play, organized by tournament day. After deploy, a 📅 calendar subscribe link appears — copy and paste it into your team chat. Parents tap it once to add the schedule to Google Calendar, Apple Calendar, or Outlook. The calendar auto-updates every 5 minutes as bracket opponents are confirmed.
📅

Parent calendar updates: Bracket games start as "Bracket Game TBD — Gm 125". As auto-sync confirms opponents (e.g. Winner of Gm 97 is resolved to San Clemente Red), the calendar event title updates automatically on every calendar app that subscribed. Parents don't need to do anything — their calendar just updates.

⚠️

GMID codes explained: The division code format is {age}{gender}{bracket}. Gender: G = Girls, B = Boys, C = Coed. Bracket: no suffix = Championship, X = Classic. Examples: 12G = 12U Girls Championship · 12GX = 12U Girls Classic · 14B = 14U Boys Championship · 10C = 10U Coed Championship.

Game Fields

OpponentTeam you're playing (e.g., "NorCal Gold")
DateGame date — shown on game cards in the parent app
TimeStart time (e.g., "8:30 AM")
LocationVenue name — parents can tap for Google Maps directions
PoolPool play group (e.g., "Pool A") or bracket round (e.g., "Semifinal")
Cap ColorWhite or Dark — shown on game cards so parents know what cap to bring

Tournament Settings

In the Games tab, configure your tournament details:

  • Tournament Name & Dates — Shown at the top of the parent app.
  • Coming Soon Message — A placeholder shown to parents before you've added games (e.g., "Schedule will be posted Wednesday").
  • Scoring Password — Optional. If set, scorers must enter this password to submit live scores.
  • Clock Settings — Quarter length, breaks, halftime, and timeout configuration for the live scoring clock.

Upcoming Mode

Toggle a game to Upcoming Mode to show tournament info (name, dates, venue) without revealing the full schedule. Useful when you know the tournament but haven't finalized games yet. Parents see the coming soon message instead of an empty schedule.

⚠️

Remember: Changes aren't visible to parents until you Save & Deploy. You can edit freely without affecting what parents see.

5

Roster Management

Adding Players

Go to the Roster tab to manage your team's players. Each player has a cap number, first name, and last name.

  • + Add Player — Add one player at a time.
  • Paste from Spreadsheet — Paste roster data from Google Sheets or Excel. The parser auto-detects columns by header (Cap/#, Name, Position).
  • Upload CSV — Import a CSV file with the same column detection.
  • Sync from Google Sheets — Enter a Google Sheets URL and sync your roster directly. Expected columns: Team, Cap #, First Name, Last Name.

Multi-Team Rosters

If your age group has multiple teams (A/B/C), each team has its own roster section. Players are assigned to a specific team. You can customize team labels in the Games tab → 🏊 Multi-Team Mode section (e.g., "Red" and "Blue" instead of "A" and "B"). Requires Club Plan.

Exporting

Tap Export Roster CSV to download your roster as a spreadsheet file. The file is named with your club ID and age group (e.g., pacific-waves-14u-girls-roster.csv).

6

Deploying Changes

How Save & Deploy Works

The 💾 Save & Deploy button is the most important button in the admin panel. Here's the workflow:

  1. You make changes in the workspace (add games, update roster, change settings).
  2. Changes are saved as a draft but not yet visible to parents.
  3. Option A: Tap the main 💾 Save & Deploy button (top-right header) to publish your current data.
  4. Option B: Go to the **Schedule** tab and tap **Deploy to Live** on any saved draft in your library.
  5. Changes go live instantly — the draft replaces the active site data and triggers the live update.

Safe to experiment: Until you deploy, parents see the last deployed version. Edit freely, preview everything, then deploy when it looks right.

When to Deploy

  • After adding or editing games
  • After updating the roster
  • After changing tournament settings or coming soon message
  • After entering scores (if not using live scoring)
  • After switching to/from Upcoming Mode

You don't need to deploy after: changing club info/branding (saves automatically), sending push notifications, or managing admin access.

7

Tournament Lifecycle

Create → Build → Activate → Archive

CreateTap the tournament selector and choose "+ New Tournament". Give it a name and ID.
BuildAdd games, import roster, set clock, configure settings. Deploy when ready.
ActivateMark the tournament as "Active" so it's the one parents see. Only one tournament per age group is active at a time.
ArchiveAfter the tournament ends, archive it. Results are saved permanently and show up in the Season Dashboard and player stats.

Brackets

If your tournament has bracket play after pool play, use Auto-Populate Bracket in the Games tab. It analyzes pool play results, ranks teams by record and goal differential, and maps them to bracket seeds. You can review and manually adjust seeds before applying.

Templates

Save any tournament structure as a reusable template with Save as Template. Next time you set up a similar tournament, load the template and your games, bracket format, and structure are pre-filled — just update dates and opponents.

8

Team Communication

Push Notifications

Parents who enable notifications in the app receive push alerts on their phone. You control what gets sent:

  • Game Day Reminders — Automatic. When enabled, parents get reminders at 2 hours, 1 hour, and 30 minutes before each game with the opponent, time, and location. Toggle this on/off in the Communication tab.
  • Announcements — Manual. Write a title and message, pick which age groups to notify, then send. Rate limited to 5 per hour.
  • Scheduled Announcements — Toggle "Schedule for Later" to pick a future date/time. The notification sends automatically at the scheduled time.

Subscriber Stats

Tap Load Subscriber Stats in the Communication tab to see how many parents have notifications enabled, broken down by age group and notification type.

Messaging Integrations

Connect external messaging services to automatically post score updates:

  • Telegram — Add your bot token and chat ID.
  • GroupMe — Add your bot ID.
  • TeamSnap — Connect via OAuth and link your team.

After connecting, score updates and announcements can be sent to these channels alongside push notifications.

9

Live Scoring

How It Works

During a game, a designated scorer opens the parent app (not the admin panel), taps on the active game, and enters the live scoring view. They can:

  • Tap to increment/decrement scores for each team
  • Run the game clock with quarter tracking
  • Record individual player stats (goals, assists, attempts, exclusions, earned exclusions, and GK Saves)
  • Manage lineups and track playing time per quarter

Score updates push to all parents watching in real time and can also update the Apple Watch companion app for parents following the current game. If the scorer loses internet, updates queue locally and sync automatically when connectivity returns.

Scoring Password

Set a Scoring Password in Tournament Settings to prevent unauthorized scoring. Only people with the password can submit live scores. Share it with your designated scorer at each game.

Sharing Results

After a game, parents can tap Share Result on any completed game card to generate a branded image with the final score. It's sized for Instagram and can be shared directly to iMessage, Instagram Stories, or any social app.

10

Archive & Season Stats

Season Dashboard

The top of the Archive tab shows your club's season record at a glance — overall wins, losses, ties, and win percentage across all age groups. Each age group has its own row with a record summary and color-coded win percentage bar.

Tournament Archive

Every archived tournament is stored permanently with full game results and rosters. Tap any archived tournament to see the detail view with all game scores, roster snapshot, and metadata. You can also load an archived roster back into a current tournament.

Player Stats

In the Roster tab, tap Load Season Stats to see cumulative player statistics across all archived tournaments: games played, goals, assists, steals, ejections, and goals per game. Stats are sortable by any column. Players and parents can also see these stats in the public app.

CSV Export

Export game results or your roster as CSV files at any time. Files are named with your club and age group for easy organization.

11

Custom Branding

Make It Yours

In the Club Info tab, the Branding section lets you customize how the parent app looks for your club:

  • Primary Color — Used for the header, buttons, dark-cap game cards, Apple Watch branding, and accent elements throughout the app.
  • Secondary Color — Used for highlights, live accents, the Apple Watch accent strip, and supporting elements.
  • Header Style — Choose between gradient, bold gradient, or solid color.
  • Club Logo — Displayed in the app header and on game cards.

Changes preview in real time as you pick colors. Tap Save Branding when you're happy with the look.

🎨

Pro tip: Use your club's official colors for a polished, professional look. If you're unsure of the hex codes, check your club's website or ask your club coordinator.

12

Managing Admins

Adding New Admins

In Club Info, the admin management section lets you control who has access:

  • Invite Link — Generate a one-time invite link and send it to a new admin. They click the link, sign in with Google, and they're automatically added.
  • Add by UID — If you have someone's Firebase UID, add them directly.

Admin Roles

Each admin has a role that controls their access level:

AdminFull access — can edit games, rosters, settings, deploy, and manage other admins.
ScorerLimited access — can only use the live scoring interface. Cannot edit schedules, rosters, or settings.

Use the Scorer role to give a parent access to run the scoreboard at a tournament without granting full admin permissions.

13

Advanced Features

🏆

Tournament Host

Build tournament bracket sheets with seeding grids, divisions, and game formats. Share with tournament directors via a 6-character code.

📊

Analytics

View subscriber counts by age group, daily page views, and platform growth metrics in the Communication tab.

📱

Dark Mode & Themes

Parents can choose Light, Dark, or System theme in the app settings. Great for poolside visibility in bright sun or evening games.

History & MaxPreps (High School)

If your organization type is set to "High School," you get a History tab for tracking season-by-season tournament results. Import results directly from MaxPreps by pasting the schedule page URL, or add them manually. History data powers the multi-season record displayed to parents.

14

Tips & FAQ

Common Questions

Q: I made changes but parents can't see them? A: You need to tap Save & Deploy. Changes are only visible to parents after deploying.
Q: How do parents find my club's app? A: Share the URL from Club Info with your parents. No download or account required.
Q: Can I have multiple admins? A: Yes. Generate an invite link in Club Info and send it to anyone you want to grant access. You can assign Admin or Scorer roles.
Q: What happens if I archive a tournament by accident? A: You can clone it from the archive to restore the full tournament structure, or activate it again from the tournament selector.
Q: Does live scoring work with bad WiFi? A: Yes. Scores queue locally on the device and sync automatically when connectivity returns. The scorer sees a yellow "offline" banner.
Q: Can I use this on my phone? A: Absolutely. The admin panel is fully mobile-responsive. Many coaches manage everything from the pool deck.

Pro Tips

  • Clone often — If you attend the same tournament each year, clone last year's from the archive. Games, roster, and structure carry over.
  • Use Upcoming Mode — Deploy the tournament info early so parents can see the dates and venue, even before you have the full schedule.
  • Set up game reminders — Enable automatic push reminders in the Communication tab. Parents love getting automatic reminders at 2 hours, 1 hour, and 30 minutes before game time.
  • Save templates — If your league has a standard format (e.g., "3 pool play + bracket"), save it as a template for one-click setup.
  • Print game sheets — Print them before you leave for the tournament. They have your roster, scoring grids, and quarter tracking built in.
  • Check the Activity Log — If multiple admins manage the same team, the activity log (in the Games tab) shows who changed what and when.
🙋

Need help? Tap the Help tab inside the admin panel for detailed documentation on every feature, or reach out to your platform administrator.