Event Management Documentation

Getting started

Installing & upgrading

Requirements & compatibility

The extension is built for and will only work in conjunction with Magento 2. Specifically, the extension has been tested for compatibility with the following versions of Magento:

  • 2.3.0–2.4.x


Upon purchasing a license, the extension will be installed for free by one of our expert developers.


To upgrade the extension to the latest version, navigate to your Magento root directory and run the following commands:

php -d memory_limit=-1 composer.phar require staylime/classmanager
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
php bin/magento cache:clean


You can disable the extension using native Magento commands. To disable the extension:

php -d memory_limit=-1 composer.phar require staylime/classmanager
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
php bin/magento cache:clean

Similarly, to re-enable it:

php bin/magento module:enable --clear-static-content Staylime_ClassManager


You can uninstall the extension using native Magento commands.

We recommend that this only be done by an experienced Magento 2 developer.

To uninstall the extension (and create backups in case anything goes wrong):

php bin/magento module:uninstall Staylime_ClassManager --backup-code --backup-media --backup-db
If you have any extensions that are dependent on the extension you will have to uninstall those at the same time.

Unit Tests

To ensure the stability and reliability of the extension, we have built unit tests for core functions. Running the unit tests after upgrading the extension (or Magento or any other extension) will verify the internal structure of the extension.

The extension unit tests do not support testing of Magento core functionality such as placing orders, nor do they test compatibility with other extensions or themes. These will all need to be tested manually.

To run the unit tests, navigate to your Magento root directory and run the following command:

php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist

Companion extensions

The following extensions can be used to enhance the extension’s functionality.

In-store payment

If you will be having employees register customers for classes you may want to provide a special payment option for them to use when payment for the class will not take place on the website (for example on an in-store POS). The following module will allow them to checkout without providing payment details. It is typically installed alongside the extension, but can be excluded if desired.

  • In-Store Payment
Payment method restrictions

If you will be offering your employees an in-store payment method (see above), you’ll need to restrict access to it so that regular customers are unable to use it. Both of these are good options:

Supply list downloads

These extensions allow you to attach files to products, which, in the context of the extension, is most commonly used to provide downloadable supply lists.

We have plans to create a companion extension that will integrate with the Mageworx extension to attach the files to the extension’s emails.
Templates for commonly used custom options

If you have one or more custom options that are used across all of your classes (like a comments field or class policy consent), you may want to consider installing an extension to help manage those. We recommend:



Below is the full text of the Event Management license:

Software License Agreement (SLA) for the Event Management Extension for Magento 2
This Software License Agreement ("SLA") is a legal agreement between you and Staylime Inc. (“Vendor”). By installing and using the Event Management Extension for Magento 2 (“Software”), you are confirming your acceptance of the Software and agreeing to become bound by the terms of this SLA.

If you are entering into this SLA on behalf of a company or other legal entity, you represent that you have the authority to bind such entity and its affiliates to these terms and conditions. If you do not have such authority or if you do not agree with the terms and conditions of this SLA, do not install or use the Software, and you must not accept this SLA.

This SLA shall apply only to the Software supplied by Staylime Inc. herewith regardless of whether other software is referred to or described herein. The terms also apply to any Vendor updates, supplements, Internet-based services, and support services for the Software, unless other terms accompany those items on delivery. If so, those terms apply.


Staylime Inc. hereby grants you a personal, non-transferable, non-exclusive license to use the Software on your devices in accordance with the terms of this SLA.

You are permitted to install and run the Software on one or more computer servers, hosting a single website domain. While use is only granted for a single production domain, additional domains can be used solely for testing and staging purposes. You are responsible for ensuring your devices meet the minimum requirements of the Software.

The license for this Software is not perpetual; it is granted only for the time period (the “Subscription Term”) for which you have paid. If you cancel or fail to pay for your Subscription Term, your Subscription Term will be considered “expired,” the license will be immediately suspended and you will be required to uninstall the Software from all devices within 15 days of license suspension, unless other terms are agreed upon. If so, those terms apply.

In order for the Software to be functional you may be required to install a License Key (“Key”) in order to validate the Subscription Term. The Key can be deactivated by the Vendor to remotely disable the Software on your computer in the event that you have not paid for your Subscription Term.

You are not permitted to:

- Edit, alter, modify, adapt, translate or otherwise change the whole or any part of the Software nor permit the whole or any part of the Software to be combined with or become incorporated in any other software, nor decompile, disassemble or reverse engineer the Software or attempt to do any such things

- Reproduce, copy, distribute, resell or otherwise use the Software for any commercial purpose

- Allow any third party to use the Software on behalf of or for the benefit of any third party

- Use the Software in any way which breaches any applicable local, national or international law

- Use the Software for any purpose that Staylime Inc. considers is a breach of this SLA


Todd Lininger Design, LLC shall at all times retain ownership of the Software as originally downloaded by you and all subsequent downloads of the Software by you. The Software (and the copyright, and other intellectual property rights of whatever nature in the Software, including any modifications made thereto) are and shall remain the property of Todd Lininger, LLC.

Staylime Inc. reserves the right to grant licenses to use the Software to third parties.


This Software is an extension built for Magento Open Source and therefore requires Magento Open Source (version 2.3.0 or higher) to function. The Software will not function and is not supported without Magento. While it may also run on other versions of Magento (e.g. Magento Commerce), functionality and use on other versions is not guaranteed and not supported. The Magento Open Source software can be obtained from


Due to the modular and hierarchical nature of Magento, it is possible for the Software to be customized and extended without modifying the Software directly. This type of external customization and extension is permitted so long as no modifications are made to the Software. All other customizations and modifications can and will only be performed by Staylime Inc. and/or developers contracted by Staylime Inc.


This SLA is effective from the date you first use the Software and shall continue until terminated. You may terminate it at any time upon written notice to Staylime Inc.

It will also terminate immediately if you fail to comply with any term of this SLA. Upon such termination, the licenses granted by this SLA will immediately terminate and you agree to stop all access and use of the Software. The provisions that by their nature continue and survive will survive any termination of this SLA.


This SLA, and any dispute arising out of or in connection with this SLA, shall be governed by and construed in accordance with the laws of Washington state and the United States of America.

Modified Wednesday, June 23, 2021, 12:00 PM PDT

Purchasing the license

The extension’s license may be purchased by getting in touch with us using the contact form below. Upon purchasing the license a unique key will be provided to you. Your license key is valid for the period of time for which you’ve paid. When that time has expired you will be required to renew your license in order to continue using the extension.

License Key

Once received, your license key must be installed in the extension’s config settings. After installation of a valid key you will see the status of the license:

The license key is configured for one production domain and up to two additional development or staging domains, as needed. To add or change production, development or staging domains on your license, contact us.

Common Questions

  • What happens if my license expires?

    If your license key is invalid or expired you will not be able to access the Sessions or Rosters grids.

  • Is any session or roster data deleted?

    No, your session and roster data is safe and will reappear be there once you’ve renewed your license.

  • Will customers still be able to register for classes if my license is expired?

    Your customers will still be able to register for classes. There will be no visible difference on the front end.


What’s included

  • Compatibility with Magento core code and Luma theme
  • Limited compatibility fixes for third-party extensions and themes
  • Fixes for any functionality issues and bugs
  • Answering any questions or concerns relating to the extension
  • Full documentation and tutorial videos

What’s not included

  • Module customizations or custom feature development
  • Extensive compatibility fixes for third-party extensions and themes
  • Data recovery due to accidental changes or deletion
  • Support and development not directly related to the CM extension
These services can be provided at an additional cost.

Classes & sessions

Class products

Creating a new class

The extension adds a new product type to Magento called "Class Reservation". You can create a new class product by either pressing the arrow next to the Add Product button on the Products grid and selecting "Class Reservation", or by pressing "Add New Class" at the top of the Sessions grid.

In Magento 2 it no longer matters which Attribute Set or Design you choose for class products. The extension will work regardless of those settings. Sessions are also no longer managed through the Custom(izable) Options interface. Class products now have dedicated session management under the Class Sessions tab.

Class sessions tab

The Class Sessions tab is where you’ll create and manage all of your sessions for a class. See Class sessions for more details.

Class details tab

The Class Details tab is used for product-specific settings and contains only two options:

  • This is a Special Event Yes|No Set this option to "Yes" to mark this class as a special event. This allows for filtering and highlights these events in certain areas of the website.
  • Text for No Sessions (text field) This field can be used to change the default text that’s shown when no sessions are available. The default is Registration for this class is no longer available, (however the default can be changed as well in CM settings).

Customizable options

You can add custom options to class registrations under the Customizable Options tab. Whatever options you enter here will show on the registration form. Some common options include:

  • Checkbox indicating Class Policy agreement
  • Text field indicating make and model of your equipment (sewing machine, camera, etc.)
  • Text field for other comments or requests (seating preferences, accommodation requests, etc.)
  • Drop-down selection of meal preferences
  • Checkbox indicating the supply list was downloaded

Supply list downloads

File Attachments and Product Downloads extension must be installed.

Using the File Attachments and Product Downloads extension you can assign files, such as PDF supply lists, to the product. The download links will show up in a tab on the product page and can also be attached to order emails. They are not included in the extension’s emails yet, but we have plans to add that.

Product grid filters

The extension adds two new columns to the Magento Products grid:


You can filter class products by instructor by entering an instructor’s name (or part of it) into the "Instructors" filter field. You can also sort by instructor. This can help you find certain classes right from the Products grid.

Special Event

You can filter and sort your class products by whether they are marked as a special event or not.

Added in 1.1.4

Class sessions

Adding & Editing Sessions

Sessions are at the heart of the extension. A session is a combination of a location, instructor and one or more times, creating a unique moment in time and space! Some classes only offer a single session; others may offer many session options in different locations and at different times. A single session can also consist of a single date and time, or span multiple dates and times.


Locations must be added in advance.

Instructors must be added in advance.

New sessions are added under the “Class Sessions” tab on the product editing page (they can also be imported). Open the tab and press the Add New Session button to create a new session. Once you've created some sessions, you can grab the handle on the left and drag and drop to reorder them. You can also click the trash can icon on the right to delete them.

Under no circumstances should sessions be recycled. If a session date, time or location changes, that’s fine, but reusing one session for a completely different session will only cause headaches.

No changes will be saved until the product “Save” button is pressed.

When creating or editing a session, this is what an expanded session panel looks like:


Session status can be one of four states:

  • Active — session is enabled for registration or waitlisting (dependent upon capacity)
  • Inactive — session is disabled for registration (will not be displayed to customers)
  • Canceled — set session status to “Canceled” to close registration and notify registrants by email (see Cancelations for more details)
  • Completed — session date/time has passed and session is considered complete (set automatically)

The default state is Active.


A location for the session must be selected from the dropdown list. (The location must be added before it can be selected.) See Locations.


An instructor for the session must be selected from the dropdown list. (The instructor must be added before it can be selected.) See Instructors.

Dates & times

You can associate as many date/time combinations as you want with each session. It is common for sessions to only have one date and time. Or you may have a session that spans several days, weeks or months. When the session spans more than one date, make sure to add a new row for each date. Unless you plan to keep partying through the night, then by all means, go for it!

Seats available

This is the number of spots that will be available for the session. Once this number is reached, registration will be closed, but customers will be able to add their names to a wait list (if enabled) in case any spots open up.

Price adjustment

The base price is set as the product price, but if one session will cost more (or less) than the rest, an adjustment can be entered here. This can be any positive or negative decimal-based integer.

Sort order

Manual sort order can be set here, but usually it’s a good idea to just let the extension’s smart auto-sorting do the heavy lifting.

Session notes

You can enter text that may be helpful to the customer and it will be diplayed in parentheses on the front end. For example, you may want to list the day(s) of the week that the class is on. Just don’t get too wordy, or it will clutter the registration options.

Session changes

As of version 1.0.13, changes to a session’s location, date or time will trigger an automatic email sent to all current registrants notifying them of the change. If a customer has already added the session to their calendar using the “Add to Calendar” link, they will need to remove the old calendar entry and download and import the updated iCal file. A brief notice regarding this as well as a link to the updated iCal file will be included in the session change email.

Session cancelations

To cancel a class session, change the session’s Status to Canceled (see Editing Sessions). When a session is canceled, an email is sent to all current registrants notifying them of the cancelation.

The extension does not initiate refunds. Refunds, if applicable, will need to be manually processed.

Importing sessions


Class Products must exist before importing.

Locations must exist before importing.

Instructors must exist before importing.

Sessions can be imported via CSV file. The CSV file contains the following columns and looks something like this:

CM20-001 Active The Colosseum Horatio Albatross 1/16/2023 11 am 2:30 pm 100 Lunch will be provided
Download a Sample CSV

After you’ve prepared your CSV, navigate to Class Manager > Configuration > Import Sessions, select your file, and click the “Import” button to start the import process. If any errors occur, no sessions will be imported; you will be informed of what went wrong so you can fix it and try again.

CSV Notes
  • Required fields: sku, status, location, instructor, start_date, start_time, end_time and qty.
  • The end_date field is not required since it defaults to the same as start_date.
  • Default values can be configured for status, location, instructor and qty in which case they can optionally be left blank.
  • The price_adjustment, sort_order and notes fields are optional and will inherit the same defaults they would when adding/editing sessions manually.
  • Sessions that span multiple, non-consecutive dates will consist of multiple rows in the spreadsheet. After adding a new row containing the first date of the session, enter the other dates and times on separate rows directly underneath that row (see sample CSV for examples). The sku column must be empty for these subsequent rows to be added to the session. If a SKU is provided the row will be treated as a separate session.
  • All dates and times must be formatted the same way they are when you add/edit sessions manually.

Sessions grid


The Sessions grid can be accessed from the main the extension’s menu and shows a list of all sessions across all products. Here you can search and sort them, see which ones are full, and even make changes to them directly from the grid.

  • ID — A unique ID that can be used to reference the session
  • SKU — The SKU of the class to which the session belongs (sessions do not have their own SKUs)
  • Product Name — The name of the class to which the session belongs
  • Status — The session status (Inactive, Active, Canceled Complete)
  • Start Date — The date and time the session starts
  • End Date — The date and time that the session ends (if the session has multiple dates, it will be the end time of the last date)
  • Date(s) — All dates/times in the session
  • Created At — The date and time when the session was created
  • Instructor — The instructor of the session
  • Location — The location at which the session will take place
  • Seats — The total number of seats/spots in the session (capacity)
  • Capacity — Shows the percentage of registrations vs. capacity
  • Notes — Any session notes will show up in parentheses on the front end
  • Sort Order — Sort order of sessions on front end (only applicable if "smart" sorting is disabled)
  • Price Adjustment — Any adjustment to the base price for individual sessions
  • Action — Pressing “Edit” will take you to the class page to edit the full session details
  • Roster — Pressing “View” will take you to the roster for that session


Once you have the columns the way you want them, you can save your column views using the “Views” menu so you can easily switch between views.


You can filter the sessions by pressing the “Filters” button, filling in/selecting the filters you want, and pressing the “Apply Filters” button. Clear all filters by pressing the “Clear all” link.

Quick edits

The coolest part of the grid is being able to edit certain session details right from the grid (requires permission) without having to open the product for editing! When you click on a row, it’s selected and some of the fields become editable.

You can change the Status, number of Seats, Notes, Sort Order and Price Adjustment. This is especially handy when you have a class that has reached capacity and you want to add another seat or two to maximize your revenue. You can adjust the number of seats in a couple of seconds and the Capacity percentage updates accordingly.


Customer registrations

Registering for a Session

The extension changes the product page in a way that the new Class Reservation product type now shows the list of associated Sessions and the Add me to cart button is replaced with the Register button. The list of sessions contains the location and time of the event, shows the status of the session and tells whether it is possible to register for it.

When the available session has been selected, clicking on the Register button show the pop-up window with input fields for the name of the buyer, their email and phone number. If the customer is a registered one and does not belong to the service group of customers, these fields are filled in automatically.

If there are Related Products specified for the product in question, the form will also contain a checkbox with the possibility to add a specified related product to the cart along with the registration for the event.

After the form was filled in and the Add To Cart button was clicked, the event product will be added to the cart. Then, a regular Magento checkout procedure is followed.

When the order is created, the registration with the Reserved status is created for this customer. When the order is paid for, the status of the registration is changed to Active.

If there are no available seats for the event, the product page will have an Add me to the wait list link, available only for registered users. After the form is filled and sent the user doesn’t have to proceed to checkout — the registration with the Wait List status has already been created for that user.

All registrations are listed in the Rosters section of the extension in the admin panel — Class Manager / Rosters.

When the session row is clicked, the admin is taken to the page with the grid of registrations for this session. The name of the event, its location, date and time, instructor, status (depending on occupancy — N seats left, 1 seat left, full, overbooked) are displayed on top of the grid.

The registration grid displays all registrations of customers for this event — statuses, number of booked seats, names and contacts of the buyers, comments from customers and administrator, reservation date, link to the order (if it exists), payment amount, link to the customer’s account. When clicking on the row of this grid, inline editing of the record becomes available: administrator can inter alia change the registration status — say, they can cancel the registration by specifying the Cancelled status. Export and Print buttons that allow admins to export registrations in .csv or print them out are available on top of the registration grid.

Besides, the registration status is used to send service emails (see next paragraph) and calculate event seats available for purchase.


The extension has the following automated emails:

  • Registration details — an email confirming the registration and containing details of the upcoming event.
  • Notification about Canceled Session — an email notifying about the cancellation of the Session. The email is sent when the Session’s status is changed to Cancelled.
  • Notification about Changed Session — an email notifying about the changes in the Session. The email is sent when the Session’s location or time are changed.
  • Wait List Notification — an email about a successful registration in the wait list for the Session that had no seats available. This email is available if the entire wait list feature is turned on.
  • Class Reminders — emails with reminders about the upcoming session. They are sent prior to the start of the Session in times specified in the settings of the extension.
  • Survey Email — an email with an invitation to take part in a survey after the completion of the session. It is available if the entire Survey feature is turned on.

All types of automated emails can be turned on or off. All types can have their own email template, including that created based on the default templates for each type that come pre-built with the extension. The emails of the last two types are sent through the email queue of the extension. Other emails are sent directly when the initiating event takes place.

My classes page

The account dashboard of the register user has the My Classes link, following which takes you to the page with customer’s registrations. The page is split into 3 sections: Upcoming Classes — confirmed customer registrations to events that have not yet passed; Wait Listed Classes — events that had not available seats whose wait list the customer was added to; Recent Classes — registrations to events that already passed. If the section does not have records — a respective notification is shown. If there are records, then the respective registration data is shown: name and link to the event product, location, data and time, instructor, number of booked seats, link to the order (if it exists), and registration status.

Add to calendar button

If the settings of the extension under Stores / Settings / Configuration / Staylime / Class Manager / Other / Add to Calendar links have the Enable value, then the My Classes page in the Upcoming Events section the Add to Calendar button added to the registration row. Clicking on the button will download the .iCal file with data on the upcoming event that you can upload to any calendar app that supports this format. This button is also available in automated confirmation and reminder emails.

Employee registrations

Registering a Customer for a Class

Employee registrations (often called “in-store registrations”) are a central feature to businesses that also operate retail locations. A customer may come into the store wanting to sign up and pay for a class at the same time — and in the same transaction — that they make a physical purchase, and this system allows store employees to do so on their behalf.


In-Store Payment module must be installed and enabled.

Module for restricting payment methods by customer group must be installed.

One or more customer groups must be created to which all store accounts will be assigned.

Customer group must be selected for in-store registrations in config settings and also configured for access to the In-Store Payment method.

Customer accounts (either one per store, one per register, or one per employee) must be created for employees and assigned to the selected customer group(s).

How to register a customer for a class using your in-store account:

  1. If you’re not already signed in, sign into your store account using the link in the header.
  2. Browse or search to find the class the customer wants to register for.
  3. On the product page, scroll down to find the available sessions.
  4. Select the session the customer wants (if it’s available) and press the “Register” button. (When selected, the background color of the session will change to teal.)
  5. A popup appears with the registration form.
  6. Enter the customer’s contact details, being very careful to enter their correct email address, fill out the rest of the form, and press the “Add to Cart” button.
  7. A confirmation appears when the registration has been added to the cart giving you the option to either view your cart or register another customer for the same session. If you’re ready to check out, either press the “View cart” button or close the overlay and go to checkout using the cart icon in the header.
  8. Check out using the standard checkout process, choosing the “Payment Taken In-Store” payment option since you've already taken payment for the class using your store’s POS.

What happens after I register a customer?

Of course, the registration will be added to the class roster in Magento. In addition — if the customer’s email address was entered correctly — glorious, almost magical, things will happen!

  1. An email will be immediately sent to the customer’s email address confirming their enrollment. The email contains:
    • Registrant’s name and contact info
    • Name of class
    • Date and time of class
    • Location of class, including address and phone number
    • Instructor name
    • Link to add the event to their calendar (iCal)
  2. If the customer has an account on the site using the same email address (or even if they create a new one afterwards using that email address), the registration you just created will be visible on their My Classes page. Feel free to let them know this!
  3. The customer will receive all class-related emails (reminders, changes, cancelations, survey requests, etc.) just as though they had signed up themselves.

Wait list signups

Customer signup

If a session has reached capacity, customers can be added to a wait list for the class so that they may be contacted once more spots open up. If a class session is full a link to get on the wait list will be shown for the session.

For a customer to add themselves, they simply press the “Get on the wait list” link. If they are not logged in, they will be asked to log in (or create an account if they don't have one). They will then be able to select the quantity of wait list spots as well as add any comments.

The customer’s wait list entries will show up on their My Classes page.

Customers can manage their wait list entries by clicking on the class name on the My Classes page (or otherwise navigating to the class page) and clicking the “Get on the wait list” link again. When the form appears they will be able to either update their wait list info (adjust quantity, add notes...) or they will also have the option to delete their wait list entry using the “Delete” button.

In-store (employee) signup

The process for an employee to add a customer to a wait list is almost identical. The difference is that you will enter the customer’s name and contact info into the Notes field.

To add more than one customer, adjust the quantity and add their name and contact info to the Notes field, while also retaining the info for existing customer(s), and press the “Update wait list spot” button.

Classes waitlisted using a store employee’s account will not show up on the customer’s My Classes page, however they will show up on the store’s My Classes page.

Note: we recognize that this is not an ideal method for in-store wait list signups and are working to implement a better system. Your feedback is welcome.

How to use wait list entries

See Managing wait lists


Rosters grid

The Rosters grid can be accessed from the main menu of the extension and, similar to the Sessions grid, shows a list of all sessions. You can find the roster you’re looking for by searching and sorting them, then press “View” (or just click in a row) to view individual rosters.

  • ID — A unique ID that can be used to reference the roster
  • Class Title — The name of the class
  • SKU — The SKU for the class (product level)
  • Start Date — The date and time the session starts
  • End Date — The date and time that the session ends (if the session has multiple dates, it will be the end time of the last date)
  • Date(s) — All dates/times in the session
  • Instructor — The instructor of the session
  • Location — The location at which the session will take place
  • Available Qty — The total number of seats/spots in the session (capacity)
  • Active Qty — The number of registrants who have enrolled in the session and paid for it
  • Reserved Qty — The number of registrants who have enrolled in the session but whose payment is pending
  • Wait List Qty — The number of customers on the wait list for the session
  • Canceled Qty — The number of registrants whose registrations have been canceled (order refunded or status changed)
  • Capacity — Shows the percentage of registrations vs. total capacity
  • Special Event — Shows whether the session is designated as a Special Event (can be useful for finding rosters for special events)
  • Action — Pressing “View” will take you to the roster for that session


You can sort columns, drag-and-drop the column headers to reorganize columns, and you can show/hide the columns in the grid using the “Columns” manager.


Once you have the columns the way you want them, you can save your column views using the “Views” menu so you can easily switch between views.


You can filter the sessions by pressing the “Filters” button, filling in/selecting the filters you want, and pressing the “Apply Filters” button. Clear all filters by pressing the “Clear all” link.


Session rosters

A roster is a view of who is registered for a class session. Rosters can be accessed in the following ways:

  1. from the Rosters Grid,
  2. from the Sessions Grid, or
  3. from the “View Roster” link on a customer’s order (see below)

When you view a roster, you'll see the Class name, location, date & time, instructor and number of seats at the top. There are also a couple of helpful buttons:

  • Edit Session — This will take you to the product page so you can edit session details.
  • View Registration Page — This will take you to the registration page on the front end, in case you want to register someone.

Registrations grid

Below the header is the Registrations grid which lists all participants for a session.

  • ID — A unique ID that can be used to reference the registration
  • Status — The registration status (Active, Reserved, Canceled, Wait List)
  • Quantity — The quantity registered
  • Name — Customer name
  • E-mail — Customer e-mail address
  • Phone — Customer phone number
  • Customer Info — Customer comments (entered when registering)
  • Internal Notes — Internal notes (entered on roster)
  • Product Options — Custom options associated with the class
  • Reserved Date — Date the order was placed
  • Order — Order number containing the registration
  • Paid — Paid amount
  • Customer — Customer ID
  • Store — Who purchased the class (customer or store)
Note: the “Actions” dropdown menu may be unavailable depending on your permissions.
Please be aware that Magento 2 paginates grids, so some entries may be “hidden” on other pages.

In order to view all entries at once you can set the number per page to the maximum: 999. This usually “sticks” from roster to roster, but it doesn't hurt to check and make sure that you’re viewing all entries and not just the first 20 (which is the default).


You can sort columns, drag-and-drop the column headers to reorganize columns, and you can show/hide the columns in the grid using the “Columns” manager.


Once you have the columns the way you want them, you can save your column views using the “Views” menu so you can easily switch between views. For example, it may be helpful to save a “Print” view for printing rosters.


You can filter the grid by pressing the “Filters” button, filling in/selecting the filters you want, and pressing the “Apply Filters” button. Clear all filters by pressing the “Clear all” link.

The Status filter on this grid allows you to view multiple statuses at once. So if you want to show both Active and Wait List entries, you can do that!

Filters are only available for active columns. If a filter is missing, toggle the column visibility and try again.

Editing registrations

To edit a roster entry, click on a row and it will become editable. Make your changes and then press the “Save” button.

Editable fields

There are two levels of editing permissions: Limited and Full. Certain fields require Full permissions to edit. Permission level has been notated next to each field.

Status Full

The registration status can be updated. Possible options are:

  • Active — The customer has registered for the class and plans to attend
  • Reserved — The customer has reserved their spot, but has not yet paid for it
  • Canceled — The customer will no longer be attending
  • Wait List — Designates a wait list entry
Note: Registration Status cannot be changed from Wait List to Active unless there is an order associated with the entry.

Status changes are recorded as a comment on the associated order:

Quantity Limited|Full

The quantity of a registration can be changed as long as there are seats available in the class. If the class is full, unless you edit the session to increase the number of available seats (or cancel or reduce the quantity of another registration), you will only be able to adjust the quantity down.

Note: If the Quantity is changed to 0, the Status of the registration is also changed to Canceled, however changing the Quantity from 0 to 1 does not automatically return the registration status to Active. Status must be updated manually.

Status changes are recorded as a comment on the associated order:

Name Full

Customer name can be updated in case of typo.

E-mail Full

Customer email can be updated in case of typo.

Phone Full

Customer phone number can be updated in case of typo.

Customer info Full

Customer comments can be updated.

Internal notes Limited|Full

Internal notes can be added.

Reserved date Full

(Even though it looks like this can be changed, it cannot. We will be disabling editing of the date field in a future release.)

Printing registrations

The extension brings more flexibility to roster printing. Now you can filter and sort entries as well as hide columns you don't need.

Before printing, double-check your pagination to make sure all entries are visible. Only the visible entries will be printed.

This is where Views are really handy. You can save a “Print” view which just shows the columns you want on your printouts and then easily switch back and forth between a more detailed view and your slimmed-down “Print” view. Once you've created your “Print” view and have selected it using the Views menu, press the “Print” button. A popup window opens*, displaying only the roster isolated from other elements that shouldn't be printed. You can then press Ctrl + P on a PC or ⌘ + P on a Mac to print the window.

*If you don't see the window open, make sure your browser isn't blocking it.

Exporting registrations

Rosters can be exported to a CSV file. You can apply any filters you want to the registrations table and when you’re ready to export, press the “Export” menu button and then the “Export” button which appears in the dropdown.

You will then be prompted to save the file to your computer where you can open it in the application of your choice.

Note that column sorting and hiding does not apply to exports. All columns are exported whether they are visible or not.

Wait lists

Viewing wait list entries

You can see if anyone is wait listed for a session by looking in the “Wait List Qty” column on the Rosters grid. If you would like to view all classes that have a wait list you can filter the Rosters grid by sessions with a Wait List Qty of 1 to 999.

When viewing a roster, Wait List entries will be highlighted in pink and you'll usually find them towards the bottom. Although, depending on your sorting method, they may show up at the top or even in the middle of other roster entries.)

The wait list entries will show the customer’s contact information as well as how many spots they would like to register for, the date on which they made their request, and any comments they may have provided. (If the Include session options in wait list form setting is enabled, it will also show the answers they provided to the extra session questions.)

Managing wait list entries

Because every registration requires an order to be associated with it, wait list entries cannot be directly converted to registrations. You will need to contact the customer letting them know that one or more spots have become available and they can now register for the class through the website, or you can register them on their behalf using the employee registration method. Once they have registered for the class, either you or the customer will need to manually delete their wait list entry; it is not done automatically. On the back end, all of the same fields that can be edited for registrations can be edited for wait list entries. Please see the Editing Registrations documentation for instructions on editing wait list entries.

We are searching for better ways of handling this. Current ideas include an automated email which will notify wait listed customers when spots open up. Another idea we are considering is to utilize a backorder system where orders could still be placed even when there is no availability for a session and those orders would be assigned the “Wait List” status. You would then have to cancel and refund the order if they are unable to attend. Your feedback is welcome.

Customers can also manage their own wait list entries from the My Classes page in their account.



Location is the place where the event is going to take place. This is a mandatory field when creating a Session. This is why all the possible locations of the event should first be added to the location roster that can be found in the extension settings at Class Manager / Configuration / Locations.

The location grid allows you to filter locations by name, code, phone number, and email, and sort by any column in the grid. The records are paginated with the ability to specify the amount of records to be displayed per page. Bulk editing and deletion of records is available. In order to create a new location you should click the Add New Location button. In order to edit an existing location you need to select the Edit option of the Action column of the respective grid row.

The location page has the following data:

  • Filterable — a Yes/No toggle. Adds or removes the location from the calendar filter.
  • Location Name — the name of the location, for example Training Center Bronx.
  • Filter Option Label — the name of the location that will be displayed in the calendar filter and in selection lists, for example Bronx.
  • Code — the unique code of the location, for example bronx. Alphanumeric characters, hyphens and underscores are allowed. The code is used to form URLs of the calendar with the applied location filter.
  • Address — the physical address of the location, for example 7680 Vermont Rd. Bronx, NY 10456.
  • Phone — the phone of the location, for example +1 (123) 456-7890.
  • Email — the email of the location, for example [email protected]

All available locations are listed in the filter of the calendar. The location specified when creating the Session is listed in the Session selection section on the event product page. The location is available on most admin UI elements related to sessions.


Instructor is the person who runs the event being organized. This is a mandatory field when creating a Session, therefore, all Instructors must first be entered in the Instructors grid under Class Manager / Configuration / Instructors.

In the instructor grid, filters are available by name, email address and instructor code; you can sort by all columns of the grid. Records are displayed page by page with the ability to specify the number of records on each page. Bulk editing and bulk deletion of records is available. To create a new instructor, click the Add New Instructor button, to edit an existing one, click Edit in the Action column in the respective grid row.

The instructor’s detail page contains the following data:

  • Instructor Name — the instructor’s name, e.g. John Doe. Required.
  • Email — the instructor’s email address, e.g. [email protected] Required.
  • URL Key — instructor code. Symbolic combination (only letters, numbers and signs -_ are allowed, eg john-doe), which will then be used to form a link to the instructor’s personal page. It is acceptable to leave blank - this means that there is no need to show a separate page for this instructor.
  • Image — a photo of the instructor. If loaded, it is used on the instructor detail page and in the Instructors tab on the product page. No more than 2 MB, allowed extensions — jpg, png, gif.
  • Instructor Bio — description for the instructor detail page and the Instructors tab on the product page. Displayed there if non-empty. Content with markup/html tags is allowed.

An instructor is selected for a session (event) when it is created.

On the product detail page, all instructors conducting sessions for this product are displayed in the Instructors tab (if the Class Product / Show Instructors Tab setting is enabled).

After registering for a class, the instructor conducting it is mentioned in the default newsletter templates. The Instructor property is available on almost all session-related UI elements of the admin panel.


Customer classes report

The customer classes report is available at Class Manager / Reports / Customer classes. The report is a structured selection of data on registrations by customers shown as a grid (the filters and sort buttons are available) that allows you to export the results in a .csv format or print it out. The important fields of the grid are: id and name of the customer, their email and phone number, the name of the event, its location and time, order creation data, order link, total amount, order status, and whether it was a direct order (created by the customer themselves), or a service order (created by a service customer).

Purchase location report

This report is available at Class Manager / Reports / Purchase location. This report is a structured selection of data on registrations by service registration accounts (customers, that belong to the service group, that can create registrations for other people), shown as a grid (with filters and sort buttons) with an ability to export the results in a .csv format and print it out. The important fields of the grid: name of the service account and Customer if it was a direct registration, the name of the event, its location and time, order link, order creation date, and total amount.



1.2.3 (2021-06-15)
  • Added support for multiple Surveys
  • Renamed the Survey delay setting on the Config page, and its value is now in hours instead of days
  • Minor UI changes to Surveys in the backend
  • Fixed an error which occured after saving more than one option or option values
  • Fixed visibility of comment under Rating Option Label field
  • Fixed a bug where a non-required option was saved as required during first save
  • Made the “Include online classes on all calendar views” setting location-specific
  • Fixed send time for Reminder and Survey emails in queue
  • Introduced changes to the licensing functionality
1.2.2 (2021-05-31)
  • Added indication that session has been canceled on My Classes page
  • Zoom Status setting should now have a default value
  • Changed address wording for Zoom sessions in emails
  • Made the Action column visible on Rosters grid
  • Renamed the “Hours Reservation Time” setting
  • Removed the “Add to Calendar” link on My Classes page when registration status is canceled
  • Setting "Require participants to have a Zoom account to attend" should now be disabled by default
  • Session status is now checked prior to sending survey emails
  • Cancel and change emails are now not sent if the session is already complete
  • Removed period after month from date/time in emails when month name only has 3 letters
  • Cursor is now `pointer` instead of `default` when hovering over Rosters grid rows
  • Calendar's refresh button is no longer cut off in Safari
  • Now all Zoom config options are hidden when Zoom integration is disabled
1.2.1 (2021-04-29)
  • Unit test updates
  • Code review and refactoring
  • Added the ability to change/cancel emails for Instructors
  • Added email confirmation field to the registration form
  • Added additional indication for online locations in the calendar and in the session tab in the store admin
  • Added comment text under email BCC field
  • Fixed a bug where the resolve option caused a UI issue in surveys
1.2.0 (2021-03-22)
  • Zoom API integration to enable online learning
  • Enabled BCC for all module`s service emails
  • Changed text in all module`s default email templates (session dates format)
  • Fixed timezone when sending emails in queues
  • "Add New Session" button no longer fails to expand the new session panel with pagination
  • Upcoming Classes on My Classes page are now not moved to Recent Classes until the session is complete.
1.1.9 (2021-02-09)
  • Fixed special tax class assigned to products with any type
1.1.8 (2021-02-01)
  • Fixed tax class assignment for product with Class Reservation type
1.1.7 (2020-12-31)
  • Added compatibility with Magento 2.4
  • Added “Email Templates” to module`s admin menu
  • Fixed HTML content in Survey email template
1.1.6 (2020-11-17)
  • Fix for My Classes page when instructor is deleted
1.1.5 (2020-10-26)
  • Improvements to roster printing
  • Fixed an issue where reminder emails were sent for canceled registrations
  • Fixed issues related to instructor display on frontend
  • Fixed issues with instructor URL key
  • Fixed unable to sort sessions by product name
  • Fixed comma use in custom option prices
  • Fixed issue with calendar tooltips
1.1.4 (2020-09-14)
  • Restored the missing Advanced Inventory link for non-class products
  • Status of unpaid reservations now changes from “Reserved” to “Canceled” once registration for session has expired
  • Added “Special Events” column to Products grid
  • Improvements to how the Special Event attribute is saved
  • Thought you were seeing ghosts after deleting sessions? We got out our Proton Packs and improved the way Instructor and Location attributes are updated.
  • Changed frontend visibility of Instructor and Location attributes to avoid repetitive filters in Layered Navigation
  • Refactored the way class tallies are calculated on the Instructors page
  • Fixed an issue in Magento 2.3.4 where CSV export radio button was duplicated
  • Fixed an issue where products could not be updated in bulk from the Products grid when filtered by Instructor
  • Fixed an issue where class items couldn't be edited or deleted from mini-cart
  • Fixed an issue where adjustment price was calculated incorrectly when visited from category page
  • Fixed an issue where cart changes could not be saved when only classes were present
  • Fixed an issue with hover details on calendars
1.1.3 (2020-07-22)
  • Fixed an issue where reminder emails were sometimes sent after a session was canceled
  • Fixed a roster export issue when PHP short tags are not allowed
  • Added customer notes to Wait Listed Classes section on My Classes page
  • Added default CSS for unavailable session labels
  • Changed title of “Classes” link in account header menu to “My Classes”
  • Added CSS to visually separate supply list items section from the rest of the registration form
1.1.2 (2020-07-15)
  • Fixed an issue were survey emails were sometimes sent for inactive sessions
  • Phone number field on the waitlist form is now hidden if one is already saved in the customer’s account (to prevent confusion for employee waitlist registrations)
  • Additional class names action and primary added to Add to Calendar links, which will style them as buttons in the Luma theme (and other themes which support those class names)
1.1.1 (2020-07-13)
  • Added a new “Customer Classes” grid showing class registrations by customer
  • Changes and fixes to “Location Purchased" grid (now called “Purchase Location”)
  • "Stores" menu group changed to “Reports” and now houses “Customer Classes” and “Purchase Location”
  • Fixed issues related to Qty and Capacity filtering on Rosters grid
  • Disabled editing of “Reserved Date” on rosters (changes were never saved anyway)
  • Removed “#” column from Upcoming Classes and Wait Listed Classes tables on My Classes page
1.1.0 (2020-06-01)
  • Added license key support
  • Added “View Roster” links to orders in back end
  • Changed label for config setting related to cart quantity adjustments
1.0.14 (2020-05-25)
  • Improved support for calendar printing
  • Added location name to meta title for filtered calendar pages
  • Changed default text for empty sections on My Classes page
  • Fixed issue setting Special Event attribute to “Yes” for new classes
  • Fixed “Can’t check requested quantity for products without Source Items support” error
1.0.13 (2020-04-06)
  • Added new email to notify customers of changes to a session’s date, time or location
  • Improved compatibility with multi-store setups
  • Added setting to control whether to add a link to the event calendar in the main menu
1.0.12 (2020-03-04)
  • Fixed permissions issue when editing roster entries
  • Added “add-to-calendar” CSS class name to iCal links in email templates
  • Added the ability to customize supply list text
  • Fixed “Select all” link for adding supply list items to cart
  • Improvements to default configuration settings
  • No customer groups selected by default for store accounts
1.0.11 (2020-01-29)
  • Added configurable midpoint to “Capacity” column to turn bar yellow when over certain threshold
  • Fixed media path error for instructor images
1.0.10 (2020-01-19)
  • Fixed permissions issue when editing sessions from Sessions grid
  • Removed Registration ID column from Survey Results grid to make survey submissions anonymous
1.0.9 (2020-01-07)
  • Added “Add to Calendar” links (iCal format) to the My Classes page and registration & reminder emails so that customers can add classes to their calendar of choice (requires manual update of customized templates)
  • Added “Capacity” column to Sessions and Rosters grids to visually indicate how full a class is
  • Compatible with Magento 2.3.3
  • Improved compatibility with older versions of the Porto theme
  • Unit test updates
1.0.8 (2019-11-24)
  • Registration status will now be active even if other items in order are pending shipping
  • Added ability to export survey results to CSV (export can optionally be filtered)
  • Canonical link meta tag added to Instructor pages
  • Small improvements to admin menu and settings
  • Unit test updates
  • Additional unit tests added for new features
1.0.7 (2019-11-04)
  • Fixed Instructor page router issue
1.0.6 (2019-10-23)
  • Added Instructor pages
  • Fixed an issue where deleted sessions would cause shopping cart errors
  • Updated survey link hashing algorithm to be compatible with PHP Sodium (required by Magento 2.3.2)
  • Added classes registered by stores/employees to customer’s Classes dropdown in header ribbon
  • Fixed issues with the display of available sessions in IE
  • Added extension version to CM settings
1.0.5 (2019-10-09)
  • Added classes registered by stores/employees to customer’s My Classes page
  • Added “Instructors” tab to class product pages
  • Improved readability and usability of editable fields on Roster grid
  • Added “Paid” column to Roster grid
  • Fixed issues related to Class Location options in Layered Navigation
  • Alphabetized list of instructors in back end
  • Unit test updates
1.0.4 (2019-08-28)
  • Added option to include custom options on wait list signup form
  • Separated registered classes on My Classes page into “Upcoming Classes” and “Recent Classes”
  • Modified CM email templates to improve responsiveness and readability (requires manual update of customized templates)
  • Added column management to Survey Results grid
  • Added links to open rosters from Sessions grid
  • Removed auto-completion of registration form for store/employee accounts
  • Fixed pagination bug on My Classes page
  • Added optional “Email” field for Locations
  • Added columns to Locations grid:
    • Address
    • Phone
    • Email
  • Added “URL Key” column to Instructors grid
  • Made Instructors and Locations grids filterable
  • Order comment added when registration confirmation email is sent
  • Made “Status” column editable on Sessions grid
  • Made survey “Rating” label editable
  • Time zone fix for “Date Created” column in Sessions grid
  • Made columns editable on Sessions, Locations and Instructors grids
  • Unit test updates
1.0.3 (2019-08-05)
  • Added ability to select multiple statuses when filtering Roster grid
  • Added filterable “Instructors” column to Products grid
  • Auto-select session on class page when only one is available
  • Order comment added when registration status is changed on the roster
  • Changed appearance of classes with 0 quantity on My Classes page
  • Hid classes with 0 quantity from Classes dropdown in header ribbon
  • Added white background to calendar events
  • “Seats Left” value on rosters updates dynamically with status or quantity changes
  • Linked class title in CM emails to class page on website (requires manual update of customized templates)
  • Fixed sorting issue on quantity columns in Registrations grid
  • Changed “Get on the wait list” text to “Add me to the wait list”
  • Request date added for wait list entries
  • Moved customer wait list notes to “Customer Info” column on rosters
  • Added columns to Sessions grid:
    • Date Created
    • Seats Available
    • Session Notes
    • Sort Order
    • Price Adjustment
1.0.2 (2019-06-21)
  • Ensured compatibility with Magento 2.3.2
  • Fixed an error that occurred in new installations when order invoice is saved, changing registration status
1.0.1 (2019-06-20)
  • Added support for PHP 7.2
1.0.0 (2019-06-20)
  • Initial Release