Selling Courses as a Subscription

WooCommerce Paid Courses integrates with WooCommerce Subscriptions, enabling you to accept recurring payments for continued access to your course(s).

Sell a Course as a Subscription

To sell a course as a subscription, ensure that both WooCommerce and WooCommerce Subscriptions are installed and activated. Then follow these steps to create a subscription product:

  1. Go to Products > Add New.
  2. Add some product details including a title and description.
  3. In the Product data meta box that appears below the editor, select Simple subscription from the Product Type dropdown. (Note that you can also create a Variable subscription product as described here.)
  4. Select the Virtual checkbox (this will remove shipping information at checkout).
  5. Set the terms for the subscription including price, billing interval, billing period, length, sign-up fee and trial period (length, sign-up fee and trial period are all optional).
  6. Click Save Draft or Publish the product.

Configuring a simple subscription product

Now you’ll need to associate the product with the course(s) you’d like to sell as a subscription:

  1. Go to Courses > All Courses and click on the course you would like to attach to your new subscription product.
  2. In the WooCommerce Product dropdown in the right sidebar, select the product to link to the course.
  3. Click Update to save.
  4. Repeat the above steps for any other courses you’d like to sell as part of this subscription.

Sensei WooCommerce Product metabox

Congratulations! You are now ready to accept recurring course payments – revenue you can count on!

Getting Started with WooCommerce Paid Courses

Are you ready to sell your first course with WooCommerce Paid Courses? This document will help you get started.

How do I install WooCommerce Paid Courses?

  1. Download the WooCommerce Paid Courses file from your WooCommerce account.
  2. Go to Plugins > Add New.
  3. Click on Upload Plugin and then on Choose File.
  4. Browse to the location of the file that you just downloaded.
  5. Click Install Now.
  6. Click Activate Plugin.

Congratulations! You’re now ready to sell courses with WooCommerce!

How do I update WooCommerce Paid Courses?

To receive updates and support for WooCommerce Paid Courses, you will need to connect your site to your Subscriptions. Once a connection has been established, updates for WooCommerce Paid Courses will be made available to your site for as long as the original subscription remains active.

I completed the setup process, now what?

To begin selling standalone courses with WooCommerce Paid Courses, you’ll need to link a course with a WooCommerce product.

If you’d like to accept recurring payments and more easily predict the revenue you’ll receive, you can sell your courses as part of a subscription.

I need more help! What should I do?

If you’re having trouble with WooCommerce Paid Courses, there are a couple of options available to you:

WooCommerce Paid Courses FAQ

Looking for answers about WooCommerce Paid Courses? This document should help.

What is WooCommerce Paid Courses?

WooCommerce Paid Courses is a paid extension for Sensei LMS that enables you to sell online courses with WooCommerce. It requires Sensei LMS to be installed.

What is Sensei with WooCommerce Paid Courses?

Sensei with WooCommerce Paid Courses is a bundle of two separate plugins — Sensei LMS and WooCommerce Paid Courses. Because Sensei LMS comes pre-bundled, Sensei with WooCommerce Paid Courses does not require Sensei LMS to be installed separately (but it will still work if it is).

What Are the Requirements for Using These Plugins?

Both WooCommerce Paid Courses and Sensei with WooCommerce Paid Courses require:

  • PHP 5.6+
  • WordPress 4.1+
  • WooCommerce 3.0+ in order to sell courses and receive product updates has more information on how to update your site’s version of PHP.

Do I Need WooCommerce Paid Courses?

If you’re not selling courses, we recommend that you install Sensei LMS from the directory instead.  WooCommerce Paid Courses is only necessary if you would like to sell your courses with WooCommerce, WooCommerce Memberships or WooCommerce Subscriptions. (Please note that WooCommerce Paid Courses does not include these third party plugins. You will need to install them separately.)

How Do I Switch to the Free Version?

If you decide to use the version of Sensei LMS that is on, you will need to update any Sensei extensions you may already have installed to version 2.0.0 or higher. Older versions of extensions are not compatible with the version of Sensei LMS that is on

You will also need to ensure that the Delete data on uninstall setting in Sensei LMS > Settings is NOT checked before deleting WooCommerce Paid Courses or Sensei with WooCommerce Paid Courses. Otherwise, your course data would be deleted when the plugin is uninstalled. To be extra safe, consider backing up your site before uninstalling.


Sensei has a selection of extensions to complement your WordPress Learning Management System experience:

  • WooCommerce Paid Courses – Sell your online courses with WooCommerce.
  • Content Drip – Keep control of the learning pace of your students by releasing course content at regular intervals.
  • Course Progress – Help your students see, at a glance, which lessons they have completed and which they have yet to take.
  • Certificates – Award your students with a certificate of completion once they finish a course.
  • Media Attachments – Attach supplementary material as media files to courses and lessons that your students can download.
  • Course Participants – Show your site visitors how many students are currently taking each course.
  • Share Your Grade – Allow your students to share their progress on social networks after completing a lesson or course.

The following extension is deprecated and no longer supported:

  • Sensei BadgeOS –  Let learners earn achievements and badges from every course, lesson and quiz activity.


Sensei Content Drip

Installing the Extension


The Sensei Content Drip extension allows you to “drip” your course content to your learners, based on a fixed schedule, so you can control the pace at which learners progress through the course material.

Setting your Content Drip options

There are two different ways you can drip your content.

  1. Based on the date the learner starts the course. e.g. Learner starts the course. Lesson 1 is available immediately. Lesson 2 is available 1 week later, and so on.
  2. Based on a fixed start date. e.g. Lesson 1 is available from 1st September, Lesson 2 from the 8th September, and so on.

Dripping content based on the date the learner starts the course

To use this method, you should first decide how many lessons will be available to the learner as soon as they start the course.

Say you want only Lesson 1 to be available immediately, and each subsequent lesson to become available after 1 week intervals.

  • Lesson 1 would be published as normal. The ‘Sensei Content Drip’ panel can be left blank.
  • Then you would edit Lesson 2, and in the ‘Sensei Content Drip’ panel, where it says “When should this lesson become available?” select A specific interval after the course start date.
  • (If you haven’t assigned the lesson to a course yet, you’ll need to do that and save the lesson before continuing).
  • Then select the time interval for this lesson – (e.g. choose Week(s) and enter a 1 in the text field).
  • Finish editing your lesson and click Publish/Update
  • Repeat the process for Lesson 3, setting the interval to 2 weeks instead of 1.


You would then do the same for Lesson 4, Lesson 5 and the rest of your lessons, increasing the interval for each lesson by a week (this interval can vary if you want, or you can keep it consistent for each lesson.)

Dripping content based on a fixed start date

This method can be used if you are running a “live” online course, where you want your learners to take the course all at the same time, over a specific period of time.

For example, say you want your course to begin with Lesson 1 on 1st September, and each subsequent lesson to become available after 1 week intervals.

  • Edit Lesson 1, and in the ‘Sensei Content Drip’ panel, where it says “When should this lesson become available?” select On a specific date.
  • Then enter the start date for this lesson in the format dd/mm/yyyy, e.g. 01/09/2014 (or click the arrow to select the date from a calendar).
  • Finish editing and save/publish the lesson
  • Then do the same for lesson 2. Here you can either enter a fixed date again, e.g. 08/09/2014, or you can select A specific interval after the course start date, (recommended*) and set it to be dripped 1 week after Lesson 1 (this will result in the same schedule since Lesson 1 is available on a fixed date).


The advantage of setting only your first lesson to a fixed date, and dripping the subsequent lessons based on an interval after the start date, is that if you want to offer the same course again in future, you only need to change the date of the first lesson and the content drip schedule will still be set accordingly for the subsequent lessons.

Reviewing the drip schedule

If you lose track of the drip schedule for the lessons in a course, it’s easy to see the schedule by visiting Lessons > All Lessons.

Just filter the list to show only the lessons from the course you want, and then you can see the drip schedule in the Drip Schedule column:

Content Drip Schedule
The drip schedule in Lessons > All Lessons

Overriding the Content Drip Schedule

You can override the content drip schedule if you want to give a user access to any lesson before it is scheduled to become available for them.

  • Go to Sensei > Learner Management
  • Click ‘Manage Learners’ on the relevant course.
  • In the Manual Content Drip panel, select your desired user.
  • Then select the lesson you want to give them access to.


If a learner has already been given access to a lesson, when you select that learner and that lesson, the ‘Give Access’ button will change to ‘Remove Access’.

The User Experience

When a user starts a course that uses Content Drip, they will be able to access any lessons that are set to become available “as soon as the course is started”.

For any lessons restricted by the Content Drip schedule, users will see a notice telling them when the lesson will become available to them:


As soon as the drip interval has passed, the learner will then be able to access the lesson as normal.

Learners will also receive an email notification on any day that a lesson is due to become available. The email will list all lessons that will be available that day.

Lessons become available at 00:00 on the date they are due, so for example, if they started the course at 11:30 on Monday, and the interval is set to 1 week, then the next lesson will become available at 00:00 the following Monday.

Content Drip Settings

If you go to Sensei > Settings you will see an additional submenu for Content Drip with several settings:

  • Drip Message – Here you can customize the message shown instead of the lesson content, on any lessons that aren’t yet available. You can use the [date] shortcode to insert the date that the lesson will become available.
  • Email before lessons – Here you can customize the message in the content drip notification email for lessons that will become available today.
  • Email footer – Here you can customize the text in the email footer. You can use the [home_url] shortcode to insert a link to your homepage.

Hooks & Filters

Developers can make use of the following filters in their themes/plugins:

sensei_content_drip_lesson_message – Filter to change or alter the message a user will see when content has not been dripped yet. Parameters passed: $drip_message

scd_is_drip_active – Manually override the is_drip_active check. The value tells us if a drip is active on the given lesson. Parameters passed: boolean $dripped , int $lesson_id .

scd_drip_message_date_format Change the date shortcode [date] the user will see when the lesson is has not been dripped yet. Parameter passed : string $date_format (php date format ‘l jS F Y’)

plugin_locale – Filter to change the pugin locale. Parameters passed: string $locale , string $plugin_domain.


Can you give learners manual access to lessons?

Yes, The plugin allows you to give manual access under Sensei > Learner Management

What happens when a lesson drips?

The plugin is stateless in that it doesn’t have any events when a lesson drips. However when a user checks the lesson the drip settings will be checked to see if a user is allowed access. When the time has passed, according to the settings, the user will be granted access. The same happens for the daily emails. All lessons and users are checked to confirm if the lessons are dripping.

Does it use GMT /UTC for time?

It uses the server time, which varies depending on your server location.

How is access granted?

Access is granted by confirming the lesson drip settings and then verifying whether the user qualifies to gain access.

How do the Cron jobs work?

Cron jobs run every day at the time the plugin was installed. On installation, the Cron job gets added with the current server time. We use the WordPress cron job API, which is not very accurate as it depends on your website visitors. Please see this link if you need to use a more accurate Cron job runner:

What happens when a subscription is cancelled?

If you’re using WooCommerce Subscriptions and the subscription is cancelled, the data stored for Sensei will remain intact. The Drip data will also remain intact. If the subscription is reactivated, it will be as if they’ve never left. In the time that has passed some lessons may have become available to the user. Once they regain access to their courses, the lessons dripped during their time away will become available immediately.

Date Formatting

The date function is formatted using this WordPress function:


To change the date format you can use this filter:

apply_filters( 'date_i18n', $j, $req_format, $i, $gmt );

Sensei Share Your Grade

Installing the Extension

Using the Extension

Once installed and activated, Sensei Share Your Grade will add a sharing panel to the end of any lesson or quiz your learner has passed:

Sensei Share Your Grade
Sensei Share Your Grade

It will also add the panel to the course results page of any course that has been completed.

Sharing Buttons

Buttons are provided for sharing on Twitter, Facebook, Google+ and LinkedIn.

The Tweet button will create a prepopulated tweet, detailing the lesson completed along with the grade, and a link to the course.

The other buttons simply share a link to the course page, so your learners have to provide their own sharing message if they want to tell people what grade they achieved.


There are no settings for this extension


If you are testing your site in a local environment, the buttons may not work as expected. Please test them on a live site before submitting a support ticket.

Sensei Course Participants

Installing the Extension

Using the Extension

The Sensei Course Participants extension shows visitors how many people are currently taking a course.

Once installed and activated, you will see a message on course archive pages and single course pages displaying the current number of learners taking the course:

Course Participants
See at a glance how many learners are taking a course

There is also a Sensei Course Participants widget you can add to any widget area, via Appearance > Widgets.

Sensei Course Participants
Sensei Course Participants widget

The widget will display on course, lesson and quiz pages, and will show the display names of all learners taking the current course.

If your site has public learner profiles enabled, the names will also link to the learner profiles.

The widget will also display the learners’ gravatar image if they have one.

Widget Settings

All of the settings for this extension are within the widget itself. You can set a custom widget title, and change the image size and the order of the learners.

You can also set a limit on the number of learners displayed initially, and then the rest of the learners can be shown with a ‘view all’ link at the bottom of the widget.

Finally you can choose to display the learners as a list (with names) or as a grid of images (without names).

Sensei Course Progress

Installing the Extension

Using the Widget

The Sensei Course Progress extension is a simple widget you can add to your sidebar to display your learners’ current progress within a course.

To add the widget to your site, go to Appearance > Widgets, and drag the Sensei – Course Progress widget from the left, to any of your widget areas on the right. (The widget works best in a sidebar so it displays alongside your lesson content).

The widget will only display on lesson and quiz pages, and will show learners all the lessons in the current course. It will also indicate which lesson they are currently viewing, and which lessons they have already completed:

Sensei Course Progress
The Sensei Course Progress sidebar widget in action

There are no settings for this extension.

Sensei BadgeOS

IMPORTANT NOTE: Sensei BadgeOS is no longer being developed or supported.

The “BadgeOS Sensei Add-on” lets learners earn achievements and badges from virtually every course, lesson and quiz activity available in the Sensei learning management system.

You set the rules or steps required, and learners automatically earn badges when conditions are met. The add-on creates a seamless bridge between Sensei and BadgeOS™, the powerful free plugin to WordPress for creating and managing achievement-driven sites, communities, and experiences.

You can download this extension here


  • Upload, activate and configure the free BadgeOS plugin available from
  • Unzip and upload the ‘badgeos-sensei’ plugin folder to your /wp-content/plugins/ directory
  • Activate the extension through the ‘Plugins’ menu in WordPress
  • Add Sensei activity requirements to any new or existing achievement item using the “Earn by” > “Completing Steps” option for any achievement. In the “Required Steps” manager, choose “Sensei” and configure the achievement as desired.
  • Enter the Credly credentials for the badge issuer in the ‘Credly Integration’ settings of BadgeOS ‘ to enable lifelong badge management and storage for users via Credly.

For more information on installing and managing plugins see here.


You can set up Badges and Achievements that can be awarded for any of the following Sensei activities:

 Enroll in:

  • a specific Course
  • any Course
  • a course from a specific category
  • a course from any category


  • Pass a specific Quiz
  • Pass any Quiz
  • Achieve a minimum score on a specific Quiz
  • Achieve a minimum score on any Quiz


  • Complete a specific Course
  • Complete any Course
  • Complete a course from a specific Course category
  • Complete a course from any Course category


  • Complete a specific Lesson
  • Complete any Lesson

Badge Configuration

Once you have one or more Sensei activities created (such as a Course, Lesson or Quiz), visit the BadgeOS menu to create or edit Badges and/or other Achievements that can be earned by completing Sensei milestones.

You can create entirely new Achievement Types that relate to your Sensei learning activities, or simply use the default “Badges” option available in BadgeOS.  Let’s assume you are creating a Badge.

          1. Visit the “Badges” option in the BadgeOS menu.
          2. Click “Add New” at the top of the page to add a new badge.
          3. Use the title field for a Badge name, and the main body area for a badge description. Excerpts are suggested, too.
          4. Under the “Achievement Data” section, be sure you set the “Earned By” menu set to “Completing Steps“.

            Set "Earned by" to Completing Steps
            Set “Earned by” to “Completing Steps” for the achievement you are creating.
          5. Scroll down to the “Required Steps” section, and click “Add New Step“.
          6. From the “require” pull-down menu, choose “Sensei Activity”.
BadgeOS Sensei Activity Option
Look for the new “Sensei Activity” menu in your BadgeOS “Required Steps” manager.
          1. Then choose the Sensei activity that will be a condition for earning the badge. Some options will automatically expose additional menu choices. Decide how many times the activity must be completed (1 time is the default), and optionally add a descriptive label that describes the step (otherwise, the system will auto-generate one for you if you).

Make any Sensei activity an achievement worthy of a digital badge.

          1. If you wish to add more required steps, click “Add New Step” and repeat. Note that you can add both Sensei activities or any other supported actions on your site. Each step you create will become an additional required condition that must be completed before the badge is conferred to your users.
          2. When you are done adding steps, be sure to click “Save all Steps“, and then click Publish or Update for the badge to save the post.


How do learners see what badges they have earned?

One way is to enable the ‘BadgeOS Earned User Achievements’ widget from “Appearance > Widgets”. As users earn badges, they will see them appear in the widget.

BadgeOS Earned User Achievement Widget
Use the “BadgeOS Earned User Achievement Widget” to display badges and achievements to learners as they earn them.

Users can also see what badges they have completed on any page that uses the BadgeOS shortcode for displaying achievements. Completed achievements are shown in full color and unearned achievements are greyed out, and a menu lets users filter accordingly.

Another method is to use the free BuddyPress plugin in connection with the free Community Add-on to BadgeOS. This allows all or select badges to appear on user profile pages and activity feeds on your site.

How can I review and manage what badges have been issued to specific users?

Visit any user’s profile from the WordPress Users menu located on your site at /wp-admin/users.php. Look for the “Earned Achievements” section, where you can see all of the achievements already earned, revoke a badge if necessary or manually give an achievement.

How do I display a list of available achievements to users?

Add the BadgeOS shortcode for “List of Achievements” to any post or page. Several parameters are available, such as the ability to show just achievements of a certain type, or of selected types.

Any ideas for making badge images?

Yes! You can start at and use the badge builder there to create beautiful looking badges.

Can badges created for Sensei activities be sent to Credly?

Yes. Visit Credly Credly — the web service for displaying, storing and managing lifelong credentials — to create a free account to link to your Sensei site. Visit the “Credly Integration” settings in the BadgeOS menu on your WordPress site to connect the site to Credly. You can decide on a badge-by-badge basis which Sensei-linked achievements should be sent to Credly when earned by your site members. Learn more.



Getting a ‘Page not found’ or 404 message for a new achievement type.

Visit your WordPress permalinks page and click the button to update the settings (even without making any edits to your settings). That should do the trick.

How do I install and configure BadgeOS, and learn more about how to use it?

Check out a series of getting started Tutorials on the BadgeOS project site.

Sensei Media Attachments

Sensei Media Attachments is an extension for the Sensei plugin. You must have Sensei installed in order for it to function.

Installing Sensei Media Attachments

  1. Download the plugin to your computer
  2. Login to your WordPress admin panel, and go to Plugins > Add New
  3. Go to Upload > Choose File and browse to the folder where you downloaded the Sensei Media Attachments plugin file.
  4. Double-click the plugin file, select Install Now and then Activate the plugin.

Sensei Media Attachments Overview

Sensei Media Attachments enables you to attach media files to your courses and lessons in Sensei.

Attaching Media Files to a Course/Lesson

After installing the plugin, when editing either a course or a lesson, you will see a new Course Media / Lesson Media panel:

Course Media
The Course Media panel in a course edit screen

To attach a media file to a course/lesson:

  • In the Course Media / Lesson Media panel, click on the first Upload File button.
  • Click Upload Files > Select Files
  • Select the media file from your computer and double-click on it to upload.
  • Click Select once the file has finished uploading.
  • You can click the other Upload File button to attach another media file.
  • If you need to attach more than two files, click the Add More Files button, and you will be able to upload additional files.
  • When you’ve finished uploading files, update the course/lesson.

Attached files will be displayed as a list of links under a Course Media / Lesson Media heading on the course/lesson page:

Course Media Display
Media attachments on a course page

Removing Attachments

To remove a media attachment, simply delete the file URL from the Course Media / Lesson Media panel, and update the course/lesson.

Supported File Types

All file types are supported.

File Size Restrictions

The maximum file upload size is determined by the limits set by WordPress and your server. See here if you find you need to increase those –