How WP-Tonic Connected a Third-Party eCommerce Platform to Multiple LifterLMS Installations Using OAuth
About the Project
Faith Life Now - https://faithlifenow.com/, a large faith-based institution that includes a church, training programs, and a variety of other Christian Ministries was moving their courses from Kajabi into two WordPress installations configured with LifterLMS as the Learning Management System (LMS).
They manage all sales (eCommerce and a physical call center) through a third-party provider dedicated to supporting the faith-based community. Part of the project would be granting access to the WordPress installations via the third-party portal.
They also wanted additional functionality that went beyond what LifterLMS currently provides, so customization was required, and they wanted to have a MailChimp email drip sequence to accompany the courses.
Four Key Pieces of the Project
There were four key pieces to completing the project, and each piece had multiple requirements and steps.
- Create the ability to login to a WordPress Installation using a code passed from a third-party provider.
- Create a new WordPress installation to serve as a portal for the other installations.
- Extend the functionality of LifterLMS to meet the customer’s requirements.
- Configure MailChimp to provide a drip email sequence to students of the courses.
Part 1 - Login to WordPress Based on a Third-Party Code
In this case, a third-party provider managed the eCommerce sales and the main customer login was on their site. Each purchase within this site is marked by a classCode.
A custom plugin was created that used OAuth to pass the classCode and login to the WordPress installation with the username/password from their eCommerce platform.
When a person attempts the login to the WordPress installation, if they have a valid classCode a new user account is created and they are granted access using their user information from the third-party site.
Part 2 - Create a WordPress Installation as a Portal
This project is part of a larger one designed to pull together the various programs run by this organization. The customer wanted a single Landing Page where students could go to access any of the programs available.
They also wanted people to be able to login to this portal and automatically be logged into their other available courses.
To accomplish this, a WordPress installation was configured with a single page consisting of images that link to each program.
The plugin Share Logins Pro was used to log people into each WordPress installation for which they have access. https://codexpert.io/product/share-logins-pro/
To complete this, a person would have to login to each installation once in order to create their user account in that specific installation of WordPress. Afterwards, when they login or log out of any installation, they are logged in/out of all.
Part 3 - Extend the Functionality of LifterLMS
The customer had two different WordPress installations each running LifterLMS.
The first installation contained was a series of courses. The second was a recurring revenue, membership site with multiple courses within the membership. The courses could be taken in any order, but a student could only take one course at a time.
Managing LifterLMS with Several Courses in a Series
The customer configured the LifterLMS website and created the courses within the website. Because the customer wanted people to be auto enrolled in all of the courses in the series, we recommended configuring this as a membership with the series auto enrolled to anyone with access to that membership. The classCode authorization granted access at the membership level not the course level.
Although students were auto enrolled in all courses, they were required to take the courses in a specific order and to pass a quiz before moving on to the next course. LiftLMS core functionality was used to create this flow.
An additional requirement for this installation was for the students, who started the program in Kajabi, to maintain their current progress within the course series.
This was done by creating classCodes for each piece of the course series and applying the appropriate code to the student in the payment processor’s system. Custom programming was required to grant access within the LifterLMS/WordPress installation making sure that what they had completed in Kajabi showed as completed and that access was granted to the place where they
Because there were limitations set, for example, on one installation a quiz had to be passed before a person could move to the next course in the series, a simple timed drip sequence did not work.
In the above case, we used the WP Fusion plugin to set a tag in MailChimp when the quiz was passed in order to send the next email in the sequence.
While people can be set to join a MailChimp list upon course enrollment within LifterLMS, WP Fusion extends the functionality allowing your website to sync MailChimp tags with the site and apply those when people complete lessons, quizzes, and courses.
Ongoing Work for the Customer
The customer is continuing to build new programs, some of which will be incorporated into the portal landing page, and all that will require the authorization based on the third-party system. Because this was created as a custom plugin, the functionality can be configured within new installations more easily.
By using a combination of LifterLMS core functionality and custom programming along with premium plugins, WP-Tonic was able to create a learning environment that met the customer’s needs
without the requirement of a building a complete custom application. left off. Furthermore, the appropriate MailChimp tags had to be set so that the email drip was also in alignment with their progress.
Managing LifterLMS with Several Courses Not in a Specific Series
This installation consists of a recurring membership. Payment is taken through the third-party processor and the classCode is set. If the person cancels their membership, the classCode is removed at the payment processor’s level. WP-Tonic confirmed that if the classCode was removed at the top level, it would remove access to this installation.
For this configuration, a membership was created within LifterLMS and the courses available were set to auto enroll for anyone in this membership.
The classCode authorization granted access at the membership level not the course level.
WP-Tonic customized LifterLMS to limit students to taking one course at a time. The core functionality of LifterLMS was used to drip the course content out on a weekly basis.
LifterLMS was also customized to allow a student to request that the course they were taking be cancelled so that they could start a new course. It was set so that the student could request the cancellation and site administrators could cancel the student’s registration in the class.
Other LifterLMS Customizations
Allow administrators to set a course, lesson, quiz, or assignment to complete or incomplete for a student. This was created and added to the student reporting screen within LifterLMS.
Change the names of buttons in the LifterLMS application based on customer request. This was done via translation as shown within the LifterLMS documentation. https://lifterlms.com/docs/how-do-i-customize-the-text-of-lifterlms-buttons-and-more/
Configure MailChimp for Email Drip
The customer had highly customized email messages that they wanted to send throughout the courses. This went beyond the basic achievement emails available in LifterLMS, so MailChimp was configured to manage this. The customer was already using MailChimp for their email marketing and wanted to stick with the platform.
"We were looking to move away from Kajabi to WordPress and LifterLMS and we needed a partner who could help us with that along with some complicated custom coding requirements. We also needed help with some difficult marketing automation between LifterLMS and MailChimp.
WP-Tonic have been just fantastic to work with and have been very professional and helpful. We have no hesitation whatsoever in recommending them."
Jennifer Loe & Dan Salt of The Faith Life Church of New Albany, Ohio