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.

ℹ️
Who can schedule a training?

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
⚠️
A cancelled training still counts

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.

ℹ️
Which plan removes the caps

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:

1

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.

2

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.

ℹ️
Reminder is once per training, never twice

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.
Scenario: David confirms a Tuesday session

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: scheduledcompleted 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.
📅
Scenario: A rained-out session

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: