Overview
The registration system handles player enrollment from initial interest through roster approval. Admins configure options — for example, "Travel Team 14U" or "Recreational League" — each with a capacity limit, active/inactive status, and an optional waitlist. A public registration form enforces capacity in real time via a Firestore transaction so concurrent submissions never exceed the limit. When capacity fills and waitlists are enabled, new applicants are automatically queued as waitlisted rather than receiving an error. The admin review queue supports filtering across the full pipeline: Pending, Waitlisted, Offer Extended, Offer Accepted, Enrolled, Released, and Rejected. Admins can extend offers to specific waitlisted applicants, release applicants who are no longer pursuing a spot, and move accepted registrations into the roster approval flow. For teams using Sports Connect, an external provider integration supports Team ID mapping, connection status monitoring, last-sync display, and manual re-import. Both schedule and roster imports from Sports Connect include a conflict-preview step before any data is committed.
In This Article
- Creating and configuring registration options (labels, capacity, waitlist toggle, active status)
- How capacity enforcement works via Firestore transaction and what happens when capacity fills
- Waitlist behavior: how waitlisted applications are created, stored, and promoted
- Using the admin review queue with all 7 status filters
- Extending waitlist offers and releasing participants who are no longer pursuing a spot
- Moving accepted registrations into the roster approval flow
- Configuring Sports Connect as a registration provider (Team ID, connection status, sync timing)
- Registration schedule import with conflict-preview step before committing
- Registration roster import with conflict-preview step and per-row classification
- Audit metadata stored on all imported records
- Reordering and archiving options without losing historical records
- What happens to waitlisted applicants when capacity is increased manually
Who Is This For
Admin — full setup and lifecycle management. This role creates and manages options, sets capacity and waitlist policy, processes the review queue, extends and records offers, approves or rejects applications, moves accepted registrations into roster approval, configures Sports Connect, and triggers re-imports. No other role can access the registration pipeline.
Admin — day-to-day queue processing. Even if another admin handled initial setup, any admin can process the queue on an ongoing basis: reviewing pending applications, extending waitlist offers, recording offer acceptance, and moving accepted applicants to Enrolled status.
Admin — Sports Connect sync health. If your team uses Sports Connect, an admin monitors connection status, checks last-sync timestamps, triggers manual re-imports when data appears stale, and resolves conflicts flagged during preview. Note: public applicants use the registration form directly — they are not covered here. Parents and coaches do not have access to the admin review queue.
Prerequisites
- Admin access on the team (team owner or listed in
adminEmails). - At least one registration option created and set to Active before the public form goes live — otherwise the form shows "No options available."
- For Sports Connect integration: the external Team ID from your Sports Connect account dashboard. Stripe or payment configuration is handled separately from registration option setup and is not covered here.
- For schedule import: your team schedule must be accessible via
edit-schedule.html. - For roster import: your team roster must be accessible via
edit-roster.html.
Choose Your Path
- First-time setup — create options and set capacity before opening registration to applicants.
- Mid-season capacity change — edit an existing option's capacity limit or toggle active status without deleting historical records.
- Process pending applications — open the review queue, filter by status, review form data, and approve, reject, or hold individual applications.
- Manage a full cohort — extend offers to waitlisted applicants, record acceptances, batch-release declined applicants to free queue space.
- Import schedule from Sports Connect — trigger a re-import, preview the conflict table, and commit selected rows.
- Import roster from Sports Connect — trigger a re-import, review Add/Update/Conflict classification per row, and commit.
- Check sync health — view connection status and last-sync timestamp in
Edit Team, force a re-import if data is stale.
Step-by-Step Workflow
Part A: Option Setup and Capacity
-
Open registration option management. Navigate to
Edit Teamand open the Registration section (Settings → Registration). You see a list of existing options, or an empty state if this is your first time. - Add a new option. Click + Add Option. Enter a descriptive label — this text appears on the public registration form exactly as typed, so be specific (e.g., "Travel Team 14U", "Recreational Division — Spring 2026"). Set a capacity limit as a whole number (e.g., 18 players). Toggle Active — only active options appear on the public form. Inactive options are hidden from applicants but remain editable and can be reactivated at any time.
- Enable the waitlist (optional). Toggle Enable Waitlist per option. With waitlists on: when the capacity limit is reached, new applicants are queued automatically with Waitlisted status instead of seeing a "full" error. With waitlists off: when capacity fills, the option is blocked on the public form and no new submissions are accepted for it until capacity is manually increased or an existing applicant is released.
- Reorder options. Drag option rows or use the move controls to set the display order on the public form. Applicants see options in the exact order you set here.
- Save. Options are live immediately after saving — the public form reflects your changes in real time with no cache delay.
- Edit or archive an existing option. Select an option to change its label, capacity limit, or active status. Archiving an option hides it from future applicants and from the public form while preserving all historical registration records associated with it. You cannot delete an option that has associated applications — archive it instead.
Part B: How Capacity Enforcement Works
- Transactional capacity check. When an applicant submits the public form selecting a specific option, the backend runs a Firestore transaction that reads the current enrollment count and compares it against the capacity limit before writing the new record. If the limit has already been reached by a concurrent submission, the transaction fails and the form returns a "capacity full" error to that applicant. This prevents race conditions where two applicants both see an open slot and both succeed — only one write can win. If the option has waitlists enabled, the transaction instead creates a waitlisted record rather than failing.
- Checking current fill level. In the admin review queue, the count of Enrolled and Pending applications per option is visible. Use this count relative to the capacity limit to decide when to extend waitlist offers. A full cohort (Enrolled + Pending = capacity) means new Pending applicants are contributing to the waitlist queue.
Part C: Admin Review Queue
- Open the review queue. Navigate to Team Admin → Registration. The default view shows all Pending applications. The status filter bar at the top lets you switch between all seven pipeline statuses: Pending (submitted, not yet reviewed), Waitlisted (capacity was full at time of submission, auto-queued), Offer Extended (you invited a waitlisted applicant to enroll), Offer Accepted (applicant confirmed they want the spot), Enrolled (moved to roster approval flow), Released (returned to pool, no longer pursuing enrollment), Rejected (admin declined). Select All to see every registration regardless of status.
- Review a pending application. Click any applicant row to expand the detail view — you see submitted form data: name, contact information, selected option, and any custom fields defined for that option. Choose an action: Approve (moves status to Enrolled and triggers roster approval flow), Reject (moves to Rejected — you may optionally record an internal reason), or leave in Pending to review later.
- Extend a waitlist offer. Filter to Waitlisted status. Find an applicant you want to invite and click Extend Offer. Their status moves to Offer Extended. The app does not send an automatic email or notification — you communicate the offer separately via team chat or your external communication method. Use this status as your internal tracking signal that an invitation is pending their response.
- Record offer acceptance. When an applicant confirms they want the spot through your communication channel, return to the queue, find them in Offer Extended status, and click Mark Accepted. Their status moves to Offer Accepted.
-
Move to roster approval. From Offer Accepted status, click Enroll. This creates or links a roster record for the player in the roster system and moves the registration to Enrolled status. Complete the player's full roster onboarding (jersey number, contact details, medical info) in
edit-roster.html. - Release a waitlisted applicant. If a waitlisted applicant withdraws interest, does not respond within your defined window, or you decide not to extend an offer, click Release. Their status moves to Released. Released applicants no longer count against capacity and are removed from active consideration. You can then extend offers to the next applicants in the Waitlisted queue.
Part D: Sports Connect Integration
-
Configure Sports Connect as the registration provider. In
Edit Team→ Registration Provider, select Sports Connect from the provider dropdown. Enter the external Team ID from your Sports Connect account (this is how the integration maps your ALL PLAYS team to the correct Sports Connect dataset). Save. The connection status indicator updates to show: Connected, Not Connected, or Error. Last sync time and last sync result are displayed below the indicator. - Trigger a manual re-import. Click Re-import from Sports Connect to pull the latest data immediately without waiting for any scheduled sync. This opens a choice between two import types: Schedule Import and Roster Import. Both types show a conflict-preview table before any data is committed to Firestore.
- Schedule import — preview and commit. After triggering a schedule import, a preview table appears. Each row shows: date/time, event type (game or practice), opponent or title, location, and import status. Import status values are: Add (new event not in your local schedule), Update (event exists locally with changed fields), Unchanged (event exists locally with no differences), or Conflict (event likely matches an existing local event but with ambiguous data — excluded from import by default). Deselect any rows you do not want to import. Click Commit to apply the selected, non-conflicting rows. A registration source metadata field is stored on each imported event for audit purposes.
-
Roster import — preview and commit. After triggering a roster import, a preview table appears. Each row shows the player record and its import classification: Add (new player not found on your roster), Update (player exists on roster with changed fields), Unchanged (player exists with no differences), or Conflict (ambiguous match — excluded automatically). Conflict rows require manual resolution in
edit-roster.htmlafter the import. Uncheck any safe Add or Update rows you want to skip. Click Commit to apply selected rows. Source metadata is stored on all applied records for audit purposes.
Common Questions
- Can I have multiple registration options active at once? Yes — parents see all active options on the public form and choose one when submitting. You can run multiple cohorts simultaneously (e.g., Travel and Recreational) with independent capacities and waitlists.
- Can I close registration mid-season? Yes — toggle all options to Inactive. The public form will display "No options available" until you reactivate at least one.
- What happens to waitlisted applicants if I increase capacity? They remain in Waitlisted status — capacity increases do not automatically promote applicants. You must manually extend offers to the next waitlisted applicants in the queue.
- Can I export the registration list? Yes — open
edit-roster.html, choose a registration form and status filter in Registration Review, then click Export CSV. The download includes applicant, guardian, status, selected option, submitted date, fee/payment snapshot, linked roster player, and decision note fields for reconciliation. - What if Sports Connect sync returns an error? Verify the Team ID is correctly entered in
Edit Team. Check the connection status indicator — an Error state often indicates a credential or ID mismatch. Try forcing a manual re-import. If the error persists, verify your Sports Connect account has the integration enabled on their side. - Do imported schedule events overwrite existing events? No — Conflict rows are excluded automatically. The preview table always shows exactly what will change before you click Commit, and you can deselect individual rows.
- Can I undo a committed roster import? There is no bulk undo. Imported records can be individually edited or deleted from
edit-roster.htmlafter the import. Review the preview carefully before committing. - Can parents see their application status? Not currently within the app. Admins communicate status changes via team chat or external channels. The admin queue is the source of truth for all application statuses.
- Can I reject a waitlisted applicant directly? Yes — from any non-Enrolled status (including Waitlisted), you can mark an application as Rejected with an optional internal reason. Released is used when an applicant voluntarily withdraws; Rejected is the admin-initiated decline.
Recovery and Troubleshooting
- Registration option not appearing on the public form — check that the option is set to Active (not Inactive or Archived) in
Edit Team→ Registration. Only active options are visible to applicants. - Capacity showing an incorrect fill level — refresh the admin review queue. Capacity counts are read from Firestore in real time; a stale browser tab may show an outdated count.
- Sports Connect sync stuck or showing stale data — verify the Team ID is correct, check the connection status indicator for an Error state, and force a manual re-import from the Registration Provider panel.
- Schedule import showing all rows as Conflicts — this indicates the import found likely matches for every incoming event against your existing local schedule. Review the event dates and types carefully — you may already have these events imported from a previous sync. If correct, leave Conflict rows unchecked and commit zero rows to avoid duplicates.
- Roster import classifying expected Updates as Add — the matching logic uses player name and jersey number to find existing roster records. If the Sports Connect name or number differs slightly from the local record (spelling variation, name change), the match fails and the row is classified as Add. Apply the Add row and then manually merge or clean up the resulting duplicate in
edit-roster.html. - Enrolled applicant not appearing in roster — Enrolling a registration triggers the roster approval flow, but the player still requires full roster onboarding. Open
edit-roster.htmland complete the player's profile to make them visible on the active roster. - Offer Extended but applicant never responded — define a response window in your team's process (e.g., 72 hours). After the window passes, click Release on the Offer Extended record and extend the offer to the next Waitlisted applicant. The Released record is preserved for audit.
- Registration form showing "No options available" — all options are either Inactive, Archived, or capacity-full with waitlists disabled. Reactivate at least one option or increase the capacity limit on an existing full option to restore access.
Related Workflows
- Build and Maintain Team Roster — complete player onboarding after moving a registration to Enrolled status.
- Manage the Schedule — manage imported and manually created schedule events after a Sports Connect schedule import.
- Team Setup — configure admin access and registration provider settings.