Introduction
In Perfect Gym, Class Categories are the foundation of your schedule structure. They determine how classes are displayed, booked, paid for, and limited within the system. This feature allows you to group different types of activities (such as “Yoga” or “Personal Training”) and apply rules to them, including cancellation policies or booking limits.
In this article, you will learn how to create, configure, and manage Class Categories, including setting up booking limits and assigning related products.
This article will be helpful for System Administrators and Club Managers.
Before you start
Access to Class categories is found in System Permissions
Go to PGM -> Clubs -> Employees -> Employee Permissions, under the employee role find access to class categories by search for it by its name, or go to System administration -> Time tables -> Class categories
To view the grid:
SystemManTimeTablesCategoriesViewTo add a category:
SystemManTimeTablesCategoriesAddTo edit or manage product relations:
SystemManTimeTablesCategoriesEditTo delete a category:
SystemManTimeTablesCategoriesDelete
Feature Description
To access the configuration screen, navigate to PGM -> Classes -> Class categories. This screen displays a list of all existing class categories along with their descriptions and assigned product status.
Main Screen
Add class category: Create a new class category.
Name: The display name for the category as it will appear in the timetable and reports.
Example: "Yoga Classes" or "Personal Training".
Description: A text area to provide details about the category. This field has a maximum limit of 500 characters.
Example: "Standard Hatha and Vinyasa flow sessions included in the membership."
- Related Products: A list of all products which can be used with this class category.
- Example: "Group Fitness │ Standard │ Single Pass"
- Edit: After pressing … you can press Edit to edit the current class category.
- Delete: After pressing … you can delete the class category, this can only be done if there are no connecting classes or enrolment rules.
Add/Edit Class Category
Name: The display name for the category as it will appear in the timetable and reports.
Example: "Yoga Classes" or "Personal Training".
Description: A text area to provide details about the category. This field has a maximum limit of 500 characters.
Example: "Standard Hatha and Vinyasa flow sessions included in the membership."
Classes are additionally paid: A checkbox that, when selected, indicates that booking a class in this category requires a specific product or payment. This enables the payment and cancellation settings below.
Example: Checked for "Premium Workshops" that cost extra.
Contract payment: (Visible only if Classes are additionally paid is checked) Determines how the contract handles payments for these classes.
Select "InAdvance" to set the due date to the previous recurring billing date.
Select "InArrears" to set the due date to the next billing date.
Select "OnBookingDate" to set the payment due date to the class date.
Cancellation rule: (Visible only if Classes are additionally paid is checked) Defines the refund policy if a user cancels a booking. Options typically include Full Refund or specific logic like Make Up Product.
Select "No Refund" will leave the transaction on the club members profile.
Select "Full Refund" will delete the charge transaction line from the club member profile.
Select “Make up product“ will leave the transaction on the club members profile and add a new sale for a make up product to be used at another time.
Make up product: (Visible only if Classes are additionally paid is checked AND Cancellation rule is set to "MakeUpProduct") Allows you to select a specific product that is returned to the user to be used for a future booking.
Example: Selecting "Yoga Pass Return" so the user gets a credit back.
Custom booking limits: A checkbox that overrides the global system settings for booking limits.
Example: Checked when you want to restrict high-demand classes more strictly than general gym visits.
Total class limit: (Visible only if Custom booking limits is checked) The maximum total number of active bookings a user can have for this category.
Example: "5" prevents a user from holding more than 5 reservations at once.
Recurring classes booking limit: (Visible only if Custom booking limits is checked) Determines the limit of recurring booking definitions per user.
Example: "1" allows a user to have only one ongoing weekly reservation.
Daily class booking limit: (Visible only if Custom booking limits is checked) Determines the limit of bookings a user can make within a single day for this category.
Example: "2" prevents a user from booking 3 classes in one day.
Configuration Settings
Creating or Editing a Class Category
Navigate to the Class booking rules page.
To create a new category, click the Add category button in the top right corner.
To edit an existing category, locate the category in the list, click the drop-down icon (drops) in the action column, and select Edit.
In the Name field, enter a unique name for the category.
(Optional) Enter a Description. Ensure the text does not exceed 500 characters.
If the class requires specific payment or products, check the Classes are additionally paid box.
Select the appropriate Contract payment method.
Select the Cancellation rule. If you select "Make Up Product," search for and select the Make up product in the field that appears.
If you wish to override global booking limits, check Custom booking limits.
Enter integers (minimum 1) for Total class limit, Recurring classes booking limit, and Daily class booking limit.
Click the Save button to confirm your changes.
Assigning Related Products
This process links purchasable products to the class category, allowing users to book these classes using those specific products.
On the Class booking rules grid, locate the desired category.
Click the drop-down icon (drops) and select Related products.
To Assign a Product:
Use the search bar labeled Find and assign product to search for a product by name.
In the search results list, click the Assign button next to the desired product.
The system will notify you that the product has been successfully assigned.
To Unassign a Product:
Scroll down to the list of currently related products.
Click the Remove (trash icon) button next to the product you wish to unlink.
Click Close when finished.
Deleting a Class Category
On the Class booking rules grid, locate the category you wish to remove.
Click the drop-down icon (drops) and select Delete.
A confirmation prompt will appear asking, "Do you want to delete this category?".
Click Confirm (or the equivalent affirmative action) to proceed.
Hints
Delete Pre-Requisite: A Class Category cannot be deleted if it is currently assigned to one or more active TimeTable entries.
Delete Process: To delete a category, select Delete from the row's overflow menu, and then confirm in the pop-up by clicking the Confirm Delete button.
System Response (Success): The notification "Successfully deleted category" will appear, and the grid will automatically refresh.
Search and Assign: Assigning products to the category refreshes both the Assigned Products list and the Available Products search list simultaneously.
Product Relation Title: The product management modal clearly states the category you are managing in the header: Products related to {Category Name}.
Validation Errors: If the Description exceeds 500 characters, the system will display an error: "Input is too large (max 500 chars)."
Deletion Restrictions: You cannot delete a Class Category if it is currently assigned to any existing TimeTable (schedule). If you attempt to do so, you will receive an error message: "Category that is assigned to TimeTable cannot be marked as deleted." You must first remove the category from all schedule items.
Required Fields: When "Classes are additionally paid" is enabled, the Contract Payment and Cancellation Logic fields become mandatory.
Visual Indicators: The main grid displays a "Related products" column. If products are assigned, it will show the name of the first product. If multiple are assigned, it will indicate "X more products."
Troubleshooting
Problem: Unable to delete a Class Category
Error Message: "Category that is assigned to TimeTable cannot be marked as deleted".
Cause: The category you are trying to delete is currently linked to an active TimeTable (schedule) entry. The system prevents deletion to strictly maintain data integrity.
Solution: Navigate to the TimeTable module and remove or reassign all classes currently using this category. Once the category is no longer in use, retry the deletion process.
Problem: Error message "Input is too large" when saving
Error Message: "Input is too large (max 500 chars)".
Cause: The text entered in the Description field exceeds the maximum limit of 500 characters.
Solution: Edit the description to be more concise and ensure it is under the character limit before saving again.
Problem: "Add category" or "Edit" buttons are missing
Cause: Your user account lacks the specific system permissions required to perform these actions. The Add category button requires
SystemManTimeTablesCategoriesAdd, and the Edit button requiresSystemManTimeTablesCategoriesEdit.Solution: Contact your System Administrator to request the
SystemManager.TimeTablesModule.TimeTableCategoriespermissions.
Problem: A specific product does not appear in the "Find and assign product" search
Cause: The product search filters out products that are deleted, already assigned to the current category, or do not have the "Booking Event" service type.
Solution: Verify in the Products module that the product is active (not deleted), has the correct service type, and is not already listed in the Related products table.
Problem: Cannot remove or edit a Related Product
Cause: The Remove (trash icon) and Edit buttons in the Related Products grid are hidden if you do not have the specific
SystemManager.Products.Editpermission.Solution: Ensure your user role includes the "Products Edit" permission.
Use Case Examples
Example 1: Standard Free Class
Goal: Create a category for general gym classes included in all memberships with standard system limits.
Settings:
Name: "General Group Fitness"
Classes are additionally paid: Unchecked.
Custom booking limits: Unchecked.
Example 2: Paid Workshop with No Refunds
Goal: Create a category for a one-time paid workshop where no refunds are given for cancellation.
Settings:
Name: "Advanced Lifting Workshop"
Classes are additionally paid: Checked.
Cancellation rule: No Refund (or equivalent specific logic configured in your system).
Custom booking limits: Unchecked.
Example 3: High-Demand Class with Strict Limits
Goal: Create a "Peak Hour Spin" category where users can only book one class per day to ensure fairness.
Settings:
Name: "Peak Hour Spin"
Custom booking limits: Checked.
Daily class booking limit: 1.
Total class limit: 3 (Users can only have 3 active bookings at a time).
Example 4: Class with Make-Up Token Logic
Goal: Configure a class where cancelling results in the user getting a "Make-Up Pass" product back.
Settings:
Name: "Kids Swim School"
Classes are additionally paid: Checked.
Cancellation rule: MakeUpProduct.
Make up product: "Swim School Make-Up Token".
Example 5: Assigning a Drop-In Pass
Goal: Allow users to book a "Yoga" category class using a "Single Entry Yoga Pass".
Steps:
Open Related products for the "Yoga" category.
Search for "Single Entry Yoga Pass".
Click Assign.