← Back to Help Center

Workflow Guide

Build and Maintain Team Roster

Use this workflow to keep your team roster accurate, review staff access, and keep parent access connected.

10 min read Updated from live product pages

Overview

Use this workflow to keep your team roster accurate, review staff access, and keep parent access connected.

You can:

  • Add players and jersey numbers.
  • Review current staff access in the same roster workspace.
  • Update player details.
  • Deactivate players without losing history, then reactivate them later.
  • Link parents to active players and send invites.

In This Article

  • Who should run this workflow.
  • What to prepare before you start.
  • How to choose the right roster action.
  • Step-by-step roster, staff visibility, and parent invite actions.
  • How to recover from common invite or roster issues.
  • Track player completion status with roster tracking items.
  • Send household invites and revoke household contact access.
  • Preview roster import conflicts before applying changes.

Who Is This For

  • Coach: Day-to-day roster updates and parent invites for active players.
  • Admin: Full roster cleanup, including reactivation and parent-link fixes.

Prerequisites

  • A team already exists.
  • You have full-access permissions for that team.
  • Player names and jersey details are ready.
  • Parent emails are ready if you plan to send email invites.

Choose Your Path

  • Add one player: Use Add Player.
  • Add many players: Use Bulk AI Update with roster text or an image, then review and apply.
  • Review current staff access: Use the Staff section to confirm owner, admin, and scoped helper coverage for the team.
  • Correct player details: Use Edit on that player row.
  • Remove a player from active roster: Use Deactivate.
  • Bring a player back: Use Reactivate.
  • Link a parent: Use Invite Parent on an active player.
  • Invite Parent is disabled: Reactivate the player first, then send the invite.
  • Track player items (forms, certifications, equipment checks): Use Roster Tracking.
  • Invite another caregiver to access a player: Use Household Invite from Parent Dashboard.
  • Revoke a household contact's access: Use Revoke Access in Parent Dashboard.
  • Import roster from an external source: Use Roster Import with conflict preview.

Step-by-Step Workflow

  1. Open roster management and confirm you are on the correct team.
  2. Review the Staff section for current owner, admin, and scoped helper access.
  3. Add or update players.
  • Single add: In Add Player, enter name and optional number/photo, then submit.
  • Bulk update: In Bulk AI Update, upload an image and/or paste roster text. Select Process with AI, review changes, then select Apply Changes.
  1. Edit a player when details change.
  • Select Edit in the player row, update name/number/photo, then save.
  1. Manage active status.
  • Select Deactivate to remove a player from active roster while keeping stats and history.
  • Select Reactivate when the player returns.
  1. Link parents and send invites.
  • Select Invite Parent for an active player.
  • Choose relation, enter parent email, then send.
  • No email available: Leave email blank to generate a shareable code/link.
  • Existing account detected: The parent is linked automatically; use a generated code/link only if auto-linking cannot complete.

Invite email enforcement: When a parent redeems an invite code during signup, the email they use for the new account must match the invite email exactly (case-insensitive, whitespace-normalized). A mismatch is rejected immediately after the activation code validation step — before the Firebase Auth account is created. This prevents parents from accidentally creating accounts under a different email than the one the invite was addressed to. If the parent receives an email mismatch error, they must use the exact email the invite was sent to, or ask the admin to resend the invite to the correct address.

Invite context preservation: When a parent follows an invite link and is sent to the signup or login page, the invite code and invite type are carried through automatically in the URL parameters. The activation code field on the signup form is pre-filled with the code from the invite link. The parent does not need to re-enter the invite code manually during signup — the context is preserved through the full authentication flow.

Duplicate invite code resolution: If multiple invite documents exist for the same code (for example, a stale record and an active record), the system selects the currently redeemable document — not necessarily the first Firestore result. This prevents failed invite redemptions caused by stale or superseded invite records that happen to share a code value.

  1. Verify your updates, including optional printable staff output.
  • Check the team roster list.
  • Open the player page to confirm name, number, and photo.
  1. Parent completes the invite.
  • Parent opens the invite link or enters the 8-character code.
  • If they open it on another device, they confirm the invited email and complete join.

Roster Tracking Items

Admins can create player-scoped tracking items (forms, equipment checks, certifications) and toggle complete/incomplete status per player.

  1. Open Roster Tracking from team management.
  2. Create tracking items with a label. Set items as active, private (admin-only), or public (visible to linked parents).
  3. Mark each player's status as complete or incomplete. Completion counts are shown in the roster matrix.
  4. Parents with linked players see their player's public tracking items in read-only view on the team page.

Household Invites and Revocation

Parents can share player access with other caregivers and revoke that access when needed.

  1. Open Parent Dashboard and navigate to the player's entry.
  2. Select Invite Household Member. The invite is scoped to your linked players and stored as a pending record — no access is granted until the invitee redeems it.
  3. To revoke: select Revoke Access next to a household contact. This marks their membership revoked, removes delegated parent/player links, and invalidates related invite tokens. Revoked invite codes are blocked at redemption.
  4. Roster view shows delegated household contacts with relation, inviter name, and current status.

Roster Import with Conflict Preview

When importing a roster from an external source, a preview shows each row's status before you commit.

  1. Open Roster Import and upload or paste the roster data.
  2. Review the preview: rows are labeled Add, Update, Unchanged, or Conflict.
  3. Uncheck safe add/update rows you want to skip. Conflict rows are automatically excluded — they are not applied.
  4. Select Apply. Source metadata and import audit fields are stored on applied records.

Athlete Profile Name Prefill

When creating a new athlete profile that is linked to an existing player record, the name field is now pre-filled from the player record that matches the teamId and playerId parameters in the URL. This avoids the most common source of name mismatches between the player roster record and the athlete profile display name.

  • The prefill applies only when creating a new profile where no name has been saved yet. Existing saved profile names are never overwritten by the prefill — edits you have already made are preserved.
  • If the profile builder is opened without both teamId and playerId in the URL, the prefill cannot run and the name field will be blank. Confirm the URL contains both parameters if you expect prefill to work.
  • This feature removes a common manual step during onboarding flows where the admin creates profiles for multiple players in sequence and must type the same name that already exists on the roster record.

Parent Dashboard and Roster Visibility

Parents and coaches see different views of the roster and schedule. Understanding what each role can see prevents confusion about missing items or missing controls.

What parents see

  • Parents linked to active players see their player's public tracking items in a read-only view on the team page. Items marked as private (admin-only) are not visible to parents regardless of their relationship to the player.
  • Parents cannot edit tracking items, mark completion status, or create new tracking items — those controls are available only to coaches and admins.
  • Standalone practice sessions — sessions that exist in Firestore without a linked schedule event — now appear on the parent dashboard schedule. Previously, only sessions linked to a calendar event were visible. Parents can now see all practice activity their player was associated with.

Sibling RSVP

Parents with multiple children on the same team now see separate RSVP controls for each child in the calendar event modal. Previously, submitting an RSVP for one child could affect the RSVP record for siblings on the same team. Each child's availability is now tracked independently, so a parent can mark one child as Going and another as Can't Go for the same event without the responses interfering with each other.

What admins and coaches see

Coaches and admins see the full roster including inactive players (when the inactive filter is enabled), all tracking items regardless of public/private status, completion counts per player in the roster matrix, and delegated household contacts with their current access status (active, pending, or revoked). Admins can toggle completion status and create or archive tracking items at any time.

Common Questions

  • Should I delete or deactivate a player?
  • Use Deactivate. It keeps historical stats and reports.
  • Can I invite a parent without email?
  • Yes. Generate a manual code and share the signup link/code.
  • What if the parent already has an ALL PLAYS account?
  • Share the generated code/link from the invite modal so they can connect right away.
  • Where do I confirm changes?
  • Check the team roster list, then open the player page.
  • Can parents see tracking items?

Only tracking items marked as public are visible to linked parents. Private items are admin-only.

  • What happens to a revoked household contact's data?

Their membership access is marked revoked, delegated parent/player links are removed, and any pending invite tokens are invalidated. Their account is not deleted.

  • What if the parent gets an "email mismatch" error during signup?

The parent is attempting to create an account with a different email address than the one the invite was sent to. The signup process enforces an exact match (case-insensitive, whitespace-normalized) between the signup email and the invite email. The parent must use the exact email the invite was addressed to. If they cannot access that email address, the admin should resend the invite to the email the parent wants to use.

  • Why do I see a "delegated contact" in the roster view?

Household contacts invited by a parent appear as delegated contacts in the roster view. Each delegated contact entry shows the contact's name or email, their relation to the player, the name of the parent who invited them, and their current access status — Active (invite redeemed and access is live), Pending (invite sent but not yet redeemed), or Revoked (access was withdrawn by the inviting parent or an admin). Delegated contacts with active status have the same player visibility as the inviting parent.

  • Can I see which practices a parent has viewed?

No — parent dashboard usage is not tracked per-user. Admins can see which tracking items have been marked complete and which practice sessions exist, but there is no log of which parents have opened specific schedule items or dashboard pages.

Recovery & Troubleshooting

  • Invite button is disabled.
  • Reactivate the player, then send the invite again.
  • Parent did not receive the email.
  • Use the fallback code or copy the signup link from the invite modal.
  • Parent opened the invite on a different device.
  • Have them enter the invited email on the confirmation step, then continue.
  • Code is invalid or expired.
  • Generate a new parent invite and share the new code.
  • Wrong parent linked to player.
  • Remove the parent connection from that player, then resend invite from the correct player row.
  • Duplicate player was added.
  • Keep the correct profile active and deactivate the duplicate.
  • Household invite not showing for parent: Confirm the invitee used the correct email address and the invite has not already been revoked.
  • Roster import showing conflicts: Conflict rows are skipped automatically. Review the preview and apply only add/update rows that are safe.
  • Parent signup rejected with email mismatch: The parent must use the same email the invite was sent to. The admin should open the invite record, check the stored invite email, and resend to the correct address if the wrong one was used when the invite was created.
  • Parent invite appears stuck on "pending": The invitee has not yet redeemed the code. They should open the original invite link or visit accept-invite.html and enter the 8-character code manually. If the invite link has expired or the email was lost, generate a fresh invite from the player's row and share the new code directly.
  • Household contact showing "revoked" status: A revocation was applied from the inviting parent's Parent Dashboard or by an admin. The contact's delegated access has been removed and their invite token invalidated. To restore access, the parent must re-invite the contact using Invite Household Member — the old invite code cannot be reactivated.
  • Athlete profile name not prefilling: Confirm the profile builder URL includes both teamId and playerId query parameters. If either is missing, the system cannot look up the linked player record and the name field will remain blank. Navigate to the profile builder from the roster row link to ensure both parameters are present.
  • team-setup
  • schedule
  • track-game
  • postgame

Need More Help

  • Start again from Choose Your Path for the exact change you need.
  • If an invite keeps failing, generate a fresh code and share it manually.
  • When contacting support or another admin, include team name, player name, parent email (if used), and the exact on-screen error.