First-run setup¶
Activation creates the tables and nothing else. This is the order to configure the plugin in — it is not arbitrary. Email has to work before you send a season's approval links; squads have to exist before an import can put anyone in one; the season has to exist before you can register anybody for it. Doing these in a different order mostly means doing them twice.
Allow an hour for the whole run, plus however long the club takes to decide its fees.
1. Decide who gets in¶
Club Management → Settings → Club Admins
Any WordPress administrator is already a club admin. Add anyone else who needs the full plugin — they must have a WordPress account first; this screen grants access to an existing account, it does not create one.
Team secretaries are not added here. They are set per squad, in step 4.
Who can see what · Club Admins
2. Make email work¶
Club Management → Settings → Email sending
This is the step most worth getting right first, because almost everything the plugin does ends in an email.
- Choose how mail leaves the site — Default WordPress mail if the site already has working transactional email, or Elastic Email API if you want HTTPS sending that survives a host blocking SMTP.
- Set From Email to an address your provider will genuinely send as, and From Name to the club's name. Nothing sends until From Email is set.
- Turn on Logging only mode while you are still setting up. Every email is recorded but redirected to one test address, so a misconfigured season cannot mail three hundred parents.
- Save, then use Send test email. Save first — the test uses the stored settings, not what is on screen.
If you chose Elastic Email, paste the delivery feedback webhook URL shown on the settings page into Elastic Email under Settings → Notifications, and enable Bounce/Error and Complaints. Bounces then show up in the email log and as an Undelivered warning against the season registration rows they affect — which is how you find the parent whose address is wrong before you conclude they are ignoring you.
Turn logging-only mode off before the real send
It is the single easiest thing to forget. The Email Log will happily show a full season's worth of approval emails as sent-but-logged while no parent has received one.
Email sending · Email defaults · Email Log
3. Read the automatic emails¶
Club Management → Edit Emails
Nine emails go out on their own — waiting-list notifications, photography permission, the season approval request, the season confirmation, payment reminders, the Direct Debit mandate email and the club's own registration-paid alert. They ship with sensible wording that is not your club's wording.
Read them once now, in the club's voice, before any of them fires. Each lists the placeholders it accepts. Two of them are switched off by leaving an address blank: the no suitable squad alert and the registration paid alert.
4. Create the season and the squads¶
Club Management → Seasons, then Club Management → Squads
Create the season first and set it active — an active season is what the registration form, the payments screens and most of the reporting assume.
Then create a squad per date-of-birth cohort. For each one set:
- the date-of-birth range it covers, which is what matches waiting-list sign-ups to a squad and what the import uses to place a child;
- the squad type (Mixed or Girls);
- the team secretary email — the WordPress account with that address gains access to that squad and nothing else.
If a squad's fees differ from the club default, you can leave that until step 7.
Creating a season · The active season · Date-of-birth ranges · Team secretary
5. Get the players in¶
Three ways in, and most clubs use all three eventually:
- Import the FA Club Player Report — the bulk route. Export it from Whole Game System and import it. Players are keyed on FA Number, so a re-import updates rather than duplicates.
- The waiting list — a public sign-up converts into a player in one click.
- By hand — for the child who turns up before the FA report catches up. Team secretaries can do this for their own squads.
Run the import once and then look at two screens before going further: whatever the import could not place confidently, and Find duplicates. Merging two records is easy now and unpleasant after they have separate payment histories.
Importing players · When the import can't be sure · Find duplicates · Merging
6. Check the guardians¶
Club Management → Guardians
The import builds guardians from the FA report. Two things are worth a pass now:
- Email addresses, because they are what every approval and payment link travels down.
- The payment contact, where a child has more than one guardian — it decides who gets a Direct Debit setup link the club sends. A guardian who sets the payment up themselves from the registration page pays as themselves, whoever is flagged.
Guardians · The payment contact
7. Set up payments (optional)¶
Club Management → Payments → Settings, then Payments → Products
Skip this whole step if the club takes money some other way — you can still record offline payments against a player.
- Connect GoCardless and confirm the connection from the settings screen. Start in sandbox.
- Give GoCardless the webhook URL the settings page shows. Without it the plugin never hears that a payment cleared, and every player sits at "awaiting bank" forever.
- Create the products: the registration fee, and anything else the club charges for. A product carries its own registration amount and instalment plan.
- Where one squad pays something different, add a squad override rather than a second product.
Move to live credentials only once a sandbox run has been through a full setup and confirmation.
Products · One squad paying something different · Configuration
8. Build the public pages¶
Create three ordinary WordPress pages and put one shortcode on each:
| Page | Shortcode | What it is for |
|---|---|---|
| Join the club | [cpm_signup_form] |
Public sign-up; lands on the waiting list |
| Confirm your place | [cpm_registration_form] |
Where the season approval email sends parents |
| Lost your link? | [cpm_registration_request] |
Self-service replacement link |
Visit each one signed out, which is how a parent will see them. The registration page with no valid link should fall back to the request form rather than a dead end — that fallback is why it is worth the third page existing at all.
Public pages · Shortcode reference
9. Send the season's approval emails¶
Club Management → Seasons → the season
Now the order pays off. Each parent gets one private link covering all of their children, and the season page tracks who has confirmed, declined or not answered.
Before the real send: turn logging-only mode off (step 2), and send yourself one first if the plugin's own test send has not already convinced you.
Getting parents to confirm · The five statuses
10. Then it is a weekly rhythm¶
Once a season is running, the recurring work is small and lives on three screens:
- Waiting list — convert new sign-ups, and check nothing has sat pending for a fortnight.
- Payments — who has not set up, and chasing the setup links nobody used.
- Email Log — anything that bounced, which is usually a typo in an address.
Who has not set up · Chasing up setup links nobody used · Working through the list
Setup checklist¶
- Club admins added
- Email provider chosen, From Email and From Name set
- Test email received
- Delivery feedback webhook configured (Elastic Email only)
- Automatic emails read and reworded
- Season created and set active
- Squads created with date-of-birth ranges, types and team secretaries
- Players imported; unmatched rows and duplicates cleared
- Guardian emails and payment contacts checked
- GoCardless connected and webhook delivering (if using payments)
- Payment products and any squad overrides created
- Three public pages published and viewed signed out
- Logging-only mode turned off
- Season approval emails sent
Once the club is running, the User guide covers every screen in detail, and team secretaries have a shorter guide of their own.