Skip to main content

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

  1. Log in and confirm access
  2. Configure organization settings
  3. Configure front desk settings
  4. Invite admin users
  5. Understand data import concepts
  6. Choose or create an import format
  7. Prepare and run your first import job
  8. Review import results
  9. 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

In the admin sidebar, under Club Administration, click 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 0 to 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

In the sidebar under Club Administration, click 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:

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

In the admin sidebar under DATA, click Import Data. Then click Formats in the top-right button.

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.

  1. Click New Format
  2. Enter a Format Name (e.g. "Maple Club 2025 Export")
  3. Enter an optional Description
  4. 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 TRUE as 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.

  1. 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/1985 or Mon, 15 Jun 1985)

Submitting the Job

  1. In the sidebar under DATA, click Import Data
  2. Click New Job
  3. From the Data Import Format dropdown, select your format (Global or Custom)
  4. Upload your CSV or XLSX file
  5. Click Add Job to Queue

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:

  1. In the sidebar, click Families
  2. Click Send Initial Welcome Email
  3. Confirm the action

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:

  1. Deactivate ALL Members — marks all members as inactive. Their ID cards stop working.
  2. Reset ALL Welcome Emails — clears welcome email sent flags so emails go out fresh this season.
  3. Cleanup Families — resets family data to prepare for new imports or registrations.
  4. (Optional) Deactivate ALL Bands — revokes all swim band passes. Do this if your club requires members to re-take band tests each season.
  5. (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.
  6. Update the Guest Visit Count Start Date to the first day of the new season.
  7. Re-import member data using a new import job.
  8. 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
Email Email
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
Email Email
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
Email 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