What This Screen Does
This is where you create a new personal training membership type. Think of it like designing a package that you will offer to members who want personal training sessions. You define the name, price, billing frequency, which gyms can sell it, and what classes or facilities members get access to. Once saved, the membership type becomes available for purchase by members (if set to public).
How to Get There
Open the dashboard.
In the left-hand menu, click Personal Training Type.
Click the + New Personal Training Type button in the top-right corner.
You are now on the Create Personal Training Type screen.
Step-by-Step Guide
1. Fill In Basic Information
This section covers the essentials — the name, descriptions, cover image, and contract.
Field | Required | What to Enter |
Name | Yes | The display name for this personal training type. This is what members will see. |
Short Description | No | A brief summary shown alongside the name in lists and cards. You can write up to a few sentences. |
Cover Image | Yes | Upload one image (JPEG, PNG, or GIF) that represents this membership. It will be cropped to a 4:3 ratio. |
Description | Yes | A full, detailed description of what this personal training type includes. Use the rich-text editor to add formatting, links, or lists. |
Contract | Yes | Pick the legal contract template that members must agree to when purchasing. Select one from the dropdown. |
2. Configure Properties
Properties control how the membership behaves — billing, access, and identifiers.
Field | Required | What to Enter |
Frequency | Yes | How often members are billed. Options include Monthly, Weekly, BiWeekly, OneTime, DropIn, and others. |
Product Code | No | An internal product code for your own records and reporting. |
Product SKU | No | A Stock Keeping Unit identifier, useful if you track inventory. |
Number of Clips | No | How many training sessions this package includes. Leave empty for unlimited. |
Number of Seats | No | The maximum number of members who can hold this membership type at the same time. Leave empty for unlimited. |
Account Number for Bookkeeping | No | An account number used when exporting financial data to your accounting system. |
Publicly Available | No | Toggle on to make this membership visible in your online store and member portal. On by default. |
Has Access to Door System | No | Toggle on to let members with this membership unlock doors via the access control system. On by default. |
Limit Training Hours | No | Toggle on to restrict when members can access the facility. Only available on Premium or Platinum plans. See the Training Hours section below. |
Allows Training in All Gyms | No | Toggle on to let members train at any gym location in your chain, not just where they signed up. Off by default. |
Counts Towards Global Limit | No | If your system has a maximum number of active memberships, toggle this to include this type in that count. On by default. Only visible if a global limit is configured. |
Anchor Renewal to 1st of Month | No | Align all renewals to the first day of each month, regardless of when the member purchased. Only visible for certain billing frequencies (e.g. Monthly). May be locked if your gym already enforces this globally. |
Limit Lock Access | No | Toggle on to restrict which specific doors/locks members can open. Only visible if your system has locks configured. |
Lock ID | Conditional | If Limit Lock Access is on, select one or more locks from the dropdown. Required when limit lock access is enabled. |
3. Set Up Training Access
This section controls how members book classes.
Field | Required | What to Enter |
Maximum Number of Active Bookings | No | How many upcoming classes a member can be registered for at the same time. Leave empty for no limit. |
Maximum Number of Bookings | No | Total number of classes a member can book within the selected period. Leave empty for no limit. |
Training Limit Period | Conditional | If you entered a maximum number of bookings, choose the period: Monthly, Weekly, etc. Defaults to Monthly. |
Allowed Classes | No | Select which class types members can book. Leave empty to allow access to all classes. |
4. Configure Training Hours (optional)
This section only appears if you toggled Limit Training Hours on in the Properties section.
By default, the system uses your gym’s regular opening hours.
To set custom training hours, each row represents a time window on a specific day.
For each row, choose:
Field | Required | What to Enter |
Day of Week | Yes | The day this time window applies to (Monday–Sunday). |
Open | Yes | The start time (24-hour format). |
Closed | Yes | The end time (24-hour format). |
Click Add opening hour to add more time windows (for example, different hours on weekdays vs weekends).
Click the red X button next to a row to remove it.
5. Set Up Communication Emails
Choose which automated emails members receive at key moments.
Field | Required | What to Enter |
Welcome Email | Yes | The email template sent when a member purchases this membership. Only templates of type “Welcome Email” appear here. |
Cancellation Email | No | The email template sent when a member cancels. Only templates of type “Cancellation” appear here. |
On Hold Email | No | The email template sent when a membership is put on hold. Only templates of type “Put on Hold” appear here. |
6. Set Pricing
Define the cost and availability of this membership type.
Field | Required | What to Enter |
Regular Price | Yes | The recurring price members pay based on the billing frequency. Enter a number (e.g. 299.00). The currency symbol is based on your chain’s default currency. |
VAT Rate | Yes | Select the tax rate that applies to this membership. Choose from the predefined rates in your system. |
Setup Fee | No | Toggle on to charge a one-time fee when a member first purchases. On by default. |
Setup Fee Amount | Conditional | If setup fee is enabled, enter the one-time amount. The VAT is based on your global chain settings. Defaults to your chain’s configured setup fee amount. |
Available in Gyms | Yes | Select which gym locations can sell this membership type. At least one gym must be selected. Defaults to your currently selected gym. |
Can Be Purchased From | Yes | The first date this membership type becomes available for purchase. Pick a date from the date picker. |
Can Be Purchased Until | No | The last date this membership type can be purchased. Leave empty if there is no end date. Must be later than the “purchased from” date. |
7. Save
Click the Create button at the bottom-right of the form.
The system will:
Validate all your inputs.
Create the personal training type record.
Upload the cover image.
Redirect you to the previous page.
You will see a green “Create success!” notification at the bottom of the screen.
What Happens Behind the Scenes
You click "Create"
|
v
Form validates all fields (Yup schema)
|
v
API call: PersonalTrainingTypesService.create({ body: formData })
|
v
Personal training type record is created, server returns the new ID
|
v
API call: PersonalTrainingTypesService.addCoverImage({ id, files: [coverImage] })
|
v
Cover image is uploaded and attached to the new type
|
v
Success notification appears ("Create success!")
|
v
You are redirected back to the previous page
Troubleshooting
“I filled everything in but the Create button does not work”
Double-check that all required fields are filled. The form will not submit if anything is missing.
Look for small red error messages below the fields — they tell you exactly what is wrong.
Make sure the price is greater than 0.00.
Make sure you have selected at least one gym in the “Available in gyms” field.
Make sure a contract and welcome email template are selected.
“I do not see any contracts in the dropdown”
Contracts are loaded when the page opens. If the list is empty, try refreshing the page.
If no contracts exist in the system, you need to create one first under the Contracts section before you can create a personal training type.
“I do not see any email templates to choose from”
Email templates are filtered by type. The welcome email dropdown only shows templates marked as “Welcome Email,” the cancellation dropdown only shows “Cancellation” templates, and so on.
If a dropdown is empty, it means no template of that type has been created yet. Go to Email Templates and create the appropriate template first.
“The ‘Can be purchased until’ date shows an error”
The end date must be later than the start date (“Can be purchased from”).
If you do not need an end date, leave this field empty — the membership will remain available indefinitely.
“I do not see the ‘Limit training hours’ toggle”
This feature is only available on Premium or Platinum subscription plans.
If your chain is on a lower plan, this option will not appear. Contact your account manager to upgrade if you need this feature.
“I do not see any gyms in the ‘Available in gyms’ field”
You must have at least one gym/location set up in the system.
If you are new to the platform, set up a gym first under Gym settings.
“My cover image did not upload”
The image must be a JPEG, PNG, or GIF.
It must not exceed the maximum file size allowed by the system.
If the personal training type was created but the image failed, go to the type’s edit screen and upload it again.
“I cannot find the ‘Anchor renewal to 1st of month’ toggle”
This toggle only appears for certain billing frequencies such as Monthly, Quarterly, or Yearly.
It is hidden for frequencies like Weekly, BiWeekly, TriWeekly, EveryFourthWeek, OneTime, DropIn, and Never.
If your gym already enforces first-of-month renewal globally, the toggle will be visible but disabled (already turned on).
“I toggled ‘Limit Lock Access’ but I do not see any locks to select”
Locks must be configured in your system first. If no locks are set up, the lock selection dropdown will show “No locks found.”
Contact your administrator to set up door locks in the system before using this feature.
“I got an error after clicking Create”
A red error message will appear. Read it carefully — it usually tells you what went wrong.
Common causes: missing required fields, server timeout, or a duplicate name.
If the error is unclear, try again. If it keeps happening, contact support with the error message.
