Setting Up a New Club in PoolMMS (Non-CRM)
This guide walks through everything needed to take a brand-new, empty PoolMMS organization and get it ready for its first season — from configuring basic settings to importing member data.
Overview: The Setup Checklist
- Log in and confirm access
- Configure organization settings
- Configure front desk settings
- Invite admin users
- Understand data import concepts
- Choose or create an import format
- Prepare and run your first import job
- Review import results
- Send welcome emails
1. Log In and Confirm Access
Go to https://poolmms.com/gohome and log in with your admin account.
If your account is associated with multiple organizations, you will be prompted to select one. Make sure you select the correct club before proceeding.
You should land on the Admin Dashboard, which displays a dark sidebar on the left. If you do not see the sidebar or see only a "Back" button, your account does not have Admin access — contact support.
2. Configure Organization Settings
Note: The section label matches your organization type — it may say "Association Administration" or similar instead of "Club Administration."
Fill in or confirm the following fields and click Save Changes:
| Field | Description |
|---|---|
| Name | Your club's full display name |
| Slug | The short URL identifier for your club (e.g. maplecsc). Warning: changing this changes all URLs for your organization. Set it once and leave it. |
| Contact Email | Admin contact email address |
| Address | Club's mailing address |
| Zip Code | Used for timezone and other location-aware features |
| Website | Optional public website URL |
| Primary / Secondary Color | Used for ID card and member portal branding |
| Logo | Upload a square image for branding |
3. Configure Front Desk Settings
Still on the Settings page, scroll down to the Front Desk Settings section.
Flag Age
Set Flag Age to the minimum age at which members are permitted to enter without adult supervision. Members younger than this will trigger a visual flag when they are scanned at the front desk.
- Example: if your pool allows members 12 and older in without an adult, set this to
12. - Set to
0to disable age flagging entirely.
Guest Pre-Registration
Check Allow Pre-Registration if you want guests to be able to pre-register themselves online before arriving at the pool. If enabled, guests can visit a public URL (shown on screen) to register ahead of time. They are still required to check in at the front desk on arrival.
Guest Visit Count Start Date
Set this to the first day of your new season. This controls the date from which the guest visit counter resets. Guest visits before this date will not count toward the current season's totals.
Click Save Changes when done.
4. Invite Admin Users
You will see a table of all users currently associated with your organization. For a brand-new club, this will only show your own account.
Roles
PoolMMS has three roles:
| Role | Access |
|---|---|
| User | Basic member portal access only. Cannot access the admin panel. |
| Front Desk | Access to the Front Desk panel (sign-ins, band tests, guest management). Cannot access the full admin panel. |
| Admin | Full access to everything, including all settings, member data, import, and reports. |
Inviting a New User
Click Invite User. This page generates a personalized invitation link and a pre-filled email template you can send to the person you want to add.
The invitee must:
- Click the link in the invitation
- Create a PoolMMS account (or log in to an existing one)
- Affiliate their account with your organization
Once they have affiliated, return to Users, find their name, click Edit, and assign them the appropriate role.
Important: Always check the Users page after a new club is created to make sure only authorized people have access.
5. Understand Data Import Concepts
Before importing any data, it is important to understand how PoolMMS organizes member records and what the import process actually does.
Members and Families
In PoolMMS, every Member belongs to a Family. A family is a grouping of one or more members who share the same email address. When you import a member, PoolMMS will automatically find or create the appropriate family based on the member's email address.
You do not import families separately — they are created automatically.
Externally Managed vs. CRM Managed
Members in a non-CRM club are externally managed. This means their data originates from a source outside of PoolMMS — typically TeamUnify, GoMotion, or a spreadsheet — and is brought in via a data import job.
Externally managed members do not require a PoolMMS user account to access the member portal. Admins can view their member portal page directly from the admin panel.
The External Identifier — The Most Important Field
Every externally managed member must have a unique External Identifier. This is the field PoolMMS uses to:
- Determine whether an imported row should create a new member or update an existing one
- Link a member record to their source system across future imports
If the external identifier is wrong or missing, your import will fail or create duplicate members.
When you run an import, PoolMMS looks up each row's external identifier. If a member with that identifier already exists in your organization, their record is updated. If no match is found, a new member is created. This is how re-importing works cleanly at the start of each season.
External Identifiers by Source System
This is where things get complicated, especially for swim clubs coming from TeamUnify or GoMotion.
TeamUnify:
TeamUnify has two different identifiers that look similar but are not the same thing:
| TeamUnify Field Name | What It Is | Use as External ID? |
|---|---|---|
| Swimmer Identity ID | A globally unique ID generated by TeamUnify for every swimmer. | ✅ Yes — use this one |
| ID Card # (or Member ID) | An ID assigned locally by your club, often sequential. Example: 42 |
❌ No — not globally unique |
When exporting from TeamUnify's BackOffice, select Swimmer Identity ID as the field to include in your export, and map it to the External Identifier column in your PoolMMS import format.
How the Swimmer Identity ID is generated — and why accuracy matters
The Swimmer Identity ID is not a random number. TeamUnify generates it from a combination of the swimmer's date of birth, first three letters of their first name, middle initial, and last four letters of their last name. For example, a swimmer named Jane A. Smith born on June 15, 1985 would get an ID derived from 850615JANSMITH (format varies slightly by version).
Because the ID is derived from the member's personal data in TeamUnify, the data in TeamUnify must be correct before the ID is generated. If a swimmer's name or date of birth was entered incorrectly in TeamUnify — a typo, a nickname instead of a legal name, a wrong birthday — the Swimmer Identity ID generated from that record will be wrong. If that incorrect ID is then imported into PoolMMS as the external identifier, and the data is later corrected in TeamUnify, the two IDs no longer match. PoolMMS will treat the corrected record as a brand-new member, rather than updating the existing one, and the member will appear twice — or not at all if the old record was deactivated.
Before running your first import, verify with the club's TeamUnify administrator that all member names and dates of birth are entered correctly, and that a Swimmer Identity ID has been generated for every active member. Members without a Swimmer Identity ID cannot be imported.
GoMotion (alternate version of TeamUnify):
GoMotion uses a different field name for the same concept:
| GoMotion Field Name | What It Is | Use as External ID? |
|---|---|---|
| ID Card # | In GoMotion, this field is the globally unique swimmer identifier — equivalent to TeamUnify's Swimmer Identity ID | ✅ Yes — use this one |
This is confusing: TeamUnify's "ID Card #" is a local club ID and should not be used. GoMotion's "ID Card #" is the globally unique identifier and should be used. The fields have the same name but mean different things depending on the platform. The same data accuracy concerns apply — GoMotion also generates its ID from member personal data, so incorrect names or birthdates in GoMotion will produce an ID that may not match PoolMMS records on future imports.
Other systems / spreadsheets:
If your club is not coming from TeamUnify or GoMotion, you need to choose a column from your data that:
- Is unique per member (no two members share the same value)
- Will remain stable across future imports (so existing members can be found and updated)
Good choices: a membership number, a national registry ID, or a combination of fields you concatenate before importing.
Bad choices: row numbers, names (not unique), or any value that changes year to year.
6. Choose or Create an Import Format
You will see a list of all available import formats. Formats are either:
- Global — built-in formats provided by PoolMMS, available to all organizations (e.g. TeamUnify, GoMotion). These cannot be edited, but you can click Docs to read about them.
- Custom — formats you create yourself, specific to your organization.
Using a Global Format
PoolMMS provides some built-in global formats. Check the Formats list and click Docs on any global format to see what column layout it expects.
For TeamUnify and GoMotion, because the export column order depends on what fields you select in their export dialog, you will almost always need a custom format — unless your export exactly matches an existing global format's layout. When in doubt, create a custom format.
Creating a Custom Import Format
If your data comes from TeamUnify, GoMotion, or any other system, create a custom format mapped to your actual export column order.
- Click New Format
- Enter a Format Name (e.g. "Maple Club 2025 Export")
- Enter an optional Description
- In the Configure Format table, enter the zero-indexed column number for each field
Understanding Zero-Indexed Column Numbers
Columns are numbered starting from 0, not 1. For a spreadsheet with these columns:
Col A Col B Col C Col D Col E Col F Col G
Last First Email Phone DOB MemberID Status
0 1 2 3 4 5 6
You would enter:
- First Name →
1 - Last Name →
0 - Email →
2 - Phone →
3 - External Identifier →
5 - Date of Birth →
4 - Member Type → enter a fixed text value like
Member(not a column number) if all members have the same type - Active → enter
TRUEas a fixed value if all imported members should be active
Override Values
For any field, if you enter text instead of a number, PoolMMS will use that text as a fixed value for every row. For example:
- Member Type
→ Member— every imported member gets type "Member" - Active
→ TRUE— every imported member is set to active - Phone
→ (blank)— phone is left empty for all members
Column Format (Header Validation)
The Column Format field at the bottom is optional but recommended. Enter the exact header row of your spreadsheet, with column names separated by , (comma-space). Example:
Last Name, First Name, Email, Phone Number, Date of Birth, Member ID, Active
If provided, PoolMMS will validate the first row of your uploaded file against this format before processing any data. If the headers don't match exactly, the job will fail immediately with a clear error rather than silently importing wrong data.
- Click Save to save your format
7. Prepare and Run Your First Import Job
Preparing Your Spreadsheet
Your file must be a CSV or XLSX file. Before uploading:
- Remove any rows that should not be imported (e.g. inactive members from prior seasons, test records)
- Ensure the External Identifier column has a value for every row — blank identifiers will cause row-level errors
- If using a Global format, make sure your column order matches what the format expects
- If using a Custom format with header validation, confirm your header row matches exactly what you entered in the Column Format field
- Dates of birth must be in MM/DD/YYYY format or Day, DD Mon YYYY format (e.g.
06/15/1985orMon, 15 Jun 1985)
Submitting the Job
The job is now queued. You will be returned to the Import Data page where you can see the job's status.
8. Review Import Results
Jobs process in the background. Refresh the page to see updated status. Statuses are:
| Status | Meaning |
|---|---|
| Waiting | Job is queued and has not started yet |
| Running | Job is actively processing — do not re-submit |
| Complete | All rows were processed. May still contain row-level errors. |
| Complete (with errors) | The job finished but some rows had non-fatal errors. Successfully valid rows were still imported. |
| Failed | The job failed entirely. No data was imported. This is usually caused by a header mismatch or a file format problem. |
Click View on any job to see its details.
Reading the Error Panel
If a job shows errors, the error panel on the job detail page lists each issue with a type and message:
Total failure errors — the entire job stopped. No data was imported. Common causes:
- "First line of spreadsheet is not valid" — your header row does not match the Column Format you defined. Check spacing, capitalization, and column count.
- File format issues — make sure you are uploading CSV or XLSX, not XLS or ODS.
Row failure errors — individual rows were skipped, but other rows were processed. Common causes:
- "External Identifier cannot be blank" — a row is missing its external ID. Find the row in your spreadsheet, add the identifier, and re-run.
- "[Field] cannot be blank" — a required field is empty on a specific row.
- "Email is invalid" — the email address on a row failed validation. PoolMMS validates that emails have real MX records and are not disposable addresses.
Viewing the Job Log
Click Show Log on the job detail page to see a detailed line-by-line log of every row processed. The log does not auto-refresh — click Click to Refresh to update it. This is useful for diagnosing exactly which rows failed and why.
Re-Running an Import
If you need to fix errors and re-import:
- For total failures: fix the file or format and create a new job
- For row failures: fix only the problem rows in your spreadsheet, then re-upload. PoolMMS will match existing members by their external identifier and update them, and create new records only for rows not previously imported.
You do not need to de-duplicate between runs. Re-importing the same member (same external identifier) simply updates their record.
9. Send Welcome Emails
Once members are imported and you are ready for the season:
This sends the PoolMMS welcome email to every active family that has not yet received one. The email contains instructions for the family to access their member portal and ID cards.
To send the welcome email to a single family, find them in the Families list, click View, and use the Send / Resend link on their row.
The welcome email status for all families can be reset at the start of each season via Settings → End/Start of Season Actions → Reset ALL Welcome Emails.
Appendix: Season Changeover Reference
For returning clubs setting up for a new season, run these actions in order from Settings → End/Start of Season Actions:
- Deactivate ALL Members — marks all members as inactive. Their ID cards stop working.
- Reset ALL Welcome Emails — clears welcome email sent flags so emails go out fresh this season.
- Cleanup Families — resets family data to prepare for new imports or registrations.
- (Optional) Deactivate ALL Bands — revokes all swim band passes. Do this if your club requires members to re-take band tests each season.
- (Optional) Delete ALL Front Desk Family Notes — only do this if you use family notes exclusively for tracking guest passes or something else that resets each year. This action is permanent and cannot be undone.
- Update the Guest Visit Count Start Date to the first day of the new season.
- Re-import member data using a new import job.
- Send welcome emails.
Each action must complete before the next one can be started. While an action is running, the buttons are disabled and a link to the log is shown.
Appendix: Common Import Format Mapping Examples
TeamUnify Export
TeamUnify's export dialog lets you choose which fields to include and in what order — there is no fixed column layout. When building your custom import format in PoolMMS, the column numbers you enter must match the order you selected fields in the TeamUnify export dialog.
The fields you need to export, at minimum, are:
| TeamUnify Field | Map to PoolMMS Field |
|---|---|
| Member First Name | First Name |
| Member Last Name | Last Name |
| Birthday | Date of Birth |
| Swimmer Identity ID | External Identifier |
| Billing Group | Member Type (optional — or use a fixed override) |
| Phone | Phone (optional) |
Export these fields in your preferred order, note the column positions (starting from 0), and enter those numbers in your custom format. If you always export in the same order, you can save that as your reusable format.
GoMotion Export
GoMotion exports work the same way — field order is determined by what you select in the export dialog. Use the same field list as above, substituting ID Card # for Swimmer Identity ID as the External Identifier.
| GoMotion Field | Map to PoolMMS Field |
|---|---|
| Member First Name | First Name |
| Member Last Name | Last Name |
| Birthday | Date of Birth |
| ID Card # | External Identifier |
| Billing Group | Member Type (optional) |
| Phone | Phone (optional) |
Generic Spreadsheet Example
If your data looks like this:
First, Last, Email, Phone, MemberNumber, DOB, MemberType
Jane, Smith, jane@example.com, 555-1234, M-00042, 06/15/1985, Adult
Your custom format mapping would be:
| Field | Value |
|---|---|
| First Name | 0 |
| Last Name | 1 |
2 |
|
| Phone | 3 |
| External Identifier | 4 |
| Date of Birth | 5 |
| Member Type | 6 |
| Active | TRUE (fixed override — all imported members are active) |
| Column Format | First, Last, Email, Phone, MemberNumber, DOB, MemberType |
For support, contact support@poolmms.com