Event Scheduler

What is it

This is the demo site for one of the most advanced event scheduler available for Opencart. It leverages all that makes Opencart such a fantastic platform to deliver a truly ground-breaking and feature-complete extension. The design philosophy which underpins the scheduler is to leverage as much of the core Opencart platform to ensure that all the features that the platform offers are available and usable in the context of the event scheduling/ticketing use-case.

The plugin has been built using VQMOD. Currently only English is supported as a language, if you are able to assist with translations please let me know so that I can provide you with the requisite VQMOD files to perform the translation.

At its heart the extension treats a product as an event, and a manufacturer as an instructor. Some of the important features:

  • Products are events
  • Manufacturers are instructors
  • Events have options which define what data is required for a booking, e.g. Timeslots, Attendee First Name, Attendee Last Name etc.
  • Bulk management of event roster is supported (through upload/download of excel-based templates)
  • Ticket redemption is supported through QR-Codes.
This plugin has been successfully used in a number of different use cases:

  • To run a health care conference, with attendee bookings
  • To manage internal company training courses
  • To manage demo and open days in the retail power tool space.
Below is a high-level overview of the entities that have been introduced as well as how the Opencart framework has been customised to achieve the outlined capabilities.


An instructor is an extension of the Manufacturer entity. Like a manufacturer, an Instructor may be associated with one or more events. Unlike a manufacturer, an instructor is also associated with a customer. The for this association is that an instructor is typically a person who has an address. Additionally, the following is relevant to instructors too:
  • Skills - The skills the instructor has, relate to their abilities.
  • Bio - An HTML-based bio of the instructor.
  • Availability Roster - Indicates when instructors are available. The roster is filled up as instructors are booked for events, or manually by administrators, for example when an instructor is on vacation.
The result is that is now possible to, for example, use the standard Opencart manufacturer/brand modules to search for events that are associated to a specific instructor.


The plugin takes the notion of products and extends them to be events, with manufacturers being extended to be Instructors. An event may or may not be associated with an instructor.


Product options are used to represent the data that must be captured for bookings, which provides for an extremely extensible framework that allows users of this plugin to configure whatever options are applicable to their specific use-cases. This means that one may configure a conference with a "meal_choice" option because you need to know what to cater for, versus a demo day which would need a "customer_type" option so you can determine which
Because product options are used to represent the attributes of the event, such as timeslots, attendee first name/last name etc, it is possible to provide extremely fine-grained control over quantities, if there is a limit on seat capacity, or if prices must be adjusted depending on options selected (for example Toast, versus Filet Mignon).


Each event has an associated roster. The plugin allows you to perform bulk import and export operations using Excel templates. Additionally, as is usual with any admin-side item listing, all the required filters are available to allow you to locate/manage your attendees. Finally it is possible to:
  • view and manage attendance status for attendees (ATTENDING, ATTENDED, DID_NOT_ATTEND etc).
  • issue email comms relevant to the attendee status.
  • edit the roster, and update any attendee's detail.
The population of the roster is based on the standard opencart ordering process, (see next section), hence it is not possible to remove an attendee. The export functionality is especially useful in the scenario where an event organiser wants to, for example, print out name tags/labels. The result is an excel spreadsheet containing all the attendee information.

Order Processing

Every booking made translates into an order that is placed in the system, which means that attendees booked as part of an order, are only added to the event's roster once the order reaches a "Processing" state, i.e. when stock deduction triggers. If an order was in "Processing" state and then moves out of this state, for example the order is cancelled, then the attendee is removed from the roster.

The plugin distinguishes between the person paying for the booking, and the attendees who the booking is being made on behalf of. These may be the same person (when a person is booking a seat for themselves, but ofteb they may be different people).

The plugin also introduces the notion of anonymous bookings, which is relevant if for example a seat is free. In this context, the plugin will automatically create a booking as soon as the customer has completed their form and clicks the "Add To Cart" Button. In this way the booking process is extremely painless and straightforward. (Note: Anonymous bookings may be enabled or disabled, depending on the use case requirements). Note 2: Enabling Anonymous Checkout requires the Free Checkout payment module to be enabled.

Email Communications

The system implements rich html-based email templates to support all aspects of the booking process. The email templates follow the standard mail merge approach, with keywords in the HTML templates being replaced to make the resulting emails relevant to the party/attendee being emailed. The email comms that may be configured are:
  • Booking Confirmation Email - when an order is placed and is moves into the "Processing" state, the associated attendees are added to the event roster. At this point the booking confirmation email process triggers and the booking confirmation email is sent.
  • Booking Reminder Email - sent a day (as configured) BEFORE the event takes place to remind the attendee that their presence is required at the event
  • Attended Email - sent POST event, assuming the attendee participated in the event.
  • Did Not Attend Email - sent POST event, if the attendee did not attend the event.
The administrator may decide which of the above templates are relevant for a given event, and is then able to disable/enable the relevant plugins.

Ticket Redemption

QR Codes are used to manage ticket redemptions. The comms templates mentioned in the previous section provide a [ticket_qrcode] function which means that the resulting email contains an inlined QR code specific to the seat for the event. The intention here is that when the attendee arrives at the event, the organisers can then scan the QR code which will then automatically update the attendance register to ATTENDED. The system also allows the administrators to control the redemption process, i.e. if the redemption process requires a logged in session, which customer groups are permitted to perform the redemption etc etc. The net result is that the plugin therefore allows the roster to be automatically updated.

Upcoming events module

The upcoming events module provides a rich set of customisations. It is possible to configure whether the module must render a summary of events (for example left column/right column) or full multi-language detail (center). It is also possible to specify a date range for the filters (for example to list "Events in 2017") or all upcoming events.

Client-side requested events

One of the more specialised use cases, but this allows customers in specific customer groups to request an event to be created - an example of this use case is when a student would like their lecturer to give a lecture on a specific topic. In this case the student will request an event, specify the skills/topics of discussion, the location as well as the desired dates when the event should take place.

Other features
  • Google Maps Address Integration - can be enabled/disabled. If enabled allows for addresses to be search, with the resulting match used to pre-populate address forms for Event Locations, etc.

Supported OpenCart versions


If you like what you see and would like to purchase it, please head on over to Opencart Event Scheduler Plugin



Demo Users


To log in as a normal customer (http://eventscheduler.opencartplugins.net):

  • Username: democustomer@opencartplugins.net
  • Password: demo

To log in as a customer who may request events or event requestor (http://eventscheduler.opencartplugins.net):

  • Username: event_requestor@opencartplugins.net
  • Password: event_requestor


To log in as a site administrator (http://eventscheduler.opencartplugins.net/admin):

  • Username: event_admin
  • Password: event_admin
To log in as a requested event approver (http://eventscheduler.opencartplugins.net/admin):
  • Username: approver
  • Password: approver
To log in as a requested event actioner (http://eventscheduler.opencartplugins.net/admin)
  • Username: actioner
  • Password: actioner


All resources available for download here:

Events - Past, present and upcoming - Detailed View

This is the detailed view of events that have occurred and are coming up.
Event Starts Ends Address Type
National Music Festival 2018-01-01 2018-01-02 09:00:00 Farmer's Market, Brooklyn
Farmer's Market, Brooklyn
87 Green Street
New York
New York
United States
40.73345829999999 , -73.95801319999998
event  View
Course 1 with Meal Choice 2018-07-26 2018-07-26 18:00:00 test detail
test detail
87 Green Street
United Kingdom
51.54501669999999 , 0.03192160000003241
training_course  View
EVT001 2018-09-29 2021-10-30 17:00:00
87 Green Street
Northern Cape
South Africa
-28.73631 , 24.742060000000038
training_course  View
My Sample Course 2021-03-09 2021-03-30 14:45:00
87 Green Street
United Kingdom
52.58621400000001 , -1.982919
training_course  View