Team Trainings
Alongside matches, a 4league team can schedule real practice sessions — standalone trainings, with their own date, focus areas, attendance confirmation, and (once the session happens) coach evaluations. This is a separate feature from a legacy "self-training" friendly match; trainings live in their own list, reachable from the team's Matches tab.
Only a team admin — the owner, a delegated co-admin, or a club admin with rights over the team — can create, edit, or cancel a training. Any admin status change takes effect immediately: a demoted co-admin loses training access on their very next request, not on next login.
Scheduling a Training
From the team's Matches tab, an admin switches to the Trainings segment and taps Create Training. A short form collects everything the session needs:
| Field | Notes |
|---|---|
| Focus categories | 1–4 of: Technical, Tactical, Physical, Team. Required — a training can't be saved with zero categories. See the taxonomy for what each category rates. |
| Date & time | Required. Can be rescheduled later as long as the session hasn't already been evaluated (see below). |
| Duration | In minutes, defaults to 60. Zero is rejected as a data-entry error. |
| Pitch / location | Optional free text. |
| Notes | Optional, admin-only free text — never shown to players, even on the confirm/decline screen. |
| Confirmation deadline | Hours before kick-off that RSVP-confirming closes. Defaults to 2 hours; adjustable from 0 up to a year. See Attendance Confirmation. |
A training created for a date in the past (or the very same minute) never sends the "training scheduled" push below — nobody should be paged to confirm attendance for a session that's already starting or already happened.
Free Plan Limits
Training scheduling is capped on the Free plan. The cap tracks the team owner's plan, never the plan of whichever admin happens to be creating the session — a co-admin with a personal PRO subscription on a Free-owner team is still capped at the Free limits.
| Limit | Free | PRO |
|---|---|---|
| Trainings per calendar month | 4 | Unlimited |
| Distinct focus categories per training | 2 | Up to all 4 |
| Training history beyond the most recent 20 sessions | Locked — the viewer's own account needs PRO to page further back | Unlocked |
The monthly count is recomputed live from every training scheduled that month — including cancelled ones. Cancelling a session never frees up a slot; if it did, cancel-and-recreate would make the monthly cap meaningless.
Rescheduling a training into a different, later month re-checks that destination month's quota (a same-month move never does, since the session already occupies a slot there). Rescheduling into a month that has already passed is rejected outright.
The 2-category cap on Free is edit-safe for a team that downgrades: if a training was created with 3–4 categories while the team was on PRO, it stays fully editable after a downgrade to Free as long as the edit doesn't increase the distinct category count — swapping or reducing categories is always allowed.
These caps are lifted only for a team whose owner is on the PRO plan (or Enterprise) — the entry-level PRO Player plan does not on its own unlock unlimited trainings.
Reminders & Notifications
Two separate notification moments exist around a training:
At creation — "training scheduled"
The moment a training is created (for a future date), every connected, currently-rostered squad member except the creator gets a push plus an actionable inbox invite they can answer directly from Messages.
Before kick-off — the attendance reminder
A background job checks every 15 minutes for scheduled trainings starting within the next 24 hours. The first time it catches a session in that window, it sends one reminder push to everyone who is connected, still on the squad, and hasn't already confirmed or declined — so this is a single "session is coming up" nudge, not a recurring drip.
The reminder is claimed atomically the first time a training enters the 24-hour window, so it can never double-send even if two server processes evaluate the same training at once. Anyone who already responded by the time the reminder job runs is skipped — there's no point reminding someone who already answered.
Both the roster and the recipient list are always resolved live, at send time — a player added to the squad after a training was created still gets the pre-session reminder; a player removed from the squad never receives either push, even if it was already queued.
Attendance Confirmation
Every connected, rostered player can open the training and answer I'm attending or I'm not attending. That answer is a real, persisted status — declining is never a silent "undo my confirmation", it's stored exactly as a decline.
| Rule | Detail |
|---|---|
| Confirmation deadline | Confirming closes N hours before kick-off, where N is the training's own confirmation deadline field (default 2 hours). Exactly at the deadline still succeeds; a moment after, the button is hidden and a "deadline passed" notice shows instead. |
| Declining | Never gated by the deadline — a late withdrawal is useful information for the coach, so it's always accepted. |
| Once the session has started | The RSVP controls disappear entirely; the player's last answer (or "pending" if they never answered) shows read-only. |
| Changing your mind | A confirmed player can still switch to declined right up until kick-off. A declined player can re-confirm, unless the deadline has since passed. |
Coach Elena schedules a Tuesday-evening training focused on Technical and Physical work. David gets the "training scheduled" push right away and taps I'm attending from the inbox invite. Twenty-four hours before kick-off he gets the reminder anyway — the reminder job doesn't know he already answered until it checks, and by then his RSVP is already recorded, so no second reminder follows. On Monday evening, work runs late; with the 2-hour confirmation deadline already passed for confirming, David can still switch his answer to I'm not attending right up to kick-off.
Squad & Attendance Roster
Admins see a live attendance roster for each training, grouped into four buckets:
| Group | Meaning |
|---|---|
| Confirmed | Answered "attending". |
| Declined | Answered "not attending". |
| Pending | Connected squad member, hasn't answered yet. |
| Not connected | A roster slot with no linked account — can't RSVP on their own. An admin can tap Invite to send the team's join code so the player can claim their slot. |
An admin can also proxy-mark attendance directly — mark any squad row present or absent, connected or not, useful for taking a real-world attendance count at the pitch. A player's own later self-confirmation always overwrites a proxy mark; the player's own answer is authoritative.
A row whose squad slot no longer exists (the player left the team after responding) is never silently dropped from the roster — it stays visible, flagged as removed from the squad, so the attendance record for that session is never rewritten after the fact.
Editing, Cancelling & Auto-Complete
A training moves through three states: scheduled → completed or cancelled.
- Reschedule / edit — date, duration, location, and focus categories can all be changed while a training is scheduled. Changing the date re-checks the destination month's quota (see Free Plan Limits) but does not re-send the "training scheduled" push — players who were already notified aren't paged again for a reschedule.
- Cancel — a status change, never a delete. A cancelled training stays visible in the team's history, still counts toward the monthly quota, and can no longer accept RSVPs, proxy marks, or evaluations.
- Auto-complete — a training automatically flips to completed the moment the coach saves the first player evaluation for that session. Saving an evaluation is the "this session happened" signal — there's no separate "mark as done" button.
- Focus categories lock after evaluations exist — once at least one player has been rated, the training's focus categories can no longer be changed. Every saved rating is keyed to those categories; changing them after the fact would silently orphan or reshape scores already on file. Renaming, rescheduling, or changing the location/duration stays fully editable even after evaluations exist — only the category set itself is frozen.
Coach Elena's Saturday training is rained out before it starts. She cancels it from the training's Actions menu; it stays in FC Thunder's training history marked Cancelled, and still counts toward this month's 4-session Free-plan cap. Because no evaluation was ever saved for it, its focus categories were never locked and the slot itself is simply gone — she creates a fresh training for the following Tuesday instead.
Evaluations, Progress & Stats
Once a session has happened, the coach rates each confirmed attendee against the training's own focus categories, which feeds a player's personal development graph and the team's own training statistics dashboard. That whole side of the feature — the rating scale, the evaluation screen, the player-facing progress graph, and the team stats dashboard — is covered on its own page:
Rate players after a session, see the team's training statistics, and follow a player's own development graph over time.
Roster, formations, matches, and everything else in the team's home base.
Skills, matches, and career stats — training progress is one part of the picture.