Eggbeater is a tournament tracking tool built for water polo teams and clubs. Core features are available free of charge; optional paid plans unlock additional features for clubs and parents.
These Terms of Service ("Terms") govern your use of the Eggbeater Water Polo app ("the App") available at eggbeater.app. By accessing or using the App you agree to these Terms. If you do not agree, please do not use the App.
1 About the App
The App is a tournament management and tracking tool created for water polo teams and their families. It is available as a mobile web application at eggbeater.app and as a native mobile application for iOS via the Apple App Store and for Android via Google Play. The App provides schedule viewing, live score tracking, player statistics, Google Calendar sync, push notifications, and optional Google Sign-In for cross-device preference sync. The App supports multiple clubs and tournaments, with each club maintaining independent data, admin access, and tournament archives.
Core features of the App are available at no cost. Optional paid plans — including Club Plan (for club administrators), Parent Monthly (for parents), and Tournament Host (for tournament directors) — unlock additional features as described in each plan's offering at the time of purchase.
2 Eligibility & Access
The App is intended for use by parents, guardians, coaches, and players affiliated with a water polo team using Eggbeater. Access to live scoring requires a tournament-specific password provided by the team administrator. Access to admin functions requires Google Sign-In with a Firebase account authorized by an existing club admin, or a legacy admin password during the migration period.
By using the App you represent that:
- You are at least 13 years of age, or are a parent or guardian using the App on behalf of a minor team member.
- You will use the App only for its intended purpose of tracking your team's water polo activities.
- If you sign in with Google, you are authorized to use the Google account you provide and you accept Google's Terms of Service in addition to these Terms.
3 Google Sign-In & Cross-Device Sync
The App offers optional sign-in with Google via Firebase Authentication. By signing in you authorize the App to:
- Verify your identity using your Google account.
- Store your My Players selections, chosen age groups, and A/B team preferences in Google Firestore, linked to your Google account's unique ID.
- Automatically restore those preferences on any device where you sign in with the same Google account.
- Request access to Google Calendar (bundled into the same sign-in consent screen) so you can connect your calendar without a second sign-in step.
Sign-in is entirely optional. The App functions fully without it; preferences are stored on-device only if you choose not to sign in. You may sign out at any time using the "Sign Out" button in the App header. Signing out ends the cloud sync session but does not delete your previously saved preferences from Firestore. To request deletion of your stored preferences, contact the App administrator.
Your use of Google Sign-In is subject to Google's Terms of Service and Firebase's Terms of Service.
4 Google Calendar Integration
The App offers optional integration with Google Calendar. Calendar access is granted as part of the Google Sign-In flow — no separate authorization popup is required. By signing in and connecting a calendar you authorize the App to:
- Create calendar events for scheduled team games in the calendar you select.
- Update or delete those events if the tournament schedule changes.
On subsequent visits, the App silently refreshes the calendar access token in the background if a calendar is connected — no additional action is required from you.
The App requests only the minimum Google Calendar permission necessary (calendar scope) and does not access any other Google services, emails, contacts, or data. You may revoke this authorization at any time through your Google Account permissions page or by disconnecting within the App.
Your use of Google services through the App is subject to Google's Terms of Service and Google's Privacy Policy.
5 Push Notifications
If you enable push notifications, your device's push subscription token (APNs device token on iOS, Web Push endpoint on browsers) is stored on our infrastructure solely to deliver schedule-update alerts, game reminders, and announcements from your club's admin. You can unsubscribe at any time within the App or through your device's notification settings. No marketing or unrelated messages will ever be sent.
6 Paid Plans & Subscriptions
Eggbeater offers optional paid plans that unlock additional features. By purchasing a plan you agree to the following:
- Billing. Subscriptions are billed on the schedule shown at checkout (monthly or annual). One-time purchases (e.g. Tournament Host) are charged once at the time of purchase. All prices are displayed before you confirm payment.
- Payment processing. In-app purchases on iOS and Android are processed by Apple (App Store) and Google (Google Play) respectively, and are subject to their standard terms. Web-based purchases are processed by Stripe. We never receive or store your payment card number.
- Subscription management. You can manage, upgrade, downgrade, or cancel your subscription at any time through the platform where you purchased it: iOS users through Apple's subscription settings; Android users through Google Play subscription settings; web purchasers through the billing portal accessible in the admin panel.
- Cancellation & refunds. You may cancel a subscription at any time. Cancellation takes effect at the end of the current billing period — access continues until then. Refunds for App Store and Google Play purchases are governed by Apple's and Google's respective refund policies. Web purchase refund requests can be directed to hello@eggbeater.app.
- Free trials. If a free trial is offered, it begins immediately upon activation. You will not be charged until the trial period ends. Cancel before the trial ends to avoid charges.
- Feature availability. Features included in each plan are described at the time of purchase and may be updated over time. We will provide reasonable notice of material changes to plan contents.
- RevenueCat. Subscription entitlements are managed through RevenueCat. RevenueCat tracks purchase events and subscription status to determine which features your account has access to. See RevenueCat's Privacy Policy for details on data they collect.
7 Live Scoring & Statistics
The live scoring feature allows a designated parent or coach to enter game statistics in real time, which are then visible to all App users for the duration of the game. By entering statistics you agree that:
- You will make a reasonable effort to record stats accurately.
- Statistics are unofficial and are not endorsed by USA Water Polo or any governing body.
- Player names you associate with stats are entered voluntarily and stored only on your device (or relayed temporarily via Cloudflare KV for live updates, expiring after 8 hours).
8 Admin Authentication & Club Management
The admin panel allows authorized users to manage tournament data, rosters, and settings for their club. By using the admin panel you agree that:
- Admin access is granted via Google Sign-In and controlled by a list of authorized Firebase UIDs maintained by existing club admins. You must be explicitly added to a club's admin list to access its admin functions.
- Your Firebase UID is stored in both Cloudflare KV and Google Firestore for authorization purposes. This UID is associated with your Google account and is used solely to verify your admin identity.
- Admin API requests are authenticated using Firebase ID tokens (JWTs) that are cryptographically verified on each request. Tokens are not stored on the server.
- A legacy password-based admin login is available during migration but may be removed in a future update.
- You are responsible for managing admin access to your club. Only grant admin UIDs to trusted individuals.
9 Multi-Club & Multi-Tournament Architecture
The App supports multiple water polo clubs, each operating independently with their own data, admins, and tournaments.
- Each club is identified by a unique club ID (e.g.
pacific-waves). All data — schedules, rosters, scores, bot credentials, tournament archives, and admin access lists — is scoped to and isolated by this club ID. - Admins for one club cannot access or modify another club's data. Data isolation is enforced at both the server (Cloudflare Worker) and database (Firestore security rules) levels.
- Each club can manage multiple tournaments. Tournaments can be created, activated, archived, and deleted through the admin panel. Only one tournament per club can be active at a time.
- When a tournament is archived, all age group data is automatically snapshotted to Firestore for long-term storage. Archived tournaments can be viewed in the tournament selector but are read-only.
- Parents access a specific club's data via the
?join=URL parameter. No cross-club data is ever loaded or displayed.
10 Acceptable Use
You agree not to:
- Use the App for any purpose other than tracking your team's water polo activities.
- Attempt to access the admin panel without authorization.
- Enter false, misleading, or malicious data.
- Attempt to reverse engineer, scrape, or interfere with the App's infrastructure.
- Use the App to harass, defame, or harm any player, parent, coach, or team.
11 Intellectual Property
The Eggbeater name and logo are associated with the Eggbeater Water Polo project. The App code and design were created for private team use. Nothing in these Terms grants you any rights to redistribute or resell the App.
12 Disclaimer of Warranties
The App is provided "as is" without warranties of any kind, express or implied. We do not warrant that:
- The App will be available at all times or free from errors.
- Schedule or score information will be accurate or complete.
- Push notifications or calendar sync will always function as expected.
Tournament schedules are subject to change at any time by tournament organizers. Always confirm game times with your team administrator.
13 Limitation of Liability
To the fullest extent permitted by law, the App and its creators shall not be liable for any indirect, incidental, or consequential damages arising from your use of or inability to use the App, including (without limitation) missed games due to inaccurate schedule information, data loss, or push notification failures.
14 Third-Party Services
The App relies on the following third-party services, each governed by their own terms:
- Vercel Terms of Service — App hosting
- Cloudflare Terms of Service — Push notification infrastructure
- Firebase Terms of Service — Authentication and Firestore database
- Google Terms of Service — OAuth, Calendar API, and Firebase infrastructure
- Apple Standard EULA — iOS distribution and in-app purchases
- Google Play Terms of Service — Android distribution and in-app purchases
- RevenueCat Terms of Service — Subscription entitlement management
- Stripe Services Agreement — Web payment processing
15 Changes to These Terms
We may update these Terms from time to time. The "Last updated" date at the top of this page will reflect any changes. Continued use of the App after updates constitutes your acceptance of the revised Terms.
16 Contact
Questions about these Terms can be directed to the administrator of your team's Eggbeater deployment.