League registration (Pro)
Bowlers sign up for a league season on your own website. You review every registration, put people on teams, and then send everybody their outcome in one go. Nothing is accepted automatically and nobody is emailed until you say so.
Turn it on first
Go to League Management › Settings and tick Take league registrations on your website. Until then the registration page does not exist, and the link returns a 404 rather than showing a form nobody is reading.
Registration works on its own. You do not have to switch on dues tracking to use it, and a center that collects on league night out of a cash box can take signups online without keeping a weekly ledger. With dues switched off you are never asked for a price, a payer, or anything else to do with money. Switching on either puts a page in your menu, named for what you are using: League Registration, League Dues, or Registration & Dues when you run both.
1. Create the season
Registration happens months before anybody bowls, so the season has to exist before there are any scores. On the registration page press Add a season and fill in:
- Season name. Type it exactly as it will be written in your league software. This is the one field that has to be right: that name is what joins this season to the scores when they start arriving. If the two differ you end up with two seasons instead of one.
- Registration opens and closes. Leave both empty to start taking signups straight away.
- Teams, bowlers per team, and weeks. These arrive filled in from what the league fielded last season, so usually you are confirming a number rather than looking one up.
- First bowling date and the date after which people can no longer withdraw themselves.
Leave teams at 0 for no limit. A league that has reached its limit keeps taking registrations onto a waiting list rather than turning anybody away.
A season you create stays off your website
A season nobody has bowled yet does not appear in standings, in the season pickers, on league pages, or on bowler profiles. There is nothing to show, so it shows nothing. The only place it appears is registration. Once week one is imported, the season fills in normally, which is why the season name has to match.
To take registrations for a season that is already in your imported scores, use Set up on the row in Seasons ready to set up instead. That brings its existing roster with it.
2. Put it on your website
Add the League Registration block to any page, or use the shortcode:
[bowling_registration]
It lists your leagues in three groups: open for registration, opening soon, and registration closed. Each one shows the night and time, how many to a team, the dates that matter, and a Register button.
Two options:
leaguelimits it to one league. Leave it empty for the whole center.showtakesall,open,upcomingorclosed. A short[bowling_registration show="open"]strip suits a home page; the full list suits a page of its own.
Closed leagues stay on the list on purpose. Somebody who has missed one still wants to know it runs, so they can ask about the next season.
Each league also has its own page at yoursite.com/leagues/league-name/register/, which you can put on a flyer or turn into a QR code.
3. What a bowler fills in
They choose how they are signing up: a full team, part of a team, or just me. Then they say how many bowlers they are registering.
Names are optional. A captain signing up in July usually knows two of his four for certain and is still working on the rest. He can hold all four places now and give you the names later, which is better for you than losing the team because the form would not accept it.
What the form will not accept is a half-entered person: a first name with no surname, or an email address with nobody attached to it. Those become roster lines your league software cannot use, so the form asks for both halves or an empty row.
Every registrant confirms their email with a six-digit code before anything reaches you. That keeps invented teams out of your queue.
Keeping bots out
Both of these forms are open to anybody on the internet, so both are protected. Before a submission is accepted, the visitor’s browser has to complete a small piece of work: a calculation that takes a fraction of a second and starts the moment the page loads, so it is finished long before anybody has typed their email address.
Your bowlers see nothing. There is no puzzle, no pictures of traffic lights to identify, and nothing extra to click. There is also nothing for you to set up: no accounts, no API keys, and no third-party service, which means nothing about the people visiting your website is sent anywhere else.
What it changes is the arithmetic for somebody trying to flood you. Every single attempt costs them that same fraction of a second, and an answer can only be used once, so a thousand submissions cost a thousand times as much as one. Combined with the emailed code, which already means nothing reaches your queue until the address is confirmed, that turns an unlimited flood into a slow trickle.
It cannot stop a determined person filling your queue in by hand, and no CAPTCHA on the market stops that either. If it ever happens, decline the lot and speak to us.
4. Your queue
Confirmed registrations appear under Registrations with contact details, who has been named, and any note they left. You approve, waitlist or decline each one.
These decisions do not email anybody. They are working notes, so you can change your mind as many times as you like without anybody receiving a correction. Everyone is told at the end, in one go, once the teams are set.
Approving adds those bowlers to the season, matched to their existing profiles where they have one and given profiles where they do not. If you are tracking dues, their charges are scheduled at the same time.
Because names are optional, the queue shows both numbers: a registration that holds four places and has named two reads as 2 of 4 named.
Counting team places
This is not simply counting registrations. Consider a ten-team league with five full teams and five pairs. Those pairs are holding five separate places, so on paper the league is full. But they are ten bowlers, and ten bowlers is three teams. Combine them and two places open up.
PinPortal therefore shows two numbers: what is held today, and what would be held after combining part-teams and individuals. Bowlers see the second one, so nobody is turned away for a shortage a bit of matchmaking removes.
Combining part-teams
When groups could share a team, the Registrations panel suggests it. Suggestions look for combinations that make a team exactly first, so a pair and a trio in a five-per-team league are offered as one team, and the combination needing the fewest merges wins.
Bowlers who signed up together are never split. If two trios cannot make a five, they are left as they are rather than broken apart. Nothing is applied until you accept it.
5. Put people on teams
Each approved or waitlisted registration has a Team box in the queue. Set it to a team number, or leave it on Not placed while you are still deciding.
Above the queue, Teams so far shows every team you have built, how many of its places are filled, and who is on it. A team short of a full complement is flagged, so you can see at a glance where you still need a bowler.
6. Finalize
When the teams are right, press Finalize teams and tell everyone. It tells you exactly how many people it will email before you confirm.
Everyone who got a place receives the first bowling date, the night and time, their team number and name, who they are bowling with, and the weekly dues if you are tracking them.
Everyone who did not get a place is told plainly, and sent the other leagues at your center that are still taking registrations. A bowler who would happily have bowled on a Thursday instead is worth keeping.
Three things make this safe:
- It will not run while a registration is still undecided. It tells you how many are waiting rather than deciding for you or quietly leaving somebody out.
- Nobody is ever emailed twice. Approve a late arrival after finalizing, press the button again, and it emails exactly that person.
- People who withdrew, and people who never confirmed their email, are not contacted.
Finalizing also closes registration for the season, and a closing date still sitting in the future will not re-open it.
Withdrawals
Every registrant gets a link that shows where their registration stands and lets them withdraw before your deadline. The deadline is recorded when they sign up, so changing your policy later never traps somebody who registered under different terms. After the deadline, the page tells them to speak to the league secretary.
Setting the season up in your league software
Your league software almost certainly cannot import a roster with its teams intact, so somebody retypes it once a season. PinPortal gives you that list in the two shapes the job wants.
Printable roster is the sheet to work from at the keyboard: one block per team, the captain first, a box to tick as each bowler goes in, and the entering average your software asks for when a bowler is added. Bowlers not yet on a team are listed at the end, because they are a decision to make rather than a name to type.
Download CSV gives the same list in the same order for a spreadsheet.
Both are on the registration panel and follow whichever season you have selected. Email addresses and phone numbers appear only for users who can manage the whole site, so a sheet handed to a secretary carries the roster without the personal details.
Who can do what
Reviewing registrations, building teams and finalizing all need the manage registrations permission, which can be limited to particular leagues. Setting dues prices is a separate permission, so a league secretary can run signups without being able to change what anybody is charged. See Roles and permissions for the full list.
Emails
Registration sends four kinds of message: the six-digit confirmation code, an acknowledgement that tells the bowler a second email follows once teams are set, a note to you when a registration arrives, and the outcome at finalize.
All of them depend on your site being able to send email that arrives. If your domain has no SPF or DKIM records, Gmail in particular will discard the messages without a bounce. The dashboard checks this for you and says so if there is a problem.
