CourtsOS › Club leagues
A season, not a day
A challenge ladder for your members. They find who they can play, agree a time between themselves, play it, and record the result - all on their own phones. Nobody rings the desk, nobody updates a spreadsheet, and the board is right at midnight on a Tuesday.
The problem it solves
Not for want of players. For want of somebody willing to keep a spreadsheet honest, chase two pairs who have not played, and answer “who am I allowed to challenge?” forty times a season.
A member opens the board on their phone and sees exactly which pairs they may challenge, who is free when, and whether anybody has challenged them. That is the question the desk was answering, and it is now answered by a web page.
A challenge carries a deadline. CourtsOS reminds the defender before it runs out, and if the match is never played the challenger claims the rung. The ladder keeps moving whether or not anyone is watching it.
The result is entered by the pairs who played it, confirmed by the other side, and the ladder moves itself. No results inbox, no Sunday-night data entry, no argument about which version of the table is current.
The league board carries your club's logo and palette, on the same theme as your tournament screens. It reads like part of your club, because it is - it lives in the same CourtsOS tenant as everything else you run.
A ladder puts competitive pairs on court in the weeks between events, and they book the court themselves. That is the return: not a scoring product, a reason for four people to book Tuesday at eight.
Seasons end. Divisions promote and relegate. The season is archived and everybody gets told where they finished, so a ladder has a shape rather than running for ever until it quietly stops.
Every pair sits on a rung. You may challenge a short way above you - two rungs by default, and further if you are near the bottom, so nobody at the foot of the ladder is stuck playing the same two pairs all season.
Win as the challenger and you take their place; they and everybody between you move down one. Win as the defender and nothing moves, which is why a defence has a deadline attached to it.
Each pair sets the times of the week they can generally play - a grid of mornings, afternoons and evenings. CourtsOS never publishes a pair's diary. What the two pairs in a challenge see is the week as one grid: solid where both can play, one mark for your times and another for theirs, so you can see which of their evenings you could stretch to when nothing lines up.
From there they propose an actual date, message each other, and agree it, all on a match page of their own. Messages go out by email carrying the words that were typed - and the reply comes back by following the link, so neither side's address is ever revealed to the other.
Score it on a court tablet like any other CourtsOS match, or record it afterwards on the match page. Either way both pairs enter their team code, so a result cannot be filed by one side alone.
One pair enters the score, the other confirms, and the ladder moves. If the second pair never answers, it settles itself after 72 hours. If they disagree, it goes to you - and nothing on the ladder has moved in the meantime.
Shape
A small club can run one open ladder and never think about any of this. A big one needs divisions, and a ladder that ends.
Give the season a name and two dates. Play opens and closes on them, the season rolls over by itself overnight, and the one that has just finished is archived with everybody's record in it.
Split the ladder into divisions and set how many go up and how many come down. Promotion and relegation are worked out at the rollover and applied for you.
Signup opens ahead of the season and closes a fortnight into it - so a pair who hear about it in week one still get a season, and you are not fielding entries in March for a league that started in January.
At the rollover every pair can be written to with where they finished, whether they went up or down, and when the next season starts. Off until you ask for it, because it writes to your whole membership unattended.
Between seasons the board says so and gives the date play resumes, rather than showing a ladder nobody may use or going blank and looking broken.
Finished seasons are kept. A pair can see they were fourth in Division 2 last spring, which is most of the reason anybody enters a second season.
None of it is compulsory. A league with no dates simply runs, as ladders always have. Tell us your club and we will suggest a shape →
Filling it
Print the QR code, put it where people wait for a court, and pairs sign themselves up: two names, an optional email each, the times they can play, and they are on the bottom of the ladder with their code on screen.
A join code you set stops the whole internet joining your league - the QR gets somebody to the page, the code gets them onto the ladder. Or skip all of it and paste your members in yourself, in the order you think they should start.
A member signed in on the board has an Invite a friend to the league button at the top. It opens a QR code and a link to your signup page - show it across a table, or drop it into a group chat - and the link carries who sent it, so you can see which of your members are filling your ladder.
It carries nothing else. Not the join code, which the friend still has to be told, and never anybody's team code: a code is authority, and a link gets forwarded.
Half the people who would enter a league have nobody to enter with. Switch on Find a partner and a player can register alone from the same QR - their name, when they can play, a line about their level. They get a code of their own and see everybody else who is looking, each with where the two weeks overlap and never the other person's full diary.
One asks, the other accepts, and the two become a pair. You can also pair people yourself from the manager, because the club knows things a list cannot.
Most club leagues already live half their life in a WhatsApp group - the banter, the photos, the “anyone about tonight?”. Paste the group's invite link into your manager and a Join/Open the members' WhatsApp group button sits on the board, directly under the invite, for every member who has signed in with their team code.
Signed out, it is not there. Not hidden - not in the page at all. The ladder is a link you hand out freely, and a group invite is a door into a room full of your members, so the two are never on the same footing.
Your members' data
The ladder has to be readable by anyone you send the link to. That is a decision with consequences, and they were designed for rather than discovered.
The board shows a first name and an initial by default. You can switch it to full names - and CourtsOS asks you to confirm, because it is a decision about people who are not in the room.
A team's code is the thing that authorises a challenge and a result. It appears on the board nowhere, in the signup link nowhere, and in an email only to that team.
Availability never reaches the board. The only place it is used is the overlap shown to a pair the member is actually arranged to play.
Two pairs arranging a match never see each other's email addresses. The message is composed on the page and the email only carries it.
Every league page tells search engines to stay away. The board is a link you give out, not a page that turns up when somebody searches a member's name.
No advertising cookies and no analytics, on the league pages or anywhere else on CourtsOS. There is nothing to opt out of because there is nothing collecting.
Two ways to do it
The league is the same either way. What changes is who holds the keys and who does the fortnightly ten minutes of tidying.
For a club that wants a league and does not want a league administrator. Most clubs start here.
For a club with somebody who enjoys this - a captain, a coach, a committee member who already runs the ladder on paper.
Run the ladder as a member benefit, or take an entry per pair by card - with a grace period, renewal that never drifts the anniversary, and auto-renew off unless a member ticks it themselves. Tell us which you want; both are built.
The league does not interrupt anything. Your Saturday Americano, your club championship and your ladder all run in the same CourtsOS club, on the same screens, at the same time.
Take the top eight off the ladder and run a proper knockout with groups, a plate and a TV board. That is a one-off tournament, and it is the natural way to end a season.
Before you ask
Eight is a league. Twelve is a good one. Below eight the challenge ranges leave people short of opponents, and you would be better off with a monthly Americano until the numbers come. Above about twenty, split it into divisions.
No, and deliberately. Your booking system takes the booking and the money exactly as it does now - CourtsOS gets two pairs to agree a time, which is the part that was falling over. It means we can be dropped into a club whatever it books with.
Both pairs have to put their team code in before a result is filed, and the pair who did not enter it get a chance to confirm or dispute. A disputed match stops where it is and comes to whoever runs the league, with nothing on the ladder having moved.
The defender has a deadline - a fortnight by default - and gets reminded before it runs out. If it passes, the challenger claims the rung. If a date was agreed and one pair did not turn up, the other claims it from midnight that night. Either way the ladder moves without you refereeing it.
Yes. They are separate things in the same club - the ladder keeps running while you play a Saturday event, and neither knows about the other. A player is just a player.
No. Everything is a web page: the board, the match page, the signup. It opens on any phone, there is nothing to install and nothing to sign up to beyond the league itself.
Yes. A member signed in on the board has an Invite a friend button: a QR code and a link to your signup page, and the new pair shows as invited by them in your manager. Their friend still needs your join code, which is deliberately never in the link.
Switch on Find a partner. A player registers alone from the signup QR, gets a code of their own, and sees everyone else looking, with where their weeks overlap. One asks, the other accepts, and they join as a pair - or you pair two people yourself from the manager. Nobody is on the ladder, and nothing is charged, until both have agreed.
It is meant to. Paste the group's invite link into the manager and members get a Join/Open button on the board once they have signed in with their team code. It never appears on the public ladder - a group invite is a door to your members, so only members are shown it. The group is yours, with your admins; CourtsOS is not in it.
Paste it in. The order you paste is the opening order, so a column already in finishing order needs no reordering - your existing ladder becomes the starting ladder, and nobody loses their place.
Yes. Entry can be taken per pair, either as a rolling term or per season, paid by card. It is optional - plenty of clubs run the ladder as a member benefit and take the court hire instead.
No. Matches are scored in games, sets and tiebreaks, so tennis and pickleball ladders run on it too. Padel is where most of our clubs are, which is why the site talks about it.
An afternoon. The work is deciding the shape - one ladder or divisions, how far a pair may challenge, how long a defence has, whether there are seasons - and we will do that on a call with you and have the QR code in your hands the same week.
Start a league
How many pairs you think would enter and how your members already arrange games. We will come back with a suggested shape for it and what setting it up would involve.
Take the top of the ladder into a finals day - groups, a knockout, a plate and a board in the clubhouse. Same system, one afternoon.
Event scoring →