Team Rankings
Team Rankings are organization-level leaderboards that aggregate team performance across multiple competitions — unlike a single competition's standings table, which only ranks teams within one league or cup. A federation can use a ranking to crown a "club of the year", a recreational league can publish a multi-season power table, or a regional body can rank affiliated clubs across dozens of child competitions.
Overview & Plan Tier
A ranking is configured at the organization level (see Organization Profile). The organizer picks a ranking model, chooses which competitions feed into it, sets per-competition weights, and publishes. Every time a match result is confirmed anywhere inside a contributing competition, the ranking engine updates the affected teams and recomputes positions.
Creating and editing a Team Ranking is a Pro plan feature (plan tier 2). Free-tier organizers see the Rankings screen with an upgrade gate. Viewing a published ranking is free for everyone — fans, players, and teams do not need a Pro subscription to see the leaderboard or share their position.
Key vocabulary
| Term | What it means |
|---|---|
| Ranking system | A configured leaderboard belonging to one organization. An org can have one ranking at a time. |
| Contributing competition | A competition the organizer has flagged as feeding the ranking. Only results from these competitions count. |
| Base points | The raw points awarded for each result type (win / draw / loss / participation), before any multipliers. |
| Competition weight | A multiplier applied to every event inside one competition — used to say "a match in Division 1 is worth more than a match in Division 3". |
| Affiliate coefficient | A multiplier tied to a sub-organization (a child federation or club), propagated across every competition that sub-org runs. |
| Preview / publish | Config changes land in a preview snapshot first; the organizer must explicitly publish for them to affect the live table. |
Ranking Models
A ranking is configured along two independent dimensions: its model type (how points are aggregated) and its season scope (which events are considered). Organizers pick both when creating the ranking and can switch later via the preview flow.
| Dimension | Values | What it controls |
|---|---|---|
| modelType | points, coefficient, rolling |
How raw points are calculated per event and which multipliers apply |
| seasonScope | current-season, last-two-seasons, rolling |
Which events feed the ranking — all time, recent seasons, or a rolling window |
The labels support sees in the Manager UI — Standard, Weighted, Rolling — map to the three modelType values respectively.
Standard (points)
Best for: recreational leagues, single-competition power tables, social leagues with no tiering.
Awards flat base points for each match result and sums them across contributing competitions. No per-competition weight is applied — a win is a win regardless of which competition it happened in. Competition weight and affiliate coefficient sliders are ignored by this model.
A city organizer runs a summer 7-a-side league and a winter 11-a-side league under the same organization. Both should count equally toward the "Club of the Year" table. Standard model, 3-1-0 base points — simple and obvious to everyone.
Weighted (coefficient)
Best for: federations with tiered competitions (Div 1 / Div 2 / Cup), regional bodies aggregating results across affiliated clubs.
Same as Standard plus two multipliers — the competition weight and the affiliate coefficient. Final points per event =
basePoints × competitionWeight × affiliateCoefficient
This lets a federation say "a win in Division 1 is worth 1.5x a win in Division 3", or "matches played by the youth academy branch count at 0.5x for the senior club-of-the-year table".
A coefficient ranking can also be configured with seasonScope: rolling — this is how the built-in "international" preset is set up (24-month rolling window with tiered competition weights). Use this when a federation needs both tiered multipliers and a form-style time window; reach for the rolling model (below) instead when the main feature the organizer wants is the time window itself.
A regional federation runs Division 1, Division 2, a regional cup, and a U19 competition. The committee agrees the power ranking should weight Division 1 at 1.5x, Division 2 at 1.0x, the cup at 1.2x, and U19 at 0.3x. Weighted model, one per-competition weight slider per league, done.
Rolling (rolling)
Best for: seasonal-form tables, "who's hot right now" rankings, federations that want positions to reflect recent form rather than a team's all-time total.
A first-class model type focused on a time window: only events from the last 6 months, 12 months, or 24 months count (or the last two completed seasons). An optional time decay can also be enabled — events older than today are exponentially down-weighted, so a win three months ago is worth less than a win last week, but still more than one a year ago.
Competition weight and affiliate coefficient sliders are still available but most Rolling deployments leave them at 1.0 — the whole point of this model is that recency, not tiering, drives the position.
Most federations that want "recent form" pick a 12-month rolling window with decay off — simple and easy to explain to teams. Decay is useful when the ranking is published weekly and the audience expects it to react quickly to new results.
A streaming league that runs back-to-back monthly tournaments uses the Rolling model with a 6-month window so that the top-of-table teams always reflect "who has been winning lately". A team that dominated 18 months ago but hasn't played since naturally drops off the leaderboard — no manual archiving needed.
Competition Value (Weight)
Each contributing competition has a weight — a multiplier that scales every ranking event originating in that competition. It is the main knob an organizer turns to encode "this competition is more prestigious than that one".
| Property | Value |
|---|---|
| Range | 0.3 – 3.0 (slider steps in 0.1 in the UI; backend accepts any non-negative value) |
| Default | 1.0 (neutral — no multiplier) |
| Where it lives | Organization → Rankings → Competitions tab, per competition row |
| Ignored by | Standard model only uses the default 1.0; Weighted and Rolling apply it to every event |
Alongside the weight, the same row exposes:
- Contributes to ranking — toggle to include or exclude a competition entirely. Toggling off keeps the competition's own standings table intact; it just stops feeding the ranking.
- Participation points — a flat number of points a team receives for merely taking part in the competition (useful for cup-style formats where not every team plays every matchday).
Are weight changes retroactive?
Yes. When the organizer publishes a new weight, the ranking engine recomputes every historical event from that competition using the new multiplier. A team that was sitting 3rd yesterday with Division 1 at weight 1.2 may be 2nd tomorrow if the organizer publishes a change to 1.5. This is by design — the ranking always reflects the current ruleset applied to the full history.
Weight edits always land in a preview snapshot. The organizer can inspect the resulting table and either publish or discard. Nothing appears to fans until publish is pressed — this prevents mid-season surprises.
Affiliated-Organization Coefficient
Larger federations run child organizations (regional bodies, affiliated clubs, academies). The affiliate coefficient is a multiplier attached to a child organization, not to a specific competition. It propagates automatically to every competition that child organization runs — past, present, and future.
| Property | Value |
|---|---|
| Range | 0.0 – 2.0 |
| Default | 1.0 (neutral) |
| Where it lives | Organization → Rankings → Affiliates tab |
| Propagation | Applies to every event where the team's home organization matches the affiliate entry — including competitions added after the coefficient was set |
A disabled affiliate entry is greyed out — its coefficient is not consulted, and teams whose home org matches it are treated as if the coefficient were 1.0.
A national federation runs a power ranking across every child federation (North, South, East, West). The national board decides the Northern region is historically stronger and sets its coefficient to 1.2. All Northern teams — across every competition the Northern federation runs — earn 1.2x ranking points automatically, without the national board having to hunt down and edit each individual competition.
Weight vs coefficient — how to choose
- Use a competition weight when the distinction is between competitions (Division 1 vs Division 3, senior vs U19).
- Use an affiliate coefficient when the distinction is between organizations (Northern federation vs Southern federation, main club vs academy branch).
- Both multiply together. A team playing in Division 1 (weight 1.5) under the Northern federation (coefficient 1.2) earns
basePoints × 1.5 × 1.2 = 1.8xpoints per event.
Team Breakdown Modal
Tapping a team's row on the ranking table opens the breakdown modal — the single most important view for support, because it is the only screen that shows why a team is where it is.
| Field | How to read it |
|---|---|
| Total points | The final aggregated score after all multipliers. Matches the team's row on the main table exactly. |
| Position | Current rank in the published table (1 = top). |
| Position change (▲/▼) | Movement since the previous daily snapshot. A team that rose from 7th to 5th shows ▲2. No change shows a dash. |
| History chart | Points over the last 30 or 90 days (toggle in modal). Flat line = no new events; steps = results coming in. |
| Per-competition contribution | How many points the team earned from each contributing competition, after weight and coefficient are applied. The sum equals total points. |
| Share button | Native share — generates a poster with the team's position, points, and delta. Fans use this on social; support can use it to confirm a specific state at a moment in time. |
The breakdown shows the final per-competition total, not per-match detail. If a team disputes an individual match result, that is a competition-level scoring issue — fix it in the competition, and the ranking will pick up the corrected result on the next recalculation.
The same per-team position and delta feed the Smartwatch Companion's ranking-position widget, so a fan following one team can glance at their watch and see the same number support sees in the breakdown modal. A daily rankingPositionChange push notification deep-links into the ranking table when position moves.
Common Support Scenarios
Three situations support hears about most often. The recommended response is the same in each case: open the breakdown modal, confirm what the data shows, and walk the organizer or team through the right part of the config.
1. A team disputes their ranking position
A team manager emails support saying their club is 6th when they "should" be 3rd. Open the ranking, tap the team row, and read the per-competition contribution. Check (a) every competition the team plays in is set to Contributes to ranking, (b) the competition weights match what the organizer published, (c) no match results are still in dispute at the competition level. Most of these cases turn out to be a single competition with Contributes turned off, or a match the referee never confirmed.
2. Organizer wants to change weights mid-season
Halfway through the year, the committee decides Division 1 should weight 1.8x instead of 1.5x. Remind the organizer that weight changes are retroactive — the whole season recomputes on publish, not just future matches. Suggest they use the preview step to eyeball the new table before publishing, and post a news item so affected teams aren't blindsided when their position shifts.
3. Federation added a new child competition
An organizer added a new cup to their organization last week; a team manager notices the cup's results aren't showing up in the ranking. New competitions are not automatically included — the organizer has to open Organization → Rankings → Competitions, find the new row, toggle Contributes to ranking on, and publish. If the new competition also belongs to a child organization with an affiliate coefficient set, the coefficient will apply to it automatically — no second step needed on the Affiliates tab.
If the breakdown looks right but the main table disagrees, a manual recalculation can be triggered from the admin tools. The ranking engine runs automatically on every confirmed result, but a forced recalc is the fastest way to rule out a stale cache when support is stuck.