← AYSO Region 58 — All Guides

Team & Player Roster Setup
Region 58 Runbook

AYSO Region 58 — Fall 2026 (Membership Year 2026) Core / Recreational  |  Prepared August 9, 2026
What This Covers Everything between "registration is collecting names" and "players are on teams and know it." This guide replaces the earlier Leagues & Divisions Setup runbook and absorbs it whole. It is written for people whose muscle memory is SportsConnect, so each phase names the SC equivalent before it names the clicks. Every in-product step below is taken from the PlayMetrics Recreational League Operations and Coaching & Divisional Coordinator Tools webinars; anything still unverified is marked. The technical companion — full webinar detail including game scheduling and standings, written for whoever maintains our automation — is docs/playmetrics-recreational-league-operations.md in the AYSORegionAutomation repo.
Who does what Steven (Registrar) and Sara: Phases 1–5 and 9. Division Coordinators: Phases 6 and 7 only. A coordinator never needs the league setup — hand them "What Changed" plus the one-page card at the end and nothing else.
Order of Work
  1. Create the Fall 2026 In-House League
  2. Create your team shells
  3. Build divisions & scoring rules
  4. Review coach requests
  5. Create team assignments & scope your coordinators
  6. Put players on teams  ← coordinator's job
  7. Balance teams  ← coordinator's job
  8. Notify families
  9. Optional: player verifications & sanctioning body

What Changed From SportsConnect

Three differences cause nearly all the confusion. Read these before touching anything.

1. The nesting order is different

In SC, the Program was the top-level container and the season was a label on it. In PlayMetrics the Season is top-level, and it sets the date range and age classifications that everything underneath inherits.

SportsConnect→PlayMetrics
Organization→Club
(season was just a label)→Season — top-level; sets dates & age classifications
Program→Program — the registration container, now inside a Season
Division→Package (registration) or Division (in a League) — see below
Team→Team — a shell you create up front, filled via Team Assignments
Team Assignment / Allocation→Team Assignment — drag-and-drop sandbox

2. "Division" means two different things

The single most expensive misunderstanding in this migration PlayMetrics uses the word division for two unrelated objects. A Package is the registration-side thing families pick when they sign up — age group, gender, price, linked questions. A Division is the league-side thing that holds teams and drives game scheduling and standings. Our SC "10U Boys" was one object; in PlayMetrics it is two, created in two different places at two different times. The two are connected in Phase 5, where you tell a team assignment which registration packages feed it. When someone says "did you set up the division," ask which one they mean.

3. Putting a player on a team tells nobody

Assigned → notified → rostered In SC, team assignment and family notification were effectively one motion. In PlayMetrics they are separate, and the middle step is a button someone has to press. Drag a player onto a team and they sit in assigned status — "they're not aware that they have been added to this team yet." Only when you hit Notify are they emailed and automatically moved to rostered. Rostered is what gives the family app access to the team and its schedule.
What did not get worse Region 58's use of SC's automatic team builder was discretionary and instructional-only — a coordinator could use it or not. PlayMetrics' equivalent (player ranking and auto-assignment) is not in the initial release, but since auto-balancing was never our standard practice, this is a minor gap. Phase 7 covers what to do meanwhile, and the feature was slated for mid-August 2026 — likely live by the time you read this.

Pre-Flight Checklist

Confirm all of the following before creating the league.

Phase 1 Create the Fall 2026 In-House League

Navigation: Programs → Leagues. A league is where you centralize your teams and players — it is, in the webinar's words, "the operational feature for you within PlayMetrics for the upcoming season." If you already built this league to hold your coach-request questions during registration setup, open it with the pencil icon instead of creating a new one.

  1. League Name. Use our season-naming convention so it reads unambiguously in lists and exports.
    Decision — League name Recommended default: 2026 Fall Core (matches the naming we already use in registration and data exports, e.g. "2025 Fall Core").
  2. Owner. Assign a league owner.
    Decision — Owner Recommended default: Steven (Registrar) as owner, with Sara retaining admin access regionally. Whether PlayMetrics allows more than one owner per league is CONFIRM IN-PRODUCT.
  3. League Type → In-House. This is the rec/core container: it unlocks team assignments, divisions, and generated game schedules.
    Decision — League type (effectively fixed) For core/rec the answer is always In-House. Travel is only for EXTRA/Alliance teams importing outside schedules. Do not select Travel.
  4. Additional settings. Two optional toggles appear here: allow coaches and team staff to submit official game scores, and enable game cards for printing.
    Decision — Scores and game cards Coach-submitted scores: OFF.  Game cards for printing: ON. Region 58 results are entered by Jeff Loeb, our statistician, working directly from the physical game cards. So the cards must print, and coaches must not have a second, competing route to file a result. One authoritative source (the card), one person entering it. This does not affect the Phase 3 scoring rules — those still compute the standings; only the data-entry route changes.
  5. Season and Age Classification. Four fields appear, but only the first is a choice — the other three are read-only and fill in automatically from the season you select:
    • Season — selectable. Choose the Fall 2026 / MY2026 core season. This is the only field you set here.
    • Age Classification — read-only. Inherited from the season.
    • Playing Season — read-only. Inherited from the season.
    • Sport — read-only. Inherited (expected: Soccer).
    VERIFY — if an auto-filled value looks wrong These come from the season's own definition, so the fix is upstream, not on this form: re-pick the Season, or correct the season's configuration. If the Season is right but a value still looks off, confirm with success@playmetrics.com before creating the league.
  6. Sanctioning Body. This is where you attach one.
    Decision — Attach a sanctioning body to this league? Recommended default: leave the core in-house league unlinked. Confirmed in the webinar: "If your region doesn't verify players, you won't have to set this up. You'll still be able to run the league as normal." AYSO National does not currently require birth-certificate verification for core play. Teams playing outside the region are a different league, not this one — see Phase 9, which explains what a sanctioning body does and does not do, and where it belongs if an outside competition requires tracked player documents.
  7. Teams. Select the team shells to include (Phase 2). You can leave this empty and add them from inside the league later.
  8. Link to the program. Point the league at the 2026 Fall AYSO Core program. This is the plumbing that makes the league aware of who registered and who volunteered — without it, the league is an empty shell and Phase 4 has nothing in it.

    What the two coach-volunteer toggles actually do

    1. Automatically add coach volunteers. There are two ways a person becomes a coach volunteer: they tick the volunteer question during their child's registration, or they use the public coach request link we publish. With this on, both routes flow straight into the league's Coach Requests list (Phase 4) as they happen. With it off, the signups still exist on the registration side, but somebody has to bring them into the league by hand.

    2. Notify the league owner. Emails the league owner each time someone completes a coaching request, so recruitment is a live feed rather than something you audit in August.

    The payoff shows up twice later. In Phase 4 you can filter coach requests by age group and see which flights are short. In Phase 6, because a volunteer stays attached to their own child, dragging that child onto a team makes PlayMetrics offer to install the parent as head coach in the same motion — but only if the volunteer record reached the league in the first place.

    Decision — Coach volunteer automation Recommended default: both on. There is no real downside: neither toggle assigns anyone to a team or contacts the volunteer. They only populate a list and email Steven. Everything about who actually coaches which team stays a manual decision in Phase 6.
    CONFIRM IN-PRODUCT — what "add" means The webinar showed these toggles being enabled but did not spell out whether "automatically add coach volunteers" populates the Coach Requests list only, or also creates a team-staff record. Everything downstream in this guide assumes the former (a list of candidates, no team attachment). Worth a five-minute check before the first season, because if it also creates staff records, the volunteer list and the roster could disagree.
  9. Save. You land in the league with its Teams / Players / Divisions / Games areas available.

Phase 2 Create Your Team Shells

PlayMetrics wants the shells of all your teams to exist before you assign anyone. They are needed twice over — once so team assignments have somewhere to drop players, and once so the division scheduler has teams to schedule. Empty teams now, players later.

Don't create them one at a time A webinar attendee asked exactly this ("I've had to manually create each team, would love a quicker way"). From the Teams tab in the left-hand menu, go to More Actions → Import Teams. PlayMetrics gives you a sample template.
Teams → More Actions → Import Teams. Note the Teams tabs along the top: Teams, Games Record, Tryouts, Team Assignments, Guest Assignments.
18:10  Teams → More Actions → Import Teams. Note the Teams tabs along the top: Teams, Games Record, Tryouts, Team Assignments, Guest Assignments.
Import template — do not delete column headers The highlighted (yellow) fields are required. Fields you don't know yet — number of players, starting players — may be left blank, but if you delete the column header the import errors out. Keep every header, blank the values you don't have.
Decision — Team naming Recommended default: <gendered division code>-<NN> — 10UG-01, 06UB-14 — then append the coach's surname once known. The B/G in the code already carries gender, so a trailing "Boys"/"Girls" is noise. This is the SportsConnect convention we're carrying over (10UB-01 Zamani), which keeps historical rosters and exports lining up. The webinar showed renaming a team to "Barrett" after its head coach at assignment time, which is exactly the same habit. Starting numbered means the import doesn't block on coach recruitment.

The import template, column by column

From PlayMetrics' sample-teams.csv. Thirteen columns, in this order:

ColumnRegion 58 valueNotes
seasonFall 2026Must match the PlayMetrics Season name exactly.
name10UB-01Gendered code plus sequence — the B/G already says Boys/Girls. Coach's surname appended later.
acct_codeblankAccounting code; blank in the sample's own rows.
genderM / FCo-ed value for 05U is CONFIRM IN-PRODUCT — the sample shows only M and F.
levelCoreCONFIRM — sample shows "Classic" and "Academy", which are club-soccer levels.
birth_yearblankUse either this or age_group, never both.
age_group06U … 19UOurs is an age-group season, so this is the one we fill.
minimum_ageblankBlank in every sample row.
coach_first_nameblankLeave blank at import. Coaches attach in Phase 6, where a parent volunteer can be installed as head coach in the same motion as their child is placed.
coach_last_nameblank
coach_emailblank
coach_mobileblank
num_starting_players4 / 5 / 7 / 9 / 11Players on the field at kickoff — not roster size. Sample used 7 and 11.
birth_year and age_group are mutually exclusive The sample demonstrates this rather than stating it: its two Spring 2026 rows fill birth_year and leave age_group empty; its two Fall 2026 rows do the exact opposite. Fall 2026 is age-group based for us, so fill age_group and leave birth_year blank.
Note what is absent: there is no roster-size column The template carries num_starting_players — the 7 in 7v7 — and nothing that caps a roster. This corroborates the Phase 3 warning: our per-division roster sizes are almost certainly our own planning figures, not limits PlayMetrics enforces. Expect the coordinator to respect the cap, not the system to reject an over-full team.

Don't type this file — generate it

We already have the enrollment data, so the whole import is arithmetic. The automation repo has a flag for it:

Usage

python src\main.py --pm-team-import --team-import-season "Fall 2026"

Run it from AYSORegionAutomation. It reads the latest packages.json already sitting in data/playmetrics/ and writes reports/teams_import_<date>.csv, printing its arithmetic per division so you can sanity-check before importing:

10UB Boys: 84/108 enrolled (+3 wait) / 9 roster -> 10 team(s), ~8.4 players each
07UG Girls: 3 enrolled, under the 6 minimum - no teams yet
05U Schoolyard Coed: non-team program (registration cap), no shells generated

Why packages.json and not an export Because max spots exist nowhere else. Our admin reference is explicit: the Packages tab is the only source for live "Active Registrations X of Y", waitlist counts, and financials — "Max spots are NOT in any export CSV." Roster sizes and on_field come from DIVISION_CONFIG, so these numbers and the Portal's enrollment page cannot drift.
One deliberate disagreement with the enrollment report The Portal and the enrollment report compute current_teams by flooring — they answer "how many full teams does this enrollment support," a fullness metric. The importer rounds up, because shells have to seat everyone: flooring gives 84 players at roster 9 nine teams of 9.3, and 40 at roster 22 a single team of 40, both over cap. Everyone Plays wins. Don't reconcile the two — the difference is intentional and documented in team_count().
One value still to confirm before a real import The level defaults to "Core", which is a guess — the PlayMetrics sample only showed "Classic" and "Academy", club-soccer levels. Override with --team-import-level once success@playmetrics.com confirms the right AYSO rec value. num_starting_players is no longer guesswork: it comes from on_field (4/4/5/7/9/11), which corrected an earlier assumption of 5 at 07U.
A division PlayMetrics knows about but we don't If a package looks like a division but isn't in DIVISION_CONFIG — say we add an 11U flight — the run prints SKIPPED unknown division '11UB Boys' rather than quietly dropping it. Add the division to DIVISION_CONFIG and re-run; don't hand-edit the CSV, or the next run loses the fix.
Run it early, then again later Recommended: generate once registration is roughly 80% in, import those shells, then re-run for the gap. Divisions missing from the enrollment file are skipped, so a partial run is safe. Waiting for final numbers stalls Phases 3 and 5, both of which need teams to exist.

Phase 3 Build Divisions & Scoring Rules

These are the league-side Divisions from the warning above. They are "the starting process to how you're going to be able to create your schedules for in-house game scheduling." Path: More Actions → Build Divisions.

Choose a build method

PlayMetrics offers three:

  1. One division for each gender and age classification — pick a gender and an age range, and it generates the set. "A lot of clubs or regions will likely use" this.
  2. By grouping of age classifications and gender — for combined flights like "9U to 10U Boys".
  3. Manually — one at a time.
Decision — Build method for Region 58 Recommended default: method 1, run twice — Boys 06U–19U and Girls 06U–19U. It generates our 16 divisions in two passes. Use method 2 only if a division lacks the numbers to stand alone; the Q&A confirmed combined divisions are fully supported, since "any teams that are going to be playing each other essentially can be included in the same division."

Before it commits, PlayMetrics shows you all the generated division names so you can edit them. Do it here — this is where our zero-padding gets applied.

Decision — Division naming convention Recommended default: use the names our own systems already key on — "06UB Boys", "06UG Girls", "10UB Boys", … "19UG Girls", plus "05U Schoolyard Coed". These are the exact keys in the Region 58 Portal's DIVISION_CONFIG, so matching them means the portal, the automation repo, and PlayMetrics all agree without a translation layer. Zero-padding is what makes divisions sort youngest-to-oldest; without it "10U" sorts before "6U".
The gender letter is load-bearing — never substring-match on it Our automation repo records this the hard way: division codes are gendered (08UB, 08UG) and you must match the full gendered code, never the first three characters. Substring-matching 08U silently merges Boys and Girls and inflates every count downstream. It applies equally to anything you build against PlayMetrics exports.
PlayMetrics appends a date range to package names A package comes back as 10UB Boys - August 1, 2016 - July 31, 2018, not 10UB Boys. Anything joining our division names to PlayMetrics data has to strip the suffix first — the portal does, and so does --pm-team-import.
Turn on "automatically add new teams to these divisions" Recommended default: on. With it set, a new 9U team added to the league lands in the 9U division by itself. The league dashboard carries an icon legend showing which divisions auto-assign. Saves a whole class of "why isn't this team on the schedule" problems.

After generating, every division appears in a list. If we end up without enough teams for a flight, you can delete that division individually from the list.

Per-division settings

Each division carries: number of teams, games per team, game duration, division settings, schedule status, and scoring rules. You can edit one division, or select several and use Manage Settings to set them together — the right move for us, since all our 7v7 flights share parameters.

Manage Settings covers:

To change one division later: click into it, then More Actions → Division Settings.

Selecting several divisions at once and using Manage Settings, so 8U/9U/10U Boys share one set of parameters.
30:57  Selecting several divisions at once and using Manage Settings, so 8U/9U/10U Boys share one set of parameters.
Roster size is not on this screen The per-division parameters demonstrated were about scheduling — games, duration, periods, fields. A max-roster / team-capacity field was not shown. Our per-division roster sizes in the table below may therefore be a planning figure we enforce ourselves rather than a value PlayMetrics caps. CONFIRM IN-PRODUCT before relying on the system to stop an over-full team.

Division assignments

Division Assignments is where teams get associated with divisions.

Attaching game fields to a division. Only facilities already entered in the system appear here.
32:29  Attaching game fields to a division. Only facilities already entered in the system appear here.
With auto-add on, most of this is already done. To add one by hand, add the team at its age group and it drops into the matching division. To adjust from the other direction, open Division Settings and select or remove teams at the bottom.

Scoring rules

Optional, and set per division or in bulk. Create New Rule gives you:

Decision — Scoring rules for Region 58 Recommended default: no scoring rule for 05U–08U; a simple 3/1/0 rule with goal-difference-then-head-to-head tiebreakers for 10U and up. This mirrors the demo's own logic — they left 4U/5U general because "we technically don't want to collect any scores." Leave the per-goal bonus off; it rewards running up scores, which sits badly with Everyone Plays.
If we keep using an outside scheduler Directly asked in the Q&A. Game scheduling "is going to be separate from the teams and roster generation system," so skipping it does not block team building or rosters. And if we receive schedules from elsewhere, league settings offer import games via CSV instead of generating them.

Phase 4 Review Coach Requests

Do this before team assignments, because who is coaching shapes how you build teams. League → Coach Requests collects every head and assistant coach volunteer — both those who volunteered during registration and those who used the public coach request link.

Coach Requests filtered by age group — how you spot a flight that is short on coaches.
08:30  Coach Requests filtered by age group — how you spot a flight that is short on coaches.

Phase 5 Create Team Assignments & Scope Your Coordinators

League → Assignments is "the tool that you're going to use to create all of your teams and roster players." Click Create Assignment.

How to carve them up

Decision — One assignment per coordinator's scope Recommended default: one team assignment per Division Coordinator, covering exactly the age groups that person owns. PlayMetrics' own guidance: build assignments "based on those parameters — if you have a specific divisional coordinator for your U8 boys, create that assignment separately." A single coordinator covering 6U–8U gets one assignment spanning all three. Also a hard technical limit: no more than 40 teams per assignment, or the interface slows down.

Settings when creating

  1. Name it for the scope, e.g. "08U–10U Boys".
  2. Assignment type → send the notification of assignment. This is what makes the assignment a sandbox: players sit in assigned status until you press Notify, at which point they are automatically rostered.
  3. Program — point it at 2026 Fall AYSO Core.
  4. Player placement rules — select the registration packages this assignment covers (e.g. 08U Boys, 09U Boys, 10U Boys). Anyone who registered for those packages automatically funnels into this assignment. This is the join between the registration side and the league side.
    This is where Package and Division finally meet If our packages aren't cut the same way as our divisions, this step is where it hurts. Check the package list against the division list before creating assignments.
    Region 58 setup — done 2026-09-23 Every R58 team assignment has its Player placement rules pointed at the matching program packages, so registered players (including anyone invited off the waitlist) drop into the assignment pool automatically — there is normally no need to add them by hand with Select Players. Re-set this on every new assignment each season. If a player is ever missing, add them manually (DC Roster & Waitlist guide, “Put a Player on a Team”).
  5. Associate the divisional coordinator at the bottom, and set the permission for whether they may notify players.
    Decision — Let coordinators send invitations? Recommended default: off for the first season. Coordinators build and reshuffle freely while Steven or Sara controls the one moment families hear anything. With it off the coordinator has no Notify button, so they cannot fire early by accident. It is a one-click change per assignment when we're ready to delegate.
  6. Continue — you land on the assignment page with Teams, Players, and Rosters tabs.
Associating a divisional coordinator with a team assignment, at the foot of the assignment.
11:28  Associating a divisional coordinator with a team assignment, at the foot of the assignment.

Attach the teams

The Players tab is already populated from the packages. Go to Teams, filter on the right by age group and gender, select the team shells, and Save. The Rosters tab gives the holistic view once assigning starts, and its view options can include assistant coaches and team staff.

One primary director per team A coordinator can hold many assignments, but there can only be one primary director per team. If two people share an age group, decide now which is primary. How best to give a co-coordinator visibility is CONFIRM IN-PRODUCT.

Phase 6 Put Players on Teams Coordinator

Open the assignment and click the blue Edit Assignment button. Teams on the left, players on the right, drag between them.

  1. Filter both sides. Age-group filter on the left narrows teams; the right-hand filters narrow players. Working one age group at a time is far less error-prone.
  2. Configure Columns — do this first. It pulls registration answers onto the player list: buddy requests, coach requests, and any other question we ask. You can promote the ones that matter to the top of the list and remove noise like default jersey number or date of birth.
    This is the feature that replaces our SC paperwork Buddy and coach requests become sortable, searchable columns right next to the player while you're placing them. Type a name into the search — the demo typed "Adams" and immediately saw that Benny had requested Melissa Adams as coach. This is better than what we had.
    Configure Columns — pulling registration answers such as buddy request and coach request onto the player list.
    13:50  Configure Columns — pulling registration answers such as buddy request and coach request onto the player list.
  3. Watch for the volunteer icon. An icon beside a player means someone volunteered alongside them — typically a parent. Use the ellipses → View Responses to see what they signed up for.
    Volunteers travel with their player Drag a player whose parent volunteered as head coach and PlayMetrics offers to assign that coach to the team at the same moment. Take it — it is how a team gets its coach without a second pass. Then rename the team to the coach's surname, exactly as we did in SC.
    Dropping a player whose parent volunteered: PlayMetrics offers to install them as head coach in the same motion.
    15:42  Dropping a player whose parent volunteered: PlayMetrics offers to install them as head coach in the same motion.
  4. Drag players onto teams. Multi-select works — grab several and drop them together.
  5. Save changes. Then check the Rosters tab to see the division as a whole.
Dragging players is safe Players stay in assigned status and, in the webinar's words, "are not aware that they have been added to this team yet." Reshuffle as much as you like — no player or parent hears anything until Phase 8.
But accepting the head-coach prompt is NOT silent Our own PlayMetrics admin reference records the asymmetry: "Coaches are notified immediately when assigned to a team; players only on 'Notify.'" So the convenient prompt in step 3 above sends mail the moment you accept it. Assign a coach only once you have actually decided they are coaching that team — unlike player placement, it is not a sandbox action.

Phase 7 Balance Teams Coordinator

This is what stands in for SC's automatic team builder.

Check whether auto-assignment has shipped before doing this manually PlayMetrics acknowledged the gap directly: "we know that it's important for you guys to have that player ranking and auto assignment feature. Since that's not quite ready yet, we are hoping for that mid-August release." That is now. Check the current release, or ask success@playmetrics.com, before running a season on the manual loop below.

Until then, or if a coordinator prefers it:

  1. Score the players — individually in the assignment, or in bulk by exporting the assignment, adding notes and scores in the spreadsheet, and re-importing.
  2. In Edit Assignment, use the right-hand filters to filter by score.
  3. Drag players onto teams working down the score bands so each team draws evenly from each.
Decision — Is scoring mandatory for us? Recommended default: coordinator's choice, exactly as it was in SC. Region 58 only ever used automatic balancing for instructional divisions, and only when the coordinator wanted it. Offer the workflow; don't mandate it. Draft divisions get their balance from the draft itself.

Phase 8 Notify Families

The deliberate act. Until this happens, no family knows anything.

Notify once, and only when the division is frozen Because assignment is silent, you can notify a family and then keep reshuffling — which is how a child gets told they're on two different teams. Treat notification as the line that closes a division: rosters final, coaches assigned, then notify.

Set up templates first (once per season)

Teams → Team Assignments → More Actions → Manage Notification Templates. Save custom wording for:

Saving these means you pull a template in at send time instead of retyping.

Send

  1. From the assignment, click Notify Players.
  2. Select recipients — all in bulk, or narrowed by team, level, gender, or age group. Send one division at a time, in line with the freeze rule above.
  3. Choosing who to notify. Filter to a single division so you never notify beyond the roster you just froze.
    17:08  Choosing who to notify. Filter to a single division so you never notify beyond the roster you just froze.
  4. A pre-populated message appears. Edit Message and use the template guide to insert variables — player name, team name, and head coach details.
  5. Send. Those players are automatically rostered, and the family gains app access to the team and its schedule.

Phase 9 Player Verifications & Sanctioning Body

What a sanctioning body is — and what it is not A sanctioning body does not grant, register, or enable outside play. In the webinar's words it "functions more like a ledger within our system. It's not submitting anything externally, but it gives you a centralized place to track all required documentation." Creating one sends nothing to AYSO, to an Area, or to any other region. It is a document tracker with expiry rules, nothing more.
Playing outside the region is a league question, not a sanctioning-body question Interregional and Area play live in a separate League within the same Season — our own Terminology Guide records this: "in-house games and interregional play would be separate Leagues." EXTRA/Alliance teams that import outside schedules use a Travel-type league. So if Region 58 teams will play outside the region, the thing to create is that second league, and the sanctioning body is attached to it if — and only if — the outside competition requires us to hold and track player documents.
Decision — Do we need a sanctioning body? Recommended: yes, if an outside competition requires documented players — attached to the outside-play league, not the core in-house league. Two separate questions to settle before building it:
  1. Which outside play? EXTRA/Alliance, Area play, or interregional friendlies — each has a different governing body and a different document list.
  2. What does that body actually require? Build verification requirements to match their list, not to a guess. A sanctioning body with the wrong requirements creates admin load without satisfying anyone.
Core/rec on its own still doesn't need one "At this time, AYSO National isn't requiring birth certificate verification" for core play. If the only driver is outside play, scope the sanctioning body to that league and leave core alone — it keeps per-player admin load off the ~90% of our players who never leave the region.
Verification does not travel between regions Asked directly in the Q&A: "If a player is verified, will other regions see them as verified?" Answer: "This is just region-specific or club-instance-specific." So verifying a player here satisfies our ledger; a receiving region running PlayMetrics will still see them unverified. Do not expect our verification to substitute for whatever the outside competition asks of us.

If we do verify — set up the sanctioning body first

A sanctioning body "functions more like a ledger within our system. It's not submitting anything externally" — it is a centralized place to track required documentation. It must exist before you can attach it in Phase 1.

  1. Programs → Leagues → Create Sanctioning Body. Name it, e.g. "AYSO Region 58 Core".
  2. Add Verification Requirement for birth certificate. It keys off the registration tag — so if the registration question carries the birth certificate tag, uploads sync across automatically.
  3. Set the effective date (seasons starting after this date require it), the view permissions (who among directors, coaches, and team staff can see the document), and the expiry — do not expire is right for a birth certificate.
  4. Repeat for player photo, but set it to expire every two years so a long-tenured player refreshes their photo. As the webinar put it, this is what "ensures the right player is on the right team."
Adding a verification requirement to a sanctioning body. The tag is what links it to the registration upload.
03:44  Adding a verification requirement to a sanctioning body. The tag is what links it to the registration upload.
Do not touch Clearance Tracking The Clearance Tracking area at the bottom of the sanctioning-body screen is for volunteer/coach clearances — background screenings and coaching courses. Confirmed again in this webinar: "you leave this area alone." Those live in the AYSO Governing System.

Verifying players

Work from League → Players.

  1. More Actions → Configure Columns — click this first. Add the birth certificate and player photo sources from registration so uploads appear here.
    Turn it on so you can verify before rostering The presenter recommended enabling it "because you can start verifying players before you roster them to teams if this is on." Note the Q&A separately said this player list "populates from the teams that you've added to the league… once the players are rostered." Those sit in tension; assume pre-roster verification requires the configured registration source, and CONFIRM IN-PRODUCT if the list looks empty before rostering.
  2. The list shows at a glance who has uploaded and who hasn't.
  3. Verify Players on an individual opens their details, lets you view the uploaded document and image, and Approve each.
  4. Approving locks the player's date of birth — the parent can no longer change it on their profile.
    The DOB lock is the real prize Directly asked in the Q&A: yes, verification locks the birth date against parent edits, and an admin can unlock and re-lock it. For a region that has ever had an age-group dispute, this alone may justify verifying.
  5. Approve offline for a player whose document you saw in person but who never uploaded.
  6. Request a specific missing item with a custom message — it notifies the player contact to upload, and the file lands back here for approval.
  7. Bulk request: select multiple players, then More Actions → Request Missing Resources. The demo fired requests at 36 and 35 players in one go.

Non-Team Programs — 5U Schoolyard & KickStart

Handled differently: no teams, no rosters, no draft. Capacity is governed by a registration cap on the program itself.

05U Schoolyard Non-team

Fun-soccer sessions in groups of roughly 20. Manage headcount through registration capacity, not team slots. If a division object is needed for reporting, name it 05U so it sorts at the top — it carries no roster size or formation method. Leave it out of scoring rules entirely.

KickStart (if offered) Jamboree

A jamboree program with an entered registration cap. No teams are formed; coach signups do not affect the registration count.

Confirm in-product — do these need a league at all? With no teams or schedules, these most likely live entirely at the Program / registration level. Confirm whether any league object is needed, or whether the registration cap alone suffices.

Per-Division Checklist

Tick each division as it's created. Fill target # teams once registration numbers are firm (≈ registrations ÷ roster size).

✓ Division Gender Roster Formation Target Teams
☐06U BoysBoys6Director-formed—
☐06U GirlsGirls6Director-formed—
☐07U BoysBoys7Director-formed—
☐07U GirlsGirls7Director-formed—
☐08U BoysBoys7Director-formed—
☐08U GirlsGirls7Director-formed—
☐10U BoysBoys9Draft—
☐10U GirlsGirls9Draft—
☐12U BoysBoys12Draft—
☐12U GirlsGirls12Draft—
☐14U BoysBoys14Draft—
☐14U GirlsGirls14Draft—
☐16U BoysBoys14Draft—
☐16U GirlsGirls14Draft—
☐19U BoysBoys22Draft—
☐19U GirlsGirls22Draft—
☐05U SchoolyardMixed—Non-team (cap ~20/group)n/a
☐KickStart (if offered)Mixed—Non-team jamboree (reg. cap)n/a

16 team divisions (8 age groups × Boys/Girls) plus 2 non-team programs. Roster sizes are our planning figures — see the Phase 3 note on whether PlayMetrics enforces them.

One-Page Card for Division Coordinators

Everything a coordinator needs, once Steven and Sara have finished Phases 1–5. Print this page alone.

Your job, in order

  1. Log in with your director role → Teams → Team Assignments.
  2. Open your assignment. The Players tab shows who is still unplaced.
  3. Click the blue Edit Assignment button.
  4. Configure Columns → add buddy request and coach request, and pull them to the top.
  5. Filter teams on the left and players on the right to one age group at a time.
  6. Drag players onto teams. Watch for the volunteer icon — if a parent volunteered to coach, PlayMetrics offers to make them head coach as you drop their child. Only accept once that coaching decision is final: coaches are emailed immediately, unlike players. Then rename the team to their surname.
  7. Save changes. Check the Rosters tab.
  8. Optional: score players (or export → score → re-import), then filter by score to balance.
  9. Tell Steven or Sara when your division is final. You do not notify families — that is deliberate, and you won't see the button.
Moving players around is safe Assigning and unassigning players sends no email and tells no family. Move them as much as you need. Nothing is announced to families until the invitations go out, and that is not your button.
The one thing that is not safe: assigning a coach Coaches are emailed the instant you assign them — there is no sandbox for that. When the drag prompt offers to make a parent head coach, say yes only if that is settled. Everything else on this page you can undo silently; that one you cannot.
California AB 506 — fingerprinting gates the finish line AB 506 requires fingerprinting before teams can be activated and official rosters printed. A division can be fully assigned and still be stuck here. If a coach is not cleared, raise it with Steven rather than swapping the coach out at the last minute.

Final Verification Before opening play

Reference Links