Manager Guide
Everything a tournament director needs to run a PongDesk event - from first registration to final result.
Welcome to PongDesk
PongDesk is free software built exclusively for table tennis. It handles every step of running a tournament - registration, seeding, round-robin scoring, single-elimination brackets, and final results - so one tournament director can manage an entire event without extra staff or paper spreadsheets.
This guide is for club managers: the people who create and run tournaments. Registering, joining a doubles or team event, following live matches, and tracking your rating? See the Player Guide instead.
Tournament Formats
When you create a tournament you choose one of two formats. This choice is permanent - it cannot be changed after creation.
| Feature | Event-Based | Giant RR |
|---|---|---|
| Best for | Multiple independent rating-banded categories | One big round-robin that splits into skill divisions |
| Stage 1 | RR groups per event | RR groups for everyone in the tournament |
| Stage 2 | Single-elimination bracket per event | Placement RR (Division A / B / C …) |
| Stage 3 | - | SE bracket per division |
Getting Started
- 1Create an account at the PongDesk sign-up page. During onboarding you will be asked for your name, birth year, gender, USATT rating, and home club.
- 2Get manager access. Request it from Become a club manager (also linked on your Account page) - see Becoming a Club Manager below. A PongDesk admin reviews every request. Without the Manager role you can register as a player but cannot create or run tournaments.
- 3Open your club's admin panel by clicking Admin in the top navigation bar when you are on your club's page.
Becoming a Club Manager
Manager access is requested from the Become a club manager page (also reachable from your Account page). Every request is reviewed by a PongDesk admin before access is granted - you will not be able to manage anything until it is approved.
The page uses a single search box for both options:
- Claim an existing club. Search by name and pick your club from the results. Each result is badged Claimed (already has a manager) or Unclaimed. Always search first so you don't create a duplicate of a club that already exists.
- Create a new club. If no existing club matches the name, choose Create new club to request a brand-new one.
To help admins verify you represent the club, fill in the “How can we contact your club?” field with a public phone number, social media profile, or website. A clear verification contact makes approval faster; requests with no way to confirm the claim may be rejected.
You can track the status of your requests (Pending / Approved / Rejected) on the same page. Once approved, your club's Admin panel becomes available.
Manager Dashboard
The dashboard at /{club-slug}/admin lists every tournament your club has created, sorted by status. Each card shows the tournament name, date range, format, and a status badge (Draft / Active / Completed).
Click a tournament card to go directly to the appropriate management page for its current state. Use the New Tournament button to create a tournament.
Creating a Tournament
Click New Tournament from the dashboard and fill in:
- Title - the public-facing name of the tournament.
- Format - Event-Based or Giant RR (cannot be changed later).
- Dates - start date, end date, and optional registration deadline.
- Location - venue name or address.
- Default Best-Of - games per match in round-robin (e.g., best of 5) and in elimination (e.g., best of 7). Individual events can override these defaults.
- Entry Fees - default singles and doubles fees; overridable per event.
After creating, you can add a public Description / flyer (Markdown supported, shown on the tournament's public page) under Settings - handy for venue details, schedule notes, or rules.
Running the same tournament again? Click the copy icon on any tournament card in the dashboard to clone it - the copy is a fresh draft with the same format, defaults, and events (entries and results are not copied). You only set a new name and start date; event dates shift to keep their offsets from it.
Newly created tournaments start in Draft status. The Visible to players option is on by default, so a new tournament is publicly listed right away - uncheck it at creation (or later under Settings) to keep it hidden while you set things up. Visibility is controlled by that toggle and is independent of the tournament's status.
Adding Events
Go to Settings in the tournament sidebar and click Add Event to create categories (e.g., “Under 1500 Singles”, “Open Doubles”). The event name is suggested automatically from the category and eligibility rules you set - edit it any time. Each event has:
- Category - Singles, Doubles, or Team.
- Eligibility - optional max USATT rating cap, age range (min/max age), and gender restriction.
- Group size - target number of players per round-robin group (e.g., 4). PongDesk distributes extra players so groups differ by at most one player.
- Best-Of override - leave blank to inherit the tournament default.
- Entry fee - leave blank to inherit the tournament default.
- Start time - required; shown on the Overview event cards and in the public Entries list.
- Allow unrated players in SE bracket - off by default. When off, singles players with no USATT rating (rating 0) who win their RR group are excluded from the elimination bracket and the next eligible finisher advances in their place. Turn this on for open or unrated events where all group winners should advance regardless of rating.
- Optional 3rd-place match - off by default. When on (and the bracket has at least 4 qualifiers), a consolation match is added between the two semifinal losers to decide 3rd and 4th place.
- Exclude from rating calculation - off by default. When on, matches in this event are excluded from the post-tournament USATT rating computation. Use this for novelty, hardbat, or exhibition events that should not affect ratings.
Running several rating-band events (e.g., U1200 / U1500 / U1800)? Click the copy icon next to any event to duplicate its settings into a new event - only the name, start time, and rating cap typically need changing.
Managing Registrations
The Entries page shows every event with its registered participants.
1. Add Players to an Event
Click Add player on the event to search your club's roster or any PongDesk account by name. Eligibility rules are checked automatically. If nobody matches, a Create as a new player option appears - fill in name, rating, birth year, and gender, and they're registered to this event immediately. Creating a player also adds them to your club's roster for reuse in future tournaments. (Doubles and team events have their own Add doubles team / Add team dialogs, with the same search-or-create flow per roster slot.)
2. CSV Bulk Import
Open Manage roster on the Entries page, then Import CSV to upload a spreadsheet with up to 500 rows. Only a name column is required - everything else is optional. Headers are auto-detected and case-insensitive, so common variants work:
| Column | Required | Notes |
|---|---|---|
| First Name + Last Name | Yes | Two columns (aliases: First/Given Name, Last/Surname/Family Name). Or map a single combined Full Name / Name column - it's split automatically. |
| USATT Rating | No | Integer; blank or 0 = unrated. Also: USATT, Rating |
| Birth Year | No | 4-digit year (e.g., 1995). Also: YOB, Year |
| Gender | No | M, F, or Other. Also: Sex |
| Home Club | No | Matched by name; blank is fine |
Duplicates are detected by name match. Conflicts are flagged for review before import. Import adds to your club's roster only - it does not register anyone to an event, so you can import once and add players across several events from there.
3. Add a Roster Player (No Event)
Managed players are account-less players owned by your club - useful for guests who don't have a PongDesk account. Open Manage roster on the Entries page and use Add player there to create one without entering them into any event yet - useful when you want to build out your roster ahead of time. The same dialog lets you view, search, and delete (unregistered) managed players.
Removing Entries
There is no separate accept/reject step - every registered participant is included in seeding and brackets. To exclude someone, use the Remove column on the Entries page. Payment status (next section) is tracked independently and does not affect seeding.
Check-In
Each entry on the Entries page has a Check-in toggle for day-of attendance - tap to mark a player present, tap again to undo. You can sort the list by check-in status to quickly see who has arrived. Check-in is purely a tracking aid; it does not affect seeding or matches.
Player Self-Withdrawal
Players can withdraw their own entry from an event directly on the public tournament page (a Withdraw button on their registration). Keep an eye on entry counts before generating matches, since a player may drop out on their own.
Doubles Teams
For Doubles events, pair two registered players into a team from the Entries page. The team's effective rating is the sum of both partners' USATT ratings, which is used for seeding.
If a player registers for a doubles event without a partner (“solo doubles”), they are held in a pending state until a partner joins or you assign one. You can dissolve a team at any time before matches are generated.
Team Competitions
A Team event is contested as a series of ties - one team vs. another, decided by a fixed sequence of individual sub-matches. Pick a format when you create the event (Settings → Add Event → Category: Team):
- Olympic / World - 3 players, 5 singles sub-matches, first to 3 wins the tie.
- Corbillon - 2 players, 4 singles + 1 doubles, first to 3 wins the tie.
- Swaythling Cup - 3 players, 9 singles sub-matches, first to 5 wins the tie.
Building Rosters
Teams can be built two ways. On the Entries page, Add Team lets you enter a full roster yourself. Or players can self-register on the public tournament page - a captain creates the team and can leave slots open for others to fill (a forming team). Either way, use Roster players on the Entries page at any time to add, remove, reorder, or reassign the captain of a team.
Setting the Lineup
Unlike singles and doubles matches, a tie's individual sub-matches don't exist until you set the lineup. On the Matches page for a Team event, click Set lineup on a tie to assign each roster player to a board (e.g., who plays A, B, C). This creates the sub-match records, which are then scored exactly like any other match. As sub-match results come in, the tie auto-completes and the winning team advances once it reaches the format's win threshold - no separate action needed. Use Edit lineup to reopen and change assignments before a sub-match has a score.
Team Brackets & Printing
Team elimination brackets use the same draft-then-finalize flow as singles brackets (see Drafting the Elimination Bracket): seeds follow group order, and you can drag to reorder first-round pairings before finalizing. Use Print lineup sheet on the Matches page to print a pre-match card for a tie - hand it to the players at the table before scores are entered.
Payment Tracking
PongDesk does not process payments directly. Instead it tracks payment status per registration and shows players your club's payment instructions.
- Pending - default state; player has registered but not yet paid.
- Paid - you have confirmed receipt of payment.
- Refunded - payment was returned.
Configure your club's PayPal email, payment link, and payment instructions in Club Settings. These details are shown to players on the tournament registration page. Payment status is visible only to managers.
Starting the Tournament
When all entries are finalized, go to Settings and click Start Tournament. This transitions the tournament from Draft → Active and enables seeding and match generation.
Seeding & Group Generation (Stage 1)
PongDesk uses standard snake seeding: players are sorted highest-to-lowest by USATT rating, then distributed across groups in a snake pattern (Seed 1 → Group 1, Seed 2 → Group 2, …, Seed N → Group N, Seed N+1 → Group N, Seed N+2 → Group N-1, …). This balances every group so no group has more than one player than any other.
On the Draws page's Group Seeding tab you see a draft board with the proposed groups. Drag players between groups to override the automatic seeding before committing.
Click Finalize & Create Matches to commit the groups and create all round-robin match records.
Adjusting the number of groups
Click Add Group to add an empty group you can drag players into. To remove a group, drag every player out of it into the other groups, then click the ✕ on the now-empty group (only empty groups can be deleted). Click Re-seed (Exclude Byes) to redistribute players evenly across the remaining groups.
Byes
If you want to give top players a bye (skipping them into Stage 2), drag them into the byes section during seeding. Click Re-seed (Exclude Byes) and then Finalize & Create Matches. They will appear in Stage 2 as group winners and placed accordingly.
Running Round-Robin Matches
The Matches page is your operational hub during the tournament. It lists every match across all events, stages, and groups, with filters so you can focus on one event or stage at a time.
Entering Scores
Click any match card to enter game scores. Each game requires at least 11 points and a 2-point margin (e.g., 11–8 or 15–13). PongDesk automatically detects the winner when one side wins the majority of games (e.g., 3 of 5 in a best-of-5) and marks the match Completed.
Standings
Standings update automatically after each match. Players are ranked by match points (2 for a win, 1 for a loss, and 0 for a loss by default/walkover); ties are broken using results among only the tied players, in this order:
- Match points
- Match points among the tied players (head-to-head)
- Game ratio (games won ÷ lost, tied players only)
- Point ratio (points won ÷ lost, tied players only)
- If still tied, the players are resolved in seeding order and the tie is flagged for the referee.
Walkovers & Defaults
If a player fails to appear or withdraws during a match, click the match card and choose Record Default. Select the absent player and PongDesk records the opponent as the winner with nominal 11–0 game scores, flagged as a default. Defaulted losses count as 0 match points (rather than the usual 1 for a played loss) and are excluded from game and point ratios, per USATT §7.15. The flag is visible on match cards so you can distinguish walkovers from played results.
Printable Score Sheets
Click Print Score Sheets to generate blank sheets for a group or a bracket match. Print these to record scores at the table by hand, then enter results into PongDesk afterward.
Drafting the Elimination Bracket
When all round-robin matches in an event are complete, a bracket trigger card appears on the Matches page and on the Draws page's Knockout Bracket tab. Click it to open the bracket draft for that event.
On the bracket draft page, configure:
- Advancers per group - how many top finishers from each RR group move on (default: 2).
- Best-Of - games per match in the bracket (can differ from the RR setting).
PongDesk shows a preview of the bracket. Byes are automatically assigned to top seeds to fill the nearest power-of-2 size.
Seeding order follows USATT/ITTF convention: seeds are assigned by group order, not raw rating. The winner of Group 1 is Seed 1, Group 2's winner is Seed 2, and so on; runners-up are numbered in reverse group order (Group N's runner-up is the top-ranked runner-up seed). This means the strongest RR group's winner always holds Seed 1, even if another player has a higher USATT rating.
The bracket respects ITTF separation rules: players from the same RR group - and, where possible, the same club - are placed so they cannot meet early in the bracket.
Unrated players are excluded from the bracket by default (controlled by the Allow unrated in SE bracket flag on each event). When excluded, the next eligible finisher in the same group advances. The draft view lists any excluded players so you can review who was skipped.
If ITTF constraints cannot be fully satisfied, a warning banner explains which pairs conflict. You can manually swap first-round pairings by dragging the player cards.
Click Finalize Bracket to create all elimination match records. The bracket appears on the public standings page immediately.
Giant RR: Stage 2 PlacementGiant RR only
Once all Stage 1 RR matches are complete, open the Seeding page and switch to Stage 2. PongDesk buckets players by their Stage 1 finishing position:
- All 1st-place finishers → Division A
- All 2nd-place finishers → Division B
- All 3rd-place finishers → Division C
- … and so on
Within each division, players are ranked by their Stage 1 record (wins, game ratio, point ratio), then distributed into Stage 2 RR groups using snake seeding. Click Generate Stage 2 to commit.
Giant RR: Division BracketsGiant RR only
After Stage 2 RR finishes for a division, a bracket trigger card appears on the Matches page. Draft and finalize the bracket the same way as in Event-Based format (configure advancers and best-of, review ITTF separation, finalize).
Skipping the Bracket (Single-Group Divisions)
If a division has only one Stage 2 group (e.g., Division C has only 3 players), you can use the Stage 2 RR standings as the final result instead of running an elimination bracket. Click Finalize Division on the trigger card to do this.
Live & Spectator View
As soon as a tournament starts, players and spectators can follow it live - no account required. Standings and match scores update in real time as you enter results, so there's no need to refresh.
- Per-tournament Live tab - on the public tournament page, with an event and group selector to drill into any round-robin group (including Giant RR Stage 2 divisions).
- Club-wide live board at
/{club-slug}/live- a single screen covering every active tournament, ideal to put up on a venue display.
/live page) so players can watch standings from their phones while you run the desk.Finalizing the Tournament
When all events or divisions are complete, a Finalize Tournament button appears at the bottom of the Matches page. PongDesk checks that every event has a completed bracket or a finalized division before allowing this step.
Once finalized, the tournament status changes to Completed. Public results pages remain accessible but no further score entry is possible.
Once finalized, an Export menu appears in the tournament header with three options: Printable results(a print-friendly page of all standings and bracket outcomes - save it as a PDF from your browser's print dialog), JSON (backup), and CSV (spreadsheet). Keep a copy of the JSON or CSV export as your own archive of the event.
Cancelling a Tournament
If a tournament that has already started needs to be called off instead of finalized, use Cancel Tournament in Settings (available while a tournament is Active). Cancelling keeps all events, entries, and results but closes the tournament. Draft tournaments don't need cancelling - delete them instead.
Post-Tournament Ratings
After a tournament is Completed, you can compute unofficial USATT-style rating changes for all singles players. Open the tournament's Manage Matches page and scroll to the Ratings panel.
- 1Click Generate Rating Draft. PongDesk runs the USATT multi-pass algorithm over every completed singles match (doubles and defaulted matches are excluded; events marked Exclude from rating are skipped entirely).
- 2Review the draft table showing each player's current rating, computed rating, and change (Δ). Players flagged Needs estimate are unrated players whose rating cannot be determined from wins/losses alone - enter an estimated starting rating for them and re-generate.
- 3Click Commit Rating Runto save the computed ratings. Each player's Post-Tournament Rating is updated - visible on their player history page and in the CSV export. This does not overwrite their official USATT ranking.
Public Club Profile
Your club's public landing page (/{club-slug}) doubles as a profile: alongside your tournament list it can show where and when you play, your location, and any news you want to share with the world. Open the editor from Edit Club Public Profile in the account menu (the avatar in the top-right corner, available on every page), or go directly to /{club-slug}/admin/profile.
The editor has these parts:
- Location - your club's home city and state, shown under the club name and on the public Clubs directory.
- Where & when we play - one section covering your street address, venue type, fees, table count, services (coaching, leagues, equipment sales, etc.), and contact details, plus one or more venues, each with an optional Google Maps link (shown as a “Click for directions” link, or generate one from the place name) and recurring play times. It feeds both your public page and your Clubs directory listing, so you enter your schedule only once.
- Website & social - an optional website URL and a list of social links (Facebook, Instagram, YouTube), shown as buttons on your public page.
- News & info - a free-text box (Markdown supported, or upload a
.docxto convert) for announcements, fees, or how to join. Use the Edit/Preview tabs to check formatting before saving.
Time slots
Each venue holds one or more time slots - a set of weekdays plus a start and end time (e.g., Tue & Thu, 7:00 PM – 9:00 PM). Add more than one slot to a venue when you play different times on different days, such as weeknight evenings and Saturday mornings. Times are picked in 10-minute increments; leave them blank to show just the days.
Playing dates & cancellations
PongDesk works out the actual dates you play this month and next month from your recurring slots, so you never have to re-enter them - and the lists roll over automatically each month. If you're skipping a particular date, untick it in the This month or Next month list in the editor and the public page drops that date. When a date is cancelled in the current month, that day's schedule also reads “Most Tue” instead of “Every Tue”.
When you set a venue to Dedicated space, PongDesk assumes consistent weekly hours: it turns on “Open the same hours every week” so the public page shows a Google-style weekly hours table (one row per day) instead of the upcoming-dates lists, fills the venue name with your club name, and can generate the map link from your street address. Untick that option if your dedicated space only plays specific sessions and you'd rather show the upcoming dates.
Yearly directory reconfirmation
Once a year, confirm your directory listing is still accurate to keep its Verified badge on the public Clubs directory. Click Everything is current at the top of the editor - no edits needed if nothing has changed - or simply edit and save the profile, which counts as confirming too. If it lapses, nothing is removed; the listing just shows as unverified until you confirm again. You'll get a reminder email as the year mark approaches, and a second one if you haven't confirmed a month later.
Club Settings
Access club settings from the Admin → Settings gear icon at the top of the admin sidebar. Here you can update:
- Club name - the display name shown on tournament pages.
- PayPal email - players are directed here for payment.
- Payment link - a custom URL (e.g., Venmo, Zelle) as an alternative to PayPal.
- Payment instructions - free-text (Markdown supported) shown on the registration page to guide players through payment.
Challenge Boards
A challenge board is an ongoing, members-only ladder for your club - something to keep players coming back between tournaments. Members challenge others ranked above them; winning closes the points gap, declining or ducking costs more than losing does. Create and run boards from Challenge boards in the account menu, or go directly to /{club-slug}/admin/boards.
Creating a board
Give it a name (and an optional description) and it's ready - challenge range, response and play deadlines, match length, starting points, and inactivity decay all start at sensible defaults. Open Board settingson the board's desk page any time to change any of them; existing challenges keep the range and deadlines they were issued with, so it's safe to adjust mid-season. A club can run more than one board (an A division and a casual board, for example), each with its own ranking and its own settings.
Adding players
Everyone starts level, so there's no head start for joining early. Players can join a board themselves once they're a member of your club, or you can add anyone from the club roster straight from the board's desk page - including players who don't use the app at all. Those players play by proxy: you issue their challenges, accept or decline on their behalf, and enter their scores, and the board marks each action “entered by the club” so it's never mistaken for something the player did themselves.
How points work
Every board runs on one rule: declining or ignoring a challenge always costs more than accepting and losing would. That's what stops a strong player from sitting at the top by refusing to play. The exact amount also depends on how big the rank gap is - reaching further up the board is worth more, both to win and to defend. The numbers below are for the default Challenge range of 5 ranks up; widen that in Board settings and the biggest reaches (10+ ranks) are worth up to 30 points to win and down to 2 to defend.
| Scenario | Challenger | Player challenged |
|---|---|---|
| Challenger wins the match | Gains 12 to 20 points - more for a bigger rank gap | Loses the same amount |
| Player challenged wins (defends) | Loses a flat 3 points, no matter the gap | Gains 4 to 6 points - more for a closer match |
| Declined, or no reply in time | Gains nothing | Loses 17 to 25 points - always more than losing the match would have cost |
| Accepted, but never played in time | Loses a flat 3 points | Loses a flat 3 points |
There's one more way points move: inactivity. A member who doesn't play loses a few points every so often, down to a floor they can't fall below. Pause a member and theirs stop moving entirely. It rewards playing more than it punishes a single loss.
Running the board
Each board's admin page is a desk view built to work through in one pass, on a phone, with a clipboard - Board settings sits at the top of the page for whenever you need it. Below that it lists, in order:
- Waiting on you - challenges against proxy players who missed their first response window. The club is now on the clock; reply before the new deadline or that player loses points for a challenge they never saw.
- Reported, waiting for approval- a player self-reported a score and it hasn't been approved yet. Approve it, or if it's wrong, enter the correct score yourself - that supersedes the self-report and settles the dispute without a back-and-forth between the two players.
- Issue a challenge - start a challenge for a player who asked you to at the club.
- Awaiting a reply / accepted, still to play - everything else in flight, with accept, decline, and enter-score controls for either side.
- Players - the full roster, where you can pause a member (they stop being challengeable and stop losing points to inactivity), toggle proxy mode, or remove them from the board.