Introduction
Custom attributes is a Perfect Gym feature that allows you to collect additional information about your customers beyond the usual details like name or email. This also allows for customization of club-specific information about members, memberships, and classes. By adding custom fields, you can include your own fields; for example, during the registration process, you can add fields for details such as parking slot numbers or members' emergency contacts. This helps you offer a better, more personalized experience for each member.
- This article describes how to configure custom attributes in Perfect Gym Manager
- This article will be helpful for PG Champions, Club Managers and Sales Managers
Feature Description
To access custom attributes, go to PGM->Settings->Custom attributes.
Overview
This section details all the configurable settings for creating and managing Custom Attributes. These are organized into Categories, which group related attributes, and Types, which define the individual attributes themselves.
Category Settings
Category Code: A unique, internal identifier for the attribute category.
Example:
ADDITIONAL_INFORMATION
Category Name: The display name for the group of attributes, visible to users.
Example:
Additional Member Details
Object Type: Specifies which system entity the category of attributes applies to (e.g., User, Club, Employee, Payment Plan, Contract, ClassType).
Example: To add fields to a user's profile, you would select
Useras the Object Type.Category Order: The display order of a category can be adjusted up or down in the list, controlling its precedence relative to other categories.
Example: Use the
menu-upandmenu-downarrows in the grid to move theADDITIONAL_INFORMATIONcategory above theEMERGENCY_CONTACTcategory.
Attribute Type Settings
Is Required: A checkbox that, when selected, makes filling out this attribute mandatory before a record can be saved.
Checking "Is Required" for a 'T-Shirt Size' attribute ensures it must be selected during member registration.
Code: A unique, internal identifier for the specific attribute.
Example:
TSHIRT_SIZEName: The user-friendly label for the attribute field that appears on screens.
Example:
T-Shirt SizeData Type: Defines the kind of data the attribute will store.
Example: Select
Dictionaryto provide a predefined list of choices,Textfor free-form input,Numberfor numeric values, orBooleanfor a simple Yes/No checkbox.Dictionary: If the Data Type is
Dictionary, this setting links the attribute to a predefined list of values.Example: The 'T-Shirt Size' attribute could be linked to a dictionary named "Apparel Sizes" containing items like 'Small', 'Medium', and 'Large'.
Default Value: A value that will automatically populate the field for a new record. This can be overridden by the user.
Example: A 'Communication Preference' attribute could have a default value of 'Email'.
Max Length: For
Textdata types, this sets the maximum number of characters allowed.Example: Set to
150for a 'Short Bio' attribute.Min Value / Max Value: For
Numberdata types, these settings define the acceptable numeric range.Example: A 'Satisfaction Score' attribute could have a Min Value of
1and a Max Value of10.Mask: An input format constraint for
Textfields, guiding the user on how to enter data.Example: A 'Postal Code' attribute might use a mask of
00-000to enforce the correct format.Validation Expression: A regular expression used to enforce a complex, custom validation rule on the input.
Example: For a 'Personal ID Number' attribute, you could use a regex to ensure it matches a specific national ID format.
Visibility Rules: Defines conditions under which the attribute is visible to the end-user. This is configured via a separate rule editor.
Example: An 'Allergies' attribute could be set to be visible only if the 'Has Medical Condition' checkbox is ticked.
Editability Rules: Defines conditions under which the attribute can be edited by the end-user. This is configured via a separate rule editor.
Example: An 'Initial Membership Fee' attribute could be made non-editable after the first payment has been processed.
Attribute Order: The display order of an attribute within its category can be adjusted up or down, controlling its position relative to other attributes in the same group.
Example: Use the
menu-upandmenu-downarrows in the detail grid to move the 'T-Shirt Size' attribute above 'Dietary Restrictions'.
Configuration instructions
These instructions cover the management of attribute definitions within the Custom Attributes module.
How to View a Record's Status
The Custom Attributes module is for configuration, not for tracking submissions. To see the details of a defined attribute category and its associated attributes:
Navigate to the Custom Attributes module.
Locate the desired category in the main grid.
Click the Show rules button (or similar "details" icon) on the category's row.
A detail grid will expand below the category, showing all configured attributes (Types), their properties (like Data Type, Is Required, etc.), and their current display order.
How to Add a New Record
This describes adding a new attribute Category and then adding an Attribute to it.
To Add a Category:
Navigate to the Custom Attributes module.
Click the Add category button.
In the modal window, fill in the Category Name, Category Code, and select the Object Type it applies to.
Click Save. The new category will appear in the main grid.
To Add an Attribute (Type) to the Category:
Find the newly created category in the grid.
Click the dropdown menu button on its row and select Add type.
In the modal window, define the attribute's properties: provide a Name and Code, select a Data Type, set validation rules like Is Required, and configure any other relevant settings.
Click Save.
How to Edit an Existing Record
You can edit both categories and the attributes within them.
To Edit a Category:
Locate the category you wish to modify in the grid.
Click the dropdown menu button on its row and select Edit.
In the modal window, change the Category Name or other details as needed.
Click Save.
To Edit an Attribute (Type):
Expand the category's detail view by clicking Show rules.
Find the attribute you need to change in the detail grid.
Click the dropdown menu button on the attribute's row and select Edit.
Modify the attribute's properties in the modal window.
Click Save.
How to Delete (Cancel) a Record
A category or attribute can be deleted if it is no longer needed. This action is permanent and should be done with caution.
To Delete a Category:
Locate the category in the main grid.
Click the dropdown menu button and select Delete.
A confirmation prompt will appear asking if you are sure. Confirm the action to permanently remove the category and all attributes within it.
To Delete an Attribute (Type):
Expand the category's detail view.
Locate the attribute in the detail grid.
Click the dropdown menu button on its row and select Delete.
Confirm the action in the pop-up to remove the attribute.
Hints
Plan Your Codes: Use a consistent and clear naming convention for your Category and Attribute
Codes(e.g.,PROFILE_ALLERGIES,REG_TSHIRT_SIZE). This makes them easier to identify for integrations and reporting.Use Dictionaries for Consistency: Whenever you have a list of specific choices (e.g., sizes, countries, preferences), use the
Dictionarydata type. This prevents user error from free-text entry and keeps data clean.Leverage Default Values: For fields that have a common or standard answer, set a
Default Value. This speeds up data entry for users and reduces the chance of the field being left blank.Test Validation Rules: Before deploying a new attribute with a
MaskorValidation Expression, test it thoroughly. A poorly configured rule can prevent users from entering valid data.Combine Required Fields with Visibility Rules: Make a field required only when it's relevant. For example, the field 'Driving License Number' should only be visible and required if the answer to 'Do you have a driver's license?' is 'Yes'.
Custom attributes will be displayed on all records
Use Case Examples
Scenario: A fitness club wants to track the T-shirt size for new members for a welcome kit.
Custom Attribute: An attribute named "T-Shirt Size" is created with a
Dictionarydata type linked to a list of sizes (S, M, L, XL). It is marked asRequired.Outcome: The "T-Shirt Size" field appears on the member registration form and must be filled out, ensuring the club has the correct data for merchandise orders.
Scenario: A gym needs to know if a member has any allergies.
Custom Attribute: A Boolean (checkbox) attribute "Any Allergies?" is created. A second Text attribute "Allergy Details" is created with a visibility rule to only appear if "Any Allergies?" is checked.
Outcome: The user interface remains clean; the "Allergy Details" text box only appears when needed, improving user experience.
Scenario: A company wants to collect employee emergency contact information.
Custom Attribute: A category "Emergency Contact" is created. Inside, attributes for "Contact Name" (Text), "Relationship" (Text), and "Contact Phone" (Text with a phone number mask) are added.
Outcome: All necessary fields are grouped logically on the employee's profile page and the phone number is formatted correctly upon entry.
Scenario: A personal training service wants to track client fitness goals.
Custom Attribute: An attribute "Primary Fitness Goal" is created using a
Dictionarydata type with options like 'Weight Loss', 'Muscle Gain', 'Cardio Endurance'.Outcome: Trainers can easily filter and group clients by their primary goal, allowing for targeted communication and program design.
Scenario: The system needs to capture a specific government-issued ID number that follows a strict format.
Custom Attribute: An attribute "National ID" is created with a
Validation Expression(regex) that matches the required format (e.g., two letters followed by six numbers).Outcome: The system displays an error message if a user tries to enter an ID in the wrong format, ensuring high data quality.
Scenario: During a promotional period, the sales team offers a discount, but the discount code should not be changed after initial sign-up.
Custom Attribute: An attribute "Promo Code" is created. An editability rule is set to make the field read-only after the client's status is no longer 'Prospect'.
Outcome: The initial promo code is locked in, preventing unauthorized changes while maintaining a historical record.