Common questions for organizers and participants. Still stuck? Contact us and we'll help.
From your dashboard choose Leagues, then New League. A league is the ongoing organization; each time you run it you create a season inside it.
The league holds everything that carries over — your name, branding, public site, and member directory. A season is one run of it (say Spring 2026) with its own divisions, teams, schedule, and standings.
Publishing your public page, opening registration, scheduling, financials, and emailing registrants all require a one-time activation payment per season. Choose a plan and pay to unlock everything. There is no monthly charge.
Numbered steps in the season menu, and a checklist on the Setup page saying the same thing: 1 Setup, 2 Forms & fees, 3 Agreements, 4 Options, 5 Divisions, 6 Locations, 7 Schedule. A number disappears when that step is done, so gaps in the sequence are normal and expected. Anything without a number is optional.
Mark it "not needed". A league that wants no waiver is correctly set up, and a badge that nags for ever at a correct configuration only teaches people to ignore the whole checklist. Options clears simply by opening it — every field there has a working default, so looking at it is the step.
Yes. A fall and a winter season can both be open for registration and both be played at once. Your public site lists both rather than picking one, and visitors switch between them for schedules, standings and teams. Nothing is hidden behind a "current" season, because with two running there is no such thing.
Dashboard → Leagues → New League → save. Then open the league → New Season → set the dates → Save.
Open the season → Activate → choose your plan/capacity → pay.
The Registration tab has four pages down the side. Forms & fees is registration types, questions and the waiver. Agreements is the extra acknowledgements. Options is who adds teams, pay-later, self-service and the waitlist. Donations is the optional charity ask at checkout. Reminders and the confirmation email are under Communications, with the rest of your messaging.
Season → Registration → Options, in the card headed "When a division or the season is full". On, a full division still appears on the form marked "full, joins waitlist". Off, registration closes when full and a full division cannot be chosen at all, so nobody pays to join one you have no room for.
No. Reminders go out only when you press Send, on Communications → Reminders & confirmation. Each one shows how many people are still due it and when it was last sent, and there is a Preview button so you can read the real email — with your branding, and a real balance on the payment reminder — before anybody receives it.
Set up registration types on the season — these are your fee tiers, such as early-bird and regular, or separate player and coach rates. Add your divisions, any custom questions, and a waiver, then open registration.
Yes. Both appear on your public site and the registration page asks which one they are signing up for, so somebody can enter your winter season while your fall season is still running. Each season keeps its own registration types, dues, divisions and roster.
It has no active registration types, so there is nothing for anyone to sign up as — the season is left off the public site rather than sending people to an empty form. A warning on the Setup page says so when the dates are open and the types are missing.
Connect your payout account under Payments, then set the price on each registration type. You choose whether to pass the processing fee to registrants or absorb it.
You choose, and it is one or the other. On Registration → Forms & fees, "Who adds the teams" sets it. If you add them, there is no team entry on the public form at all and managers just pay for the team you entered. If managers register their own, they pick a team registration type and type their team name on the public form, and become that team's manager. Running both at once is what produces duplicate teams.
Yes. Turn on "register now and pay offline" under Payment Options on the same page, and optionally set how many days they have. Registrants then get a Pay now / Pay offline choice. A deferred entry keeps its spot and shows as unpaid; they can still pay online later from their dashboard, or hand you a check and you mark it paid.
Yes. Create coupons on the season for a fixed amount or a percentage, and you can limit how many times each one is used.
Yes — up to two extra acknowledgements: a code of conduct, a photo release, a facility's rules, your refund policy. Write the wording once on Registration → Forms & fees, switch it on, then tick which registration types have to accept it. So a team entry can carry the facility agreement while a player signup does not, without writing it twice.
Because you can then prove somebody agreed to that specific thing. Each one is recorded with its own date and time on the registration, which a paragraph buried in the waiver text cannot give you.
The registration records it. A player record shows "Signed by a parent or guardian" with the account that agreed, and the roster export has a Signed By column reading Player or Parent/guardian. Registrations taken before this was recorded are blank rather than guessed at.
No. A person is their name and email together, so each child is their own player with their own division, dues and roster spot even though the confirmations all go to a parent. Their parent can see and pay for all of them from one account.
A player registered by somebody else can be entered without an address of their own, and takes the address of whoever registered them — usually a parent. Emailing that player reaches the parent, which is normally what you want for a minor.
Yes, that is what the switch is for. Switched off it disappears from the form and the text stays, so you can use it again next season.
No. An acknowledgement nobody has to tick is not an acknowledgement — if it is not required, leave it off that registration type.
Yes. Each code has an Applies To setting: Everyone, Team entries only, or Players only. This matters because a team entry and a player's dues are usually very different amounts, so "$50 off" meant for a $500 team entry is rarely right for an $85 player signup. Someone using a code on the wrong kind of entry is told which it is for, and the code does not use up one of its redemptions.
You decide. "When a division or the season is full" lets you either take waitlist entries or close registration outright. With the waitlist off, a full division cannot be chosen at all, so nobody pays to join something you have no room for. Note that a division cap counts TEAMS — it never blocks an individual player from registering.
Yes, two ways. Duplicate the whole season with the Duplicate button at the top of the season page \u2014 divisions, registration types, coupons, the waiver and every registration setting come across, and the copy starts as a draft with no dates. Or import just the registration types from your league defaults.
Season → Registration → Forms & fees → add your registration types and prices → add divisions and questions → open registration.
Season → Registration → Coupons → set the code, amount, and usage limit.
Ask members to add a gift for one charity while they pay their dues.
It puts an optional donation on the registration checkout. Members pick an amount — or skip it — and it goes on the same card charge as their dues. There is no second form and no second payment.
Season → Registration → Donations. Turn it on, name the charity, and save. Everything else on that page is optional.
Per season, like your registration types, dues, waiver and confirmation email. That means a league can back a different cause each season — and it also means you set it again on a new season rather than it carrying over silently.
No. There is no platform fee on donations. We only pass on the card processing cost, which we would otherwise be paying ourselves.
Into your Stripe account, alongside the dues. PlayCompete does not hold it and does not send it to the charity — passing it on is your job, and so is agreeing with the charity how and when.
Two things stop it. The charity name is required, because an unattributed ask for money is not something anyone should be shown. And online payments must be set up for your organization — the gift rides on the dues charge, so without a checkout there is nothing for it to ride on.
A member who owes nothing but adds a gift still goes to the payment page for the gift alone. But if no registration type has a price, nobody reaches checkout and the ask never appears.
Yes — set your own suggested amounts as whole dollars, and a smallest gift. Members can always type a different amount. Left blank you get $10, $25, $50 and $100.
An email as soon as the payment confirms, with the amount, the date, their division and a receipt number.
Only when you tick "tax deductible" AND enter the charity's EIN. Then the email calls itself a receipt and includes the required "no goods or services were provided" wording. Without both it is a plain thank-you that makes no claim about deductibility — which is the safe default, because a receipt you are not entitled to issue is a problem for the donor as well as for you.
Gifts already made keep the charity name and EIN they were given at the time. A receipt sitting in someone's tax file never quietly starts saying something else.
The same card on the Registration tab lists every paid gift with the donor, division, date, receipt number and amount, and totals them. Export CSV gives you the lot for the charity.
Somebody chose an amount and then never finished paying. Nothing was charged and nothing is owed, so they are not counted in your total.
No. A dues refund covers the dues only. If a donor wants their gift back you will need to refund it yourself in Stripe.
Season → Registration → Donations → tick the switch → enter the charity name → Save.
Same card → enter the charity's EIN → tick "tax deductible" → Save.
Season → Registration → Donations → the list of paid gifts, or Export CSV.
Your referees, umpires and scorers — and who is working which game.
Season → Competition → Officiants. Two pages: the roster of people, and the game assignments board.
No. The roster belongs to the league, not the season, so the same people are there every autumn. Only their game assignments are per season, which is as it should be — the fixtures change, the officials usually do not.
Game assignments → find the game → pick a person and what they are doing → Add. A game takes as many people as it needs, so a referee and a scorer sit on the same fixture.
How many games that person is already working this season. It is there so you can spread the load instead of giving one referee every Tuesday.
They are on two games that overlap in time. The row goes red and the count is at the top. Back-to-back games are fine — a 6pm and a 7pm on the same field is not a clash.
Because you sometimes know better than the schedule — a game may be about to move, or run short. It is saved and flagged rather than refused.
Yes. It shows on the board as "no time" rather than being hidden, because somebody still has to referee it. It never counts as a clash, since we cannot know whether it overlaps anything.
The Show filter → Unstaffed only. Combine it with a division filter to work through one age group at a time.
Yes. Day sheet next to their name lists every game they are on this season, in order, with date, time, location, teams and job — and a Print button.
Each row on a day sheet has Assigned / Confirmed / Declined. Useful when you roster a season in advance and chase replies.
Set a pay-per-game rate on each person. Their day sheet multiplies it out, and Export CSV gives you every assignment with the rate attached.
The complex and the field within it — "Riverside Park — Field 1". It comes straight from the field on the game, so it cannot go stale.
Their assignments go with them, across every season, and you are told how many first. Those games become unstaffed — the honest state, rather than showing them as covered by somebody who has gone.
League admins, and anyone with the Head Officiant role. That role covers this area and nothing else: they can open the season and read the schedule in order to staff it, but cannot enter scores, change teams or standings, see financials or email your members.
Season → Competition → Officiants → add each person. They stay for future seasons.
Officiants → Game assignments → pick a person and a job on each game.
Game assignments → Show → Unstaffed only.
Officiants → Day sheet next to a name → Print.
League → Team & Roles → add them as Head Officiant.
Because there is no online payment behind it. A row you marked Paid by hand — cash, a check, a bank transfer — shows "Paid offline" instead, and there is nothing for us to send back through Stripe. Hand the money back the way you took it and set them to Unpaid.
No. Once a registration is refunded the button disappears, and if the page is resubmitted — a stale tab, a double-click, the back button — it is refused rather than issuing a second refund.
Anyone with the Finance permission, which includes your Treasurer role.
Season → Financials → Refunds. Every registration that has been paid for, what your policy says you owe, and what you have already returned.
Whatever your season refund policy works out to for those dues, filled in for you. Type over it for a partial or a full refund.
No — and this is the main difference from tournaments. A refunded player stays on the roster. Refunding money and removing somebody from a team are separate decisions, so if you want them off, do that on the Rostering page.
No. That cost was incurred when the payment was taken. Refunds are capped at the dues for the same reason.
Never included. It is shown in its own column so you can see it, but these buttons only touch the dues. Refund a gift from your Stripe dashboard if you need to.
Either they never paid through PlayCompete — somebody you marked paid by hand has no card payment to reverse — or they have already been refunded.
Organization managers only. A per-league role cannot move money.
Season → Financials → Refunds → check the amount → Refund.
Season → Rostering → find the player → remove.
Add teams to the season and assign registered players to them. You can add, edit, and remove teams at any point, and export a roster for any team.
It is set per team, so one team can publish its roster while another keeps it private. There used to be a single switch for the whole season, which forced the same answer on every team in it.
Yes, if you give them the permission. Without it the choice stays yours. A team's own manager and players always see their roster whatever is published.
A running list of everyone who has been part of your league across seasons. You can add a season's registrants to it in bulk, which makes it easy to email past members when the next season opens.
Yes. The season roster shows every registration, and you can filter it by division, by team, by paid or unpaid, and by status. Filter to "Free agent / no team" to see exactly who is still unassigned before the schedule goes out.
Player Directory, under Teams in the season menu — then click their name. That opens their full record: contact details, what they registered for, their waiver, what they actually paid, every question they answered on the form, and the other seasons they have played in your league. You can reach the same page from the league directory.
Season → Player Directory → Export. One file with everything: contact details, division and team, registration type, amount and payment status, whether they paid online or offline, waiver signed, and a column for every question on your form. There used to be two exports that gave different columns; there is now one.
The row says so. A registrant you have added reads "✓ In directory" instead of offering the button again.
Season → Teams → Add Team → name it and pick a division.
Season → Player Directory → Add all to League Directory, or add individual registrants.
Season → Player Directory → Export.
Season → Player Directory → click their name.
Taking people off the waitlist when room opens up.
Season → Rostering. If anyone is waiting you get a banner at the top saying how many, with an Invite all button, and every waitlisted row has its own Invite. Inviting moves them to Registered and emails them straight away.
That a spot opened up and their place is being held. If they owe a fee it carries a payment link and, if you set a number of days on Payment Options, a deadline. A team gets a link that works without them signing in, so a manager without an account can still pay.
The invitation still goes out, and the confirmation tells you the division is full so you know you are overfilling it. That is deliberate — you are the one deciding to make room.
No. Once someone is off the waitlist, pressing Invite again is refused and no second email is sent.
Season → Rostering → find the waitlisted row → Invite.
Season → Rostering → Invite all, at the top of the roster.
Season → Registration → Forms & fees → Payment Options → days to pay.
Add your fields and the hours each one is available, add any blackout dates, then generate the schedule for a division. The generator works within your availability and skips blackouts.
Yes. Import games from a CSV — download the sample file first so your columns match. Any rows that cannot be read are reported so you can fix them.
Edit the game to change its date, time, or field, or drag it on the schedule board. When you reschedule you can notify the affected teams by email.
Yes. Schedule & Scores and Quick Scores both filter by division, which is what you want when you are working through one division's results and the season has six.
Clear scores, on Schedule & Scores. It empties the result and puts the game back to scheduled, so the standings stop counting it.
Yes. Turn on inter-division games at the top of Schedule & Scores — the switch applies to the whole season. Then pick any two teams when you add a game, or use the generator to build a crossover round between two divisions.
Its Division column reads "Inter" rather than naming one of them, which would be misleading when two are involved. The result counts in both teams' own division standings.
Yes — if the two teams you name are in different divisions the game is imported as inter-division automatically. The sample file says so.
League → Fields → add each field → set its available hours. Then add season blackout dates.
Season → Scheduling → Generate → choose the division → review before publishing.
Season → Scheduling → open the game → change the date/time/field → Save → Notify teams.
Season → Schedule & Scores → the inter-division switch at the top of the page.
Season → Scheduling → Generate → crossover → pick the two divisions.
Use Quick Scores to enter results down the list as games finish, or open an individual game. Standings update from the scores you enter.
Yes, and nothing counts until you say so. Managers and coaches report a score from their team page; it lands in Season → Schedule & Scores → Score approvals. A reported score is a claim, an approved score is a result — until you approve it the game has no result and the standings do not move.
You are emailed when one is reported, and a count appears next to Score approvals in the season menu until you have dealt with them all. Before that a reported score was silent — it sat there until somebody happened to look.
You see both, side by side on the same game, flagged either "Both teams reported the same score" or "Teams disagree". Approve the one you believe; the other closes as Superseded rather than Rejected, because they did not do anything wrong.
It leaves the game exactly as it was and shows your reason to the team, who can then submit a corrected score. It never wipes a result you had already approved.
Anyone with the Scores permission — that is your Admin, Operations and Scorekeeper roles. It is the whole reason the Scorekeeper role exists.
Use Recalculate standings. It rebuilds every record from the games actually played, which clears up anything left over from an edited or deleted result.
Yes — one table per division, since teams in different divisions do not play a comparable schedule and ranking them together means nothing.
In both teams' own division standings. Each team's record includes every game it actually played, whoever it played, so a crossover result is not lost from either table.
Yes. There is a public standings toggle on the season, so you can keep them internal — useful for younger age groups where you may not want a public table.
The Standings tab has two pages down the side. Standings is the table itself, with Recalculate and the publish toggle. Tiebreakers is where you set how teams are ranked and how ties are broken.
Season → Standings → Tiebreakers. Choose what the table sorts on — league points from your points-per-win settings, most games won, or win percentage — and then the tiebreakers, in the order you want them applied.
Head to head, most games won, fewest games lost, points differential, fewest points allowed, most points scored, coin toss and random draw. Tick the ones that apply; each is only consulted when everything above it is still level.
You get a sensible default: head to head, then points differential, then most points scored — which is how most league rulebooks read. Before this existed, teams level on points came out in an arbitrary order, so if you have old seasons it is worth recalculating them.
It looks only at the games the two tied teams played against each other. If they split those games, or never met, it decides nothing and the next tiebreaker applies. It cannot untangle a three-way tie where everyone beat someone — that is a genuine deadlock, and the next rule down settles it.
It is decided once per recalculation, not per page load — so the table does not reshuffle every time somebody opens it. Recalculating again will draw afresh, which is worth knowing before you use it to settle a playoff spot.
Saving the settings recalculates every division straight away, so it should not. If a table still looks wrong, press Recalculate — the order is stored, so anything calculated before you changed the settings keeps its old order until it is rebuilt.
Season → Quick Scores → type each final score → they save as you go.
Season → Standings → Tiebreakers → choose what to rank by and tick your tiebreakers → Save & recalculate.
Season → Standings → Recalculate.
Playoffs is its own item in the season menu, between Standings and Officiants.
Generate a playoff bracket for the season. Teams are seeded from the standings, so finish entering your regular-season scores first. The bracket then appears on the same Playoffs page.
Single elimination or double elimination, with an optional third-place match. Choose how many teams advance per division and how they are seeded.
Enter each match score on the bracket and winners advance automatically to the next round. In a double elimination bracket the loser drops to the losers side rather than being knocked out.
Yes. Playoff games appear on Schedule & Scores like any other game, so you can assign a field and a start time, move them, and notify teams. They start with no date or time until you set one.
Yes, once you publish it. Until then it is yours alone, so you can generate and re-seed without spectators watching a bracket change under them.
Clear it. The result is removed, the team it advanced is taken back out of the next round, and the bracket returns to where it was.
Season → Playoffs → set the format and how many teams advance → Generate bracket (seeded from standings) → enter scores as games are played.
Season → Schedule & Scores → find the playoff game → set the date, time and field.
Season → Playoffs → Publish.
Managers and coaches handle some of the running of their own team.
Take attendance for games, schedule their own team events such as practices, chase players who have not replied, and report scores for approval. None of it changes your schedule, your standings or your public site.
A manager's own additions for their team — practices, scrimmages, team photos, a fundraiser. They set the date, time, a location typed in free text, and any notes, and everyone on the roster is emailed straight away. Players say whether they are coming, the same way they do for a game.
No, deliberately. A team event never appears on the season schedule, the field board, quick scores, the standings, officiant assignment or the public site. It belongs to that team.
Yes. Most of what a manager hears comes at practice or by text, so they can set any player's answer for a game or a team event. Players can only answer for themselves.
It emails the people who have not answered yet about an upcoming game — and only them. If everyone has replied it says so and sends nothing.
Managers and coaches, since the coach is often the one with the book. Players cannot. See Scores & standings for what happens to a reported score.
Season → Rostering → tick Manager on their row. Whoever registers a team is made its manager automatically.
Team events are on the team's own page — they are not in your season admin.
Show your standings or schedule on a site you already have.
Yes. Season → Embeds builds the code for you. Pick standings or schedule, choose a division and a look, copy the code, and paste it into any page that accepts HTML. It updates itself — there is nothing to re-paste when a score changes.
WordPress (a Custom HTML block), Squarespace, Wix, Weebly, and plain HTML. If your page builder strips out iframes, use the direct link on that page instead.
There is a light and a dark version — pick whichever suits your background. It carries no navigation or footer of ours, just the table.
Three usual reasons, and the Embeds page tells you which: your league's public page is switched off, the season has not been activated, or standings have not been published. An embed never shows anything your own public pages would not.
Your choice. Pinned to a season, it keeps showing that one forever. Unpinned, it follows whichever season is current — better for a page you do not want to update every year.
Pin it. With two seasons running there is no single "current" one, so an unpinned embed has to pick and may not pick the one you meant. Build one embed per season and pin each — that is also what your visitors want, since a fall table and a winter table are two different things.
An iframe cannot size itself, so you set a height. 420px suits a ten-team table; a full schedule wants more.
Season → Embeds → choose what to show → Copy.
Paste into a Custom HTML block or your page's HTML.
Yes, and you do not need a separate website tool. Your league has public pages for schedule, standings, teams, and sponsors, plus any custom pages you add.
Use the page builder: add rows and blocks, apply a layout, and set which pages appear in the public navigation.
Yes. Add sponsor logos and links, and upload photos, and they appear on your public league pages.
League → Website → choose a page → add rows and blocks → Save.
League → Sponsors → add each sponsor with a logo and link.
Two, and they are genuinely different. FORWARDING points your domain at your PlayCompete page — quick to set up, but once a visitor lands, the address bar shows our address rather than yours. SERVING THE SITE ON YOUR DOMAIN keeps your address in the bar the whole time. That one takes longer because your domain has to be pointed at us, proved as yours, and given its own security certificate.
Forwarding if you mainly want something short to print on a flyer or say out loud. Serving on your own domain if the address itself matters to you — a sponsor deck, a club that already has a website, or anywhere people will notice that the address changed.
Own the domain, then request it from your league. The site admin sets up the redirect at our end. If the domain is registered somewhere else you may be asked to point it at us first — they will tell you exactly what to enter.
Three things at your domain registrar, then we finish it. First, add the TXT record shown on your request card — that proves the domain is yours. Second, point the domain at us with the DNS records on the same card. Third, tell the site admin it is done. They check the record, add your domain to the server and install its certificate.
At whoever you bought the domain from — GoDaddy, Namecheap, Squarespace, Cloudflare and so on. Look for DNS, Manage DNS, or Advanced DNS. You are adding records, not replacing what is there.
It proves the domain is yours before we publish your league on it. Without that check anyone could point a domain they do not own at us and have us serve pages under someone else's name.
Not if you only add the records you are given. Email is controlled by separate MX records — leave those alone and mail keeps working exactly as it does now. If your registrar offers to "replace all records" or "switch to our nameservers", stop and ask the site admin first.
Most registrars will not allow a CNAME on the root of a domain — it is a DNS rule, not a limitation of ours. That is why the root gets an IP address and only the www version gets a CNAME.
DNS changes usually spread within a few hours and occasionally take up to two days. Nothing breaks while you wait: your league stays reachable at its PlayCompete address the whole time, and the new one starts working when it is ready.
No. Once your domain points at us the site admin installs a free certificate for it. Until that is done a browser will warn people the connection is not secure, which is why the domain is not switched on until the certificate is in place.
Usually the record has not spread yet, or it was added on the wrong name. Check it is a TXT record on the root of the domain — the name field is often shown as @ — and that the value was pasted whole. Then ask the site admin to run the check again.
No. Your PlayCompete address keeps working, and so does every link already sent out, printed on a flyer or saved as a bookmark. The new address is an addition, not a replacement.
Yes. Submit a new request with the other option, or a different domain. Changing the domain issues a fresh ownership code, so the record has to be added again on the new one.
Then ask for a subdomain of ours instead — something like yourclub.sports.playcompete.net. It costs nothing, needs no DNS work from you, and is set up the same day.
League → Website → Custom Web Address → enter your domain → choose "Forward to our address" → Request.
League → Website → Custom Web Address → enter your domain → choose "Serve the site on my domain" → Request. The card then shows the exact records to add at your registrar.
Add the TXT record and the DNS records shown on the card → tell the site admin → they verify, add the domain to the server and install its certificate.
Open the league and choose Team & Roles, then add the person by email and pick a role. They sign in with their own PlayCompete account and we email them an invite.
Admin (everything), Web Admin (pages and sponsors), Treasurer (registration, financials, coupons, sponsors and email), Operations (teams, players, rosters, locations, the field board and quick scores), Scorekeeper (score and standings entry only), and Head Officiant (the officiant roster and game assignments, and nothing else).
Build the officiant roster and assign referees to games. They can open the season and read the schedule, since staffing it requires seeing it, but cannot enter scores, change teams or standings, see financials or email your members.
No. People only see what their role allows. A scorekeeper gets to the season area to enter scores but not to your settings, registration, or website.
League → Team & Roles → enter their email → choose a role → Add.
From your dashboard create a tournament, set the dates and sport, and add your divisions. Unlike a league there are no seasons — a tournament is a single event.
Yes. Open the tournament and choose Duplicate. Divisions, registration types, questions, locations, sponsors, your page layout, coupons, waiver, branding, refund and donation settings and your officiant roster all come across. Teams, games, scores, payments and officiant assignments do not. The copy is an unpublished draft with no dates, so it cannot be mistaken for the live event, and it needs activating like any new tournament.
Publishing your public page, opening registration, scheduling, financials, and emailing teams all require a one-time activation payment per tournament. You pay for the number of teams you expect.
$4 per team, with no base fee — so 5 teams is $20, 7 teams is $28 and 20 teams is $80. It is a one-time payment, not a subscription. The smallest capacity you can buy is 2 teams.
Registration locks at your paid capacity so you are never surprised. Raise it at any time from the plan screen and pay only the difference — going from 12 teams to 20 costs $32, not the whole thing again.
Numbered steps in the side menu, and a checklist on the Setup page that says the same thing. They run in the order a tournament is actually built: 1 Setup, 2 Registration, 3 Teams & Divisions, 4 Pool Management, 5 Locations, 6 Schedule. A number disappears when that step is done, so gaps in the sequence are normal. Anything without a number is optional.
Because none of your divisions is set to Pool Play + Bracket, so you do not need pools — the checklist answers that step for you rather than nagging at a tournament that is correctly set up. If a pool-play division has no pools yet, the number stays and the tooltip names the division that is short.
Dashboard → Tournaments → New Tournament → add divisions → Activate → choose your plan/capacity → pay.
Yes — up to two extra acknowledgements, such as a code of conduct or a facility's rules. Write the wording once under Registration, switch it on, then tick which registration types must accept it. Each is recorded with its own date and time, which is the point: you can show somebody agreed to that specific thing.
Yes. Communications → Email registrants has bold, italic, underline, headings, bullet and numbered lists, quotes and links. If the editor cannot load for any reason the box still works as plain text, so a message never gets stuck.
The Registration tab has three pages down the side. Forms & fees is registration types, questions and the waiver. Donations is the optional charity ask at checkout. Options is player registration, self-service and the waitlist. Reminders and the confirmation email are under Communications, on its own tab.
Tournament → Registration → Options, in the card headed "Waitlist". The switch and the payment window are together there. On, a full division still appears on the form marked "Full — joins waitlist". Off, it shows as "Full — closed" and cannot be chosen at all, so nobody pays an entry fee for a division you have no room for.
No. Reminders go out only when you press Send, on Communications → Reminders & confirmation. Each one shows how many people are still due it and when it was last sent, and there is a Preview button so you can read the real email — with your branding, and a real balance on the payment reminder — before anybody receives it.
Teams pick a division on your public page and enter their team and contact details. You can also allow individual players to register, which is useful for free agents and for events that build teams on site.
Add registration types with the entry fee for each division or team type, and connect your payout account so payments come to you. This is the only place an entry fee is set — the Setup page used to carry one too, and a second copy only ever disagreed with this one.
Yes. Add custom questions to the registration form and turn on a waiver that has to be agreed before an entry is accepted.
Yes. The intro message and the footer both have bold, italic, underline, bullet and numbered lists, and links. Use the Preview button to read the finished email before anyone gets it. Anything you wrote before formatting existed still shows exactly as it did.
Tournament → Registration → Forms & fees → add registration types and fees → add questions and a waiver → open registration.
Ask teams to add a gift for one charity while they pay their entry fee.
It puts an optional donation on the registration checkout. Teams pick an amount — or skip it — and it goes on the same card charge as their entry fee. There is no second form and no second payment.
Tournament → Registration → Donations. Turn it on, name the charity, and save. Everything else on that page is optional.
No. There is no platform fee on donations. We only pass on the card processing cost, which we would otherwise be paying ourselves.
Into your Stripe account, alongside the entry fees. PlayCompete does not hold it and does not send it to the charity — passing it on is your job, and so is agreeing with the charity how and when.
Two things stop it. The charity name is required, because an unattributed ask for money is not something anyone should be shown. And online payments must be set up for your organization — the gift rides on the entry-fee charge, so without a checkout there is nothing for it to ride on.
A team that owes nothing but adds a gift still goes to the payment page for the gift alone. But if none of your registration types has a price, nobody reaches checkout and the ask never appears.
Yes — set your own suggested amounts as whole dollars, and a smallest gift. Teams can always type a different amount. Left blank you get $10, $25, $50 and $100.
An email as soon as the payment confirms, with the amount, the date, their team and a receipt number.
Only when you tick "tax deductible" AND enter the charity's EIN. Then the email calls itself a receipt and includes the required "no goods or services were provided" wording. Without both it is a plain thank-you that makes no claim about deductibility — which is the safe default, because a receipt you are not entitled to issue is a problem for the donor as well as for you.
Gifts already made keep the charity name and EIN they were given at the time. A receipt sitting in someone's tax file never quietly starts saying something else.
Tournament → Financials → Donations. Every paid gift with the donor, team, date, receipt number and amount, plus a CSV export for the charity.
Somebody chose an amount and then never finished paying. Nothing was charged and nothing is owed, so they are not counted in your total.
No. The refund is worked out from the entry fee only. If a donor wants their gift back you will need to refund it yourself in Stripe.
Tournament → Registration → Donations → tick the switch → enter the charity name → Save.
Same page → enter the charity's EIN → tick "tax deductible" → Save.
Tournament → Financials → Donations → Export CSV.
Under Teams in the side menu, which now has three separate items: Teams & Divisions, Pool Management, and Check-in. They are three different jobs, often done by different people at different times — a check-in volunteer has no business in pool seeding — so each is its own page rather than tabs inside one.
They moved to Teams & Divisions, which is where they belong: a division is a group of teams, and it used to sit in a column beside the tournament name and description with nothing to do with either. Setup is now just the tournament's own details.
Teams & Divisions shows every entry with its division, contact, roster count, and whether it has paid. You can approve, edit, move, or remove teams from there.
Team managers add their own players from their team page, and you can add or approve players yourself. Roster maximums are set per division (or a tournament-wide default), and a division can also carry a minimum — a team under it is flagged as short on the Teams list, but is never stopped from saving.
On the division. There used to be a tournament-wide default on the Setup page as well, which meant two places could disagree about the same number — now the division is the only answer. A youth division and an adult division in the same tournament can have different squad sizes.
Yes, per division. Each division has a "Show public roster" tick on Teams & Divisions, so you can publish an adult division's roster while keeping a youth division's private. A team's own manager always sees their roster whatever you choose.
Yes. Check-in is its own item under Teams. Use it to mark teams and individual players as arrived.
Tournament → Teams → Add Team → pick the division → enter contact details.
Tournament → Check-In → find the team → Check in players → Check in all.
Working a check-in desk with a queue in front of you.
Tournament → Check-in, its own item under Teams in the side menu. The board shows every team by division with a running count, so you can see at a glance who is still to arrive.
Choose Check in players next to a team. That opens a page for that team alone — big buttons, one row per player, and a search box for finding somebody on a long roster.
Use Check in all on that team's page. It checks in every player at once and marks the team itself as arrived, which is the usual case and saves tapping fifteen names.
Yes. The bottom of each team page has the previous and next team in that division, so a desk can work straight down the list.
No — they are separate. The team badge means the team has arrived; player check-in tracks who is actually present. Use whichever you need. If you are not tracking individual players, checking the team in is enough.
You can still check the team in. Rosters are added by team managers from their team page, or by you on the team page — plenty of tournaments never collect them.
That is deliberate. The team page flags an unpaid entry fee, an unsigned waiver, and a no-show, so a desk sees the problems before waving somebody through. Checking a team in does not record a payment.
Yes. Anyone with the role that covers teams and rosters can work the check-in pages. They cannot reach your event settings or financials. See Roles & staff.
Each tap is saved as it happens, so what you have done already is safe. If a tap cannot reach the server the page reloads and shows you the true state rather than a button that lied about it.
Tap them again to undo it, or use Clear to reset the whole team's players. Clearing players deliberately leaves the team itself marked as arrived.
Tournament → Check-In → Check in players → tap each player, or Check in all.
Tournament → Check-In → the ✗ button on the team's card.
Tournament → Check-In → Export CSV.
Tournament → Teams → Export CSV, or the same button on the Check-In board. One row per team: division, status, seed, city, contact details, entry fee, whether they have paid, roster size, how many players are checked in, waiver and the date they registered.
The registrations export is one row per person, which is what you want for demographics or a mailing list. The teams export is one row per team, which is what you want for a check-in desk, a chase list of unpaid entries, or handing a division to a scorekeeper.
Yes — add ?division= and the division id to the export link, or ?status=registered to leave out waitlisted and withdrawn teams. Useful when you want one sheet per check-in table.
Venue wifi. If the connection goes down mid-morning a printed team sheet keeps check-in moving, and you can enter it afterwards.
Tournament → Teams → Export CSV.
The 1st, 2nd and 3rd summary that appears when a division finishes.
At the top of your public Bracket & Results page, one row of placings per division. It is the thing to link people to after the event, rather than asking them to read a bracket.
No. It is worked out from the matches every time the page loads. Correct a score or replay a match and the podium follows — it can never disagree with the bracket above it.
Only when a division has genuinely finished: the final played and the bracket published. A podium that appears before the final is worse than no podium, so a half-played division shows nothing.
Because no third-place match was played. It says so rather than leaving a gap, since a blank space reads as a mistake. Turn on the third-place match when you set the bracket up if you want one.
Then no podium is shown. Placings come from a completed bracket and nothing else — a pool table is a standing, not a result, and posting the pool leader as champion would announce a winner before the games that decide it. Your pool standings are still on the Results page for everyone to read.
Handled. The grand final decides it, not the winners-bracket final — so a team that comes back through the losers bracket and wins is shown as the champion.
Almost always the bracket is not published. An unpublished bracket is a draft, so its result stays private too. Publish it on the Brackets tab.
Play the final → Brackets → publish the bracket → the podium appears on your public Results page.
Brackets → bracket setup → turn on the third-place match before generating.
Your referees, umpires and scorers — and who is working which game.
Tournament → Competition → Officiants. Two pages: the roster of people, and the game assignments board.
Officiants → fill in the form on the right. Only a first name is required; email, phone, level and a pay-per-game rate are all optional. Mark someone inactive rather than removing them if they are just not working today.
Game assignments → find the game → pick a person and what they are doing → Add. A game can have as many people as it needs, so a referee and a scorer sit on the same slot.
Referee, umpire, scorer, line judge, or other. Recording which is which matters later — it is what lets you pay two people different rates for the same game.
How many games that person is already on. It is there so you can spread the day out instead of working one person into the ground.
The complex and the field within it — "Westside Complex — Field 3". The complex comes from your Locations list, so a tournament running across two venues does not end up with two indistinguishable "Field 1" rows. If a game names a location you have since renamed or deleted, the stored name is shown on its own rather than being left blank.
They are on two games that overlap in time. The row goes red and the count is at the top of the page. Back-to-back games are fine — a game finishing at 2:00 and one starting at 2:00 is not a clash.
Because you sometimes know better than the schedule — a game may be about to move, or the earlier one will finish early. It is saved and flagged rather than refused, so you are told without being blocked.
Yes. Unscheduled games appear at the bottom of the board rather than being hidden, because somebody still has to officiate them and they are easy to forget. They never count as a clash, since we do not know when they are.
The Show filter at the top → Unstaffed only. Combine it with a division filter to work through one location at a time.
Yes. Day sheet next to their name lists every game they are on, in order, with time, location, teams and job — and a Print button. That is the sheet to hand them when they arrive.
Each row on a day sheet has Assigned / Confirmed / Declined. Useful if you chase your officials in advance rather than rostering them on the morning.
Set a pay-per-game rate on each person. Their day sheet multiplies it out, and Export CSV gives you every assignment with the rate attached for payroll.
Their assignments go with them, and you are told how many before you confirm. Those games become unstaffed — which is the honest state, rather than showing them as covered by a person who is gone.
Full tournament admins, and anyone with the Head Officiant role. That role is designed for exactly this: they can open the tournament and read the schedule in order to staff it, but cannot enter scores, change teams, touch the draw or edit your website. Assign it on Team & Roles.
No. If Officiants is the only area their role covers, opening the tournament takes them straight there.
Tournament → Competition → Officiants → add each person.
Officiants → Game assignments → pick a person and a job on each game.
Game assignments → Show → Unstaffed only.
Officiants → Day sheet next to a name → Print.
Tournament → Team & Roles → add them as Head Officiant.
Reaching every team on the day, when nobody is reading email.
The things that cannot wait for email: a rain delay, a location change, a field closure. Tournament → Communications → Text announcements.
Promotion. These numbers were given to you for the tournament the person is at, so the messages have to be about that event. Marketing texts are held to a much stricter legal standard than marketing email, and getting it wrong risks your sending number being blocked. Use an email campaign to sell next season.
Nothing to set up per tournament. Text messaging is switched on once for the whole platform by a PlayCompete administrator, and every tournament then has it. If the page says it is not on, ask them.
Yes, automatically. Every announcement is sent as "Spring Slam: your message", because a text from an unrecognised number with no sender name is what carriers filter as spam. A long tournament name is shortened to fit. If you have already opened your message with the event name we do not repeat it.
Yes, and the counter on the compose page includes it — so the length you see is the length that gets sent, not the length you typed.
Yes. As soon as somebody ticks the text box at registration they get a short confirmation naming the tournament, with HELP and STOP instructions. That is deliberately the first thing they receive, so nobody has to work out how to opt out during an emergency. A PlayCompete administrator can switch it off, since it costs one message per registration.
Team contacts by default — one number per team, belonging to the person who can actually move their team to another location. You can also include players who gave a mobile number, and narrow either to particular divisions.
Your provider charges per message, and anything over 160 characters is billed as several. The compose screen shows the count as you type, and the review screen shows the total before you commit.
Almost always a curly quote, a dash or an emoji. One character outside the plain set drops the limit from 160 to 70, so a short message can double in cost. The counter warns you.
You get a review screen first, with the exact recipient list and the final count. Nothing goes until you press Send.
Yes — and you can close it safely. Messages go out in small batches from that page. If you close the tab or lose signal, reopen the announcement and it picks up exactly where it stopped. Nobody is texted twice.
You can stop the ones that have not gone. Anything already sent has arrived — a text cannot be recalled, which is why the review screen exists.
Every message ends with "Reply STOP to opt out". A reply of STOP is recorded straight away and that number is never texted again, by you or by anybody else on PlayCompete. Someone who replies mid-send is skipped rather than messaged.
No. Only a message that is just the keyword counts. A sentence that happens to contain the word is treated as an ordinary reply, so a manager cannot be silenced by accident.
A checkbox on the registration form — unticked, so somebody has to choose it — saying plainly you may text urgent updates about this tournament. Carrier rules for 10DLC require consent to be given deliberately, not assumed. Teams who leave it unticked never appear in an audience, and the date they agreed is recorded.
Teams with no mobile number, a number we cannot read, a decline at registration, or an opt-out. Waitlisted teams are left out too — they are not in the tournament yet.
Not usefully. This is one-way: replies other than STOP are not delivered to you. Put a phone number in the message if you want people to reach you.
Full tournament admins only. It costs money and reaches everybody at once, so it is not given to per-area roles.
Tournament → Communications → Text announcements → write it → choose the audience → Review & send → Send now.
Stay under 160 characters and avoid emoji and curly quotes.
Returning an entry fee, with or without withdrawing the team.
Tournament → Financials → Refunds. Every team that has paid, what your policy says you owe them, and what you have already returned.
Whatever your refund policy works out to for that entry fee, filled in for you. It is only a starting figure — type over it for a partial or a full refund.
Ticked, the team is taken out: removed from the roster, from any pool or bracket, and its spot freed. That is the usual reason for a refund, so it is ticked by default. Untick it for a goodwill or partial refund where the team is still playing — cancelling a team mid-tournament would break a bracket you have already built.
No. That cost was incurred when the payment was taken, so it cannot come back. Refunds are capped at the entry fee for the same reason.
Never included. A gift is shown in its own column so you can see it, but these buttons only ever touch the entry fee. Refund a gift from your Stripe dashboard if you genuinely need to.
Either they never paid through PlayCompete — a team you marked paid by hand has no card payment to reverse — or they have already been refunded.
Stripe sends it back to the card that paid, usually within five to ten business days. Nothing further is needed from you.
They are emailed about the refund. That is a record of a transaction, so it goes out whether or not they have unsubscribed from your marketing.
Organization managers only. A per-event or per-tournament role cannot move money.
No. If self-service is on and they withdraw from their own team page, your refund policy is applied automatically. This page is for the cases you handle yourself.
Tournament → Financials → Refunds → check the amount → leave Withdraw ticked → Refund.
Same row → untick Withdraw → set the amount → Refund.
Its own item under Teams in the side menu, next to Teams & Divisions and Check-in. Pools are set up per division, so add your divisions first.
Create pools within a division and assign teams to them, then auto-generate a round robin so every team in a pool plays each other. You can also add or delete individual pool games by hand.
They calculate from the scores you enter, including tiebreakers, and they are what you seed your bracket from.
Yes. Cross-pool scheduling generates games between pools, and you can clear them again if you change your mind.
Tournament → Pool Management → Add Pool → assign teams → Auto-generate (round robin), or add games manually.
Generate a single or double elimination bracket for a division. The right size and any byes are worked out for you based on how many teams there are.
Seed from standings to place teams by pool results, or assign seeds yourself. You can unseed and redo it if pool play changes things.
When you publish it. That lets you finish seeding privately and reveal it once you are happy.
Yes. Resetting a bracket clears the scores and advancement without deleting the teams.
It is the cut-off for who makes the bracket. Top 2 from each pool takes the top two in every pool; All teams from each pool takes everyone, so pool play only decides the seeding and nobody goes home early. The bracket is sized from whatever that adds up to, and byes are given to the top seeds.
One extra game between the two teams that lose the semifinals, played to decide who finishes third. Without it a single-elimination bracket only tells you first and second — both losing semifinalists simply stop, and there is no game to separate them. Turn it on before you generate the bracket and the game appears alongside the final, so it can be scheduled and given a field like any other.
Because double elimination has already decided it. A team is only out after two losses, so the last team knocked out of the losers bracket has beaten everybody except the top two — that is third place, settled by games that were played. An extra match would be inventing a result that already exists.
Tournament → Brackets → generate for the division → seed from standings → Publish.
Add your locations — a complex plus each field within it — under Locations, then use the schedule board to place games into times and locations. The board is built to stop you double-booking a location.
Quick Scores. Enter results as play progresses and standings and brackets update automatically.
Mark them as a no-show and their opponent advances according to your rules.
Tournament → Locations → add each location. Then Schedule Board → place each game into a time and location.
Tournament → Quick Scores → enter each result as it finishes.
Extra teams join a waitlist at no charge, so you keep the interest instead of turning it away.
Promote a single team, or promote all waitlisted teams at once. Anyone who owes an entry fee is emailed a secure pay link with a deadline.
Their spot returns to the waitlist so it can go to the next team rather than sitting unpaid.
Tournament → Teams → Promote (or Promote All Waitlisted) → teams owing a fee get a pay link with a deadline.
Pool standings, the schedule or a live bracket, on a site you already have.
Yes. Tournament → Embeds builds the code. You can embed pool standings, the schedule, or a bracket, and it updates itself as scores go in — there is nothing to re-paste.
A bracket belongs to one division, so pick the division. With none picked it shows the first published one. Only PUBLISHED brackets can be embedded — a draft stays private, and embedding is not a way around that.
A bracket is wider and taller than a table. Set the height to 600px or more, and give it a full-width area on your page rather than a narrow sidebar.
WordPress, Squarespace, Wix, Weebly and plain HTML. If your builder strips iframes, use the direct link instead.
Your public page is switched off, the tournament has not been activated, or — for a bracket — none is published yet. The Embeds page says which.
Tournament → Embeds → choose what to show → Copy.
Tournament → Brackets → publish it, or the embed has nothing to show.
Yes. Teams, schedule, results, brackets, fields, and sponsors all have public pages, so players and parents have one place to look.
Use the page builder to add rows and blocks and apply a layout, and choose which pages show in the public navigation.
Your Contact page carries a message form. Somebody fills it in and it emails you, with their address as the reply-to, so replying goes straight back to them. It is protected against spam bots.
To the Contact Email on Website → Contact Page if you set one. Leave it blank and messages go to your organization's email address instead — but then no address is published on the page, only the form. Set one if you want people to be able to email you directly as well.
An intro message you write, your venue and city, and any social links you have added. The page used to say "reach out using the links below" and then show none — that was because there was nowhere to put a contact address at all.
Tournament → Website → choose a page → add rows and blocks → Save.
Tournament → Website → Contact Page → Contact Email.
Tournament → Sponsors → add each sponsor with a logo and link.
Two, and they are genuinely different. FORWARDING points your domain at your PlayCompete page — quick to set up, but once a visitor lands, the address bar shows our address rather than yours. SERVING THE SITE ON YOUR DOMAIN keeps your address in the bar the whole time. That one takes longer because your domain has to be pointed at us, proved as yours, and given its own security certificate.
Forwarding if you mainly want something short to print on a flyer or say out loud. Serving on your own domain if the address itself matters to you — a sponsor deck, a club that already has a website, or anywhere people will notice that the address changed.
Own the domain, then request it from your tournament. The site admin sets up the redirect at our end. If the domain is registered somewhere else you may be asked to point it at us first — they will tell you exactly what to enter.
Three things at your domain registrar, then we finish it. First, add the TXT record shown on your request card — that proves the domain is yours. Second, point the domain at us with the DNS records on the same card. Third, tell the site admin it is done. They check the record, add your domain to the server and install its certificate.
At whoever you bought the domain from — GoDaddy, Namecheap, Squarespace, Cloudflare and so on. Look for DNS, Manage DNS, or Advanced DNS. You are adding records, not replacing what is there.
It proves the domain is yours before we publish your tournament on it. Without that check anyone could point a domain they do not own at us and have us serve pages under someone else's name.
Not if you only add the records you are given. Email is controlled by separate MX records — leave those alone and mail keeps working exactly as it does now. If your registrar offers to "replace all records" or "switch to our nameservers", stop and ask the site admin first.
Most registrars will not allow a CNAME on the root of a domain — it is a DNS rule, not a limitation of ours. That is why the root gets an IP address and only the www version gets a CNAME.
DNS changes usually spread within a few hours and occasionally take up to two days. Nothing breaks while you wait: your tournament stays reachable at its PlayCompete address the whole time, and the new one starts working when it is ready.
No. Once your domain points at us the site admin installs a free certificate for it. Until that is done a browser will warn people the connection is not secure, which is why the domain is not switched on until the certificate is in place.
Usually the record has not spread yet, or it was added on the wrong name. Check it is a TXT record on the root of the domain — the name field is often shown as @ — and that the value was pasted whole. Then ask the site admin to run the check again.
No. Your PlayCompete address keeps working, and so does every link already sent out, printed on a flyer or saved as a bookmark. The new address is an addition, not a replacement.
Yes. Submit a new request with the other option, or a different domain. Changing the domain issues a fresh ownership code, so the record has to be added again on the new one.
Then ask for a subdomain of ours instead — something like yourclub.sports.playcompete.net. It costs nothing, needs no DNS work from you, and is set up the same day.
Tournament → Website → Custom Web Address → enter your domain → choose "Forward to our address" → Request.
Tournament → Website → Custom Web Address → enter your domain → choose "Serve the site on my domain" → Request. The card then shows the exact records to add at your registrar.
Add the TXT record and the DNS records shown on the card → tell the site admin → they verify, add the domain to the server and install its certificate.
Open the tournament and choose Team & Roles, then add the person by email and pick a role. They sign in with their own PlayCompete account and we email them an invite.
Full Admin (everything), Web Admin (pages and sponsors), Operations (teams, pools, brackets, seeding and scores), Scorekeeper (score entry, including the schedule board and quick scores), and Head Officiant (the officiant roster and game assignments, and nothing else).
Build the officiant roster and assign people to games. They can open the tournament and read the schedule, since staffing it requires seeing it, but they cannot enter scores, change teams, touch the draw, edit your website or see your financials. If it is the only area they have, opening the tournament takes them straight to it.
Yes. Roles given on a tournament apply only to that tournament, so a scorekeeper you add for one event does not get access to anything else you run.
Tournament → Team & Roles → enter their email → choose a role → Add.
We support most team sports, including baseball, softball, soccer, football, hockey, and more.
Yes. One login covers everything you run, with separate per-league and per-tournament roles for your staff.