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 whatSteven (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
Create the Fall 2026 In-House League
Create your team shells
Build divisions & scoring rules
Review coach requests
Create team assignments & scope your coordinators
Put players on teams ← coordinator's job
Balance teams ← coordinator's job
Notify families
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) orDivision (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 torostered. 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.
Registration program is live. The Fall 2026 Core registration program exists and is open/collecting. The league and its team assignments draw players from this program's packages.
The Fall 2026 / MY2026 season is defined with its playing dates, classification, and sport set. League creation auto-populates from this — if it's wrong here, it's wrong everywhere downstream.
Facilities / fields are entered. Required in Phase 3 — you assign fields per division, and you can only pick from what's already in the system.
Resource tags exist. Every region ships with birth certificate and player photo tags by default (Club Administration → Edit Settings → Player Resource Tags). Only relevant if we verify documents (Phase 9).
Admin access confirmed for Steven and Sara, and you've agreed who will be the league owner.
Division plan agreed. The division list, roster sizes, and formation methods (table near the end) are approved by Sara and the Division Coordinators.
Coordinator map agreed. You know which person coordinates which age group(s) — this determines how you carve up team assignments in Phase 5, and it is awkward to change later.
Verification decision made. If the region will verify birth certificates or photos, the sanctioning body must exist before you finish Phase 1 — do Phase 9's first half now.
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.
League Name. Use our season-naming convention so it reads unambiguously in lists and exports.
Decision — League nameRecommended default: 2026 Fall Core (matches the naming we already use in registration and data exports, e.g. "2025 Fall Core").
Owner. Assign a league owner.
Decision — OwnerRecommended default: Steven (Registrar) as owner, with Sara retaining admin access regionally. Whether PlayMetrics allows more than one owner per league is CONFIRM IN-PRODUCT.
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.
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 cardsCoach-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.
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.
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.
Teams. Select the team shells to include (Phase 2). You can leave this empty and add them from inside the league later.
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 automationRecommended 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.
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.
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 namingRecommended 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:
Column
Region 58 value
Notes
season
Fall 2026
Must match the PlayMetrics Season name exactly.
name
10UB-01
Gendered code plus sequence — the B/G already says Boys/Girls. Coach's surname appended later.
acct_code
blank
Accounting code; blank in the sample's own rows.
gender
M / F
Co-ed value for 05U is CONFIRM IN-PRODUCT — the sample shows only M and F.
level
Core
CONFIRM — sample shows "Classic" and "Academy", which are club-soccer levels.
birth_year
blank
Use either this or age_group, never both.
age_group
06U … 19U
Ours is an age-group season, so this is the one we fill.
minimum_age
blank
Blank in every sample row.
coach_first_name
blank
Leave 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_name
blank
coach_email
blank
coach_mobile
blank
num_starting_players
4 / 5 / 7 / 9 / 11
Players 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:
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 laterRecommended: 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:
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.
By grouping of age classifications and gender — for combined flights like "9U to 10U Boys".
Manually — one at a time.
Decision — Build method for Region 58Recommended 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 conventionRecommended 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:
Number of games per team (the webinar used 8).
Default arrival time — what the app tells families, e.g. "arrive 15 minutes prior to kickoff."
Game duration.
Game periods — set the season's start and end weekends and PlayMetrics populates the playing periods, then switch individual weekends off. The demo turned off Labor Day and Halloween weekends, leaving "nine playing periods for eight games." No games get generated for the weekends you disable.
Game fields — pick from facilities already in the system. Assign per division so 7v7 flights only schedule onto 7v7 fields.
To change one division later: click into it, then More Actions → Division Settings.
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.
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:
Points model — the basic 3 for a win, 1 for a tie, 0 for a loss.
Additional points per goal, optionally capped (the demo used +1 per goal up to 3).
Or team winning percentage instead of points.
Tiebreakers, ordered — the demo put goal difference first, then head-to-head. Reorderable during the season.
Decision — Scoring rules for Region 58Recommended 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.
Volunteers who came in via the public link may not be attached to a player. That is expected.
The pencil icon opens a volunteer's question responses and the age groups they're interested in coaching.
Filter on the right by age group to count coaches per flight. This is our early-warning system: filter 07U, see two coaches, and start recruiting in July rather than September.
More Actions sets the region's coach request questions, and exports both the questions and the package data.
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 scopeRecommended 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
Name it for the scope, e.g. "08U–10U Boys".
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.
Program — point it at 2026 Fall AYSO Core.
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”).
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.
Continue — you land on the assignment page with Teams, Players, and Rosters tabs.
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.
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.
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.
13:50 Configure Columns — pulling registration answers such as buddy request and coach request onto the player list.
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.
15:42 Dropping a player whose parent volunteered: PlayMetrics offers to install them as head coach in the same motion.
Drag players onto teams. Multi-select works — grab several and drop them together.
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:
Score the players — individually in the assignment, or in bulk by exporting the assignment, adding notes and scores in the spreadsheet, and re-importing.
In Edit Assignment, use the right-hand filters to filter by score.
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:
Invite — the main one.
Reminder — for families invited who haven't responded.
"Rejected" — for a player who did not make a team. The system calls it that internally, but the word never appears in the message. Write this one carefully; for us it most likely means a waitlist or a move to another division.
Saving these means you pull a template in at send time instead of retyping.
Send
From the assignment, click Notify Players.
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.
17:08 Choosing who to notify. Filter to a single division so you never notify beyond the roster you just froze.
A pre-populated message appears. Edit Message and use the template guide to insert variables — player name, team name, and head coach details.
Send. Those players are automatically rostered, and the family gains app access to the team and its schedule.
Division's rosters are final and reviewed by the coordinator.
Every team in the division has its head coach assigned and is renamed accordingly.
Notification templates reviewed and saved.
Steven or Sara sends, filtered to that division only.
Spot-check that a test family received it and can see the team in the app.
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:
Which outside play? EXTRA/Alliance, Area play, or interregional friendlies — each has a different governing body and a different document list.
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.
Programs → Leagues → Create Sanctioning Body. Name it, e.g. "AYSO Region 58 Core".
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.
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.
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."
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.
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.
The list shows at a glance who has uploaded and who hasn't.
Verify Players on an individual opens their details, lets you view the uploaded document and image, and Approve each.
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.
Approve offline for a player whose document you saw in person but who never uploaded.
Request a specific missing item with a custom message — it notifies the player contact to upload, and the file lands back here for approval.
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 Boys
Boys
6
Director-formed
—
☐
06U Girls
Girls
6
Director-formed
—
☐
07U Boys
Boys
7
Director-formed
—
☐
07U Girls
Girls
7
Director-formed
—
☐
08U Boys
Boys
7
Director-formed
—
☐
08U Girls
Girls
7
Director-formed
—
☐
10U Boys
Boys
9
Draft
—
☐
10U Girls
Girls
9
Draft
—
☐
12U Boys
Boys
12
Draft
—
☐
12U Girls
Girls
12
Draft
—
☐
14U Boys
Boys
14
Draft
—
☐
14U Girls
Girls
14
Draft
—
☐
16U Boys
Boys
14
Draft
—
☐
16U Girls
Girls
14
Draft
—
☐
19U Boys
Boys
22
Draft
—
☐
19U Girls
Girls
22
Draft
—
☐
05U Schoolyard
Mixed
—
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
Log in with your director role → Teams → Team Assignments.
Open your assignment. The Players tab shows who is still unplaced.
Click the blue Edit Assignment button.
Configure Columns → add buddy request and coach request, and pull them to the top.
Filter teams on the left and players on the right to one age group at a time.
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.
Save changes. Check the Rosters tab.
Optional: score players (or export → score → re-import), then filter by score to balance.
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 coachCoaches 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
All 16 team divisions exist under the 2026 Fall Core In-House league — both Boys and Girls for every age group.
Names sort youngest-to-oldest: 05U, 06U, 07U, 08U, 10U, 12U, 14U, 16U, 19U. Any "10U" before "06U" means a missing leading zero.
"Automatically add new teams" is on, and the dashboard icon legend confirms it per division.
Game periods exclude the weekends we're not playing, and the remaining period count is ≥ the games-per-team figure.
Fields are attached to every division that will be scheduled, and small-sided flights point only at small-sided fields.
Scoring rules applied from 10U up, none below; tiebreakers ordered goal difference then head-to-head.
Every package maps to a division and vice versa — no orphans on either side.
Every team assignment has its coordinator attached, is under 40 teams, and has the notify permission set as decided (default: off).
Every team has exactly one primary director and a named head coach.
No player is left unassigned in any assignment's Players tab.
Team counts are sane: target teams ≈ registrations ÷ roster size, none over cap.
Notification templates (invite, reminder, "rejected") are written and saved before the first send.
Invitations sent exactly once per division, after that division was frozen, with a test family confirming receipt and app access.
Non-team programs carry a registration cap and have no teams, no draft, no roster.
Verification decision applied: either no sanctioning body (recommended), or one linked with Clearance Tracking left untouched.
Sara has reviewed the division list and team targets with the Division Coordinators.