Group Expiration

Overview

Expire course access for an entire LearnDash Group on a date you choose, and warn members by email before it happens. This is built for organizations that sell bulk course licenses for a fixed term.

When you sell a course license to an organization for a defined period — say, a one-year contract — this module lets you set a single expiration date for the whole group. On that date, course access is removed for every member, and you can notify members in advance so the cutoff isn’t a surprise.

Common use cases:

  • Annual or term-based bulk licenses sold to employers or schools.
  • Time-limited cohort programs where access should end after the program closes.

Configure It

Module-level settings

After enabling the module, set the defaults that apply across all groups:

  • Send expiry email notifications — turn the advance-warning email on or off.
  • Days before expiration to send the email — how far ahead members are warned. If you leave this unset, the default is 7 days.
  • Trash groups after expiration — whether expired groups are automatically moved to trash, and how many days after expiry that happens. This is purely housekeeping to keep your group list tidy.

Note: If a group’s expiry date falls within the “days before expiry” window at the moment you first set it, no expiration notification is triggered for that group. Set expiry dates comfortably in the future.

Per-group settings

Edit a LearnDash Group to set its expiration date. With the module enabled, an Expiration Date metabox appears — click the date field to pick a date from the calendar.

Where to find these settings (Toolkit Pro v4.4.1+): On the group edit screen, the Expiration Date field — and the Expiration Email box below it (when email notifications are enabled) — are reached through a dedicated Uncanny Toolkit tab in the LearnDash settings header. v4.4.1 added this tab so the settings stay easy to find under WordPress 7.0’s block editor, which otherwise collapses classic metaboxes out of view. The settings themselves are unchanged — only where you click to reach them.

To see expiration status at a glance, go to LearnDash LMS > LearnDash Groups. A new Expiration Date column shows the upcoming expiry date, whether the notification email has been sent, or the timestamp of a past expiration.

Customizing the notification email

Below the expiration date field, the Expiration Email metabox lets you customize the email subject and body. You can insert these variables into the body (they are case-insensitive):

  • %Display Name%
  • %LearnDash Group Name%
  • %Expiration Date%

Use the Test Email button to send a sample to your own email address (the logged-in user clicking the button) before going live.

Shortcodes

Display expiration information to members anywhere on your site.

ShortcodeWhat it outputs
[uo_group_expiration_date]The expiration date for the current user’s group. Works automatically when the user is in exactly one group that has an expiry date.
[uo_group_expiration_date group_id="1234"]The expiration date for a specific group. Use this when a user belongs to multiple groups with expiry dates, or to target a particular group.
[uo_group_expiration_in]A countdown of the time remaining until expiration. Accepts the same group_id parameter.
[uo_group_expiration_in pre-text=""]The countdown with custom lead-in text before the time remaining.

Note: The expiration date continues to display even after the expiration date has passed.

Usage notes

  • Use future dates. Expiration only takes effect for dates in the future. Courses are removed at midnight on the expiration date.
  • Reactivating an expired group requires a manual step. Setting a new future date reactivates the group, but courses are not restored automatically — you’ll need to re-add them to the group manually.
  • Emails depend on site traffic. Notification emails are triggered by a WordPress cron job that runs on site visits. On infrequently visited sites, emails may be delayed.
  • Auto-trash timing. The “Trash groups after expiration” delay defaults to 365 days after expiry (not a small number — set it to suit your retention needs). Once a group is in the trash, WordPress permanently deletes it on its own default schedule (30 days, unless your site changes EMPTY_TRASH_DAYS); this module only moves the group to trash, it does not permanently delete it.

25 thoughts on “Group Expiration”

    1. Hi Jean, it depends on who you want to have access to the data. The data isn’t deleted. Admins can still access it, Group Leaders cannot.

    1. LearnDash only supports course expiration and our plugin only adds group expiration support. Even if you could set expiration behaviours for lessons, topics and quizzes, access to a course through the group would override it anyway (I mention that since the comment is posted for a group article).

  1. Can a learner register with a code for an expired group? Also, what can a learner who is a member of an expired group expect to see or be able to access if they log in after the group expires, i.e., courses, course certificates?

    1. Learners could register for a group with a valid code, yes. Expiry just means all courses were removed from the group. So while the user would be added, no access to courses would be granted. A user with no course access could see certificates but could not access courses.

  2. Hi,
    When I create a group and assign the learn dash course then I set the expiry date to that group.

    If Group is expired at the same time the course access will expired is that right?. So users should not access those courses.

    Kindly guide me

    1. Hi Nachi, the best way to reach us with support questions is via support ticket from your account or email to [email protected].

      This module for group expiration effectively removes course access and reporting for the group on the expiration date. Students will no longer have access to courses granted by the group after expiry (unless they are enrolled in the individual courses as well, in which case they will retain access). Let us know if you still have questions about the process.

  3. I’d love to see an option to set a default expiration message. Currently if I turn this feature on the body of the email message is empty. Since group access is a product I’m selling there are potentially many groups being created, each of which needs a default group expiration message entered.

    1. Hi Kent, we’ve had a few requests for this. We’ll see if we can include something in future, as there have been a handful of similar requests. Thanks for your feedback.

  4. Hi,

    Is it possible to set the expiration depending on the user’s enrollment day? We would like to set courses to expire after one year from enrollment, not spesific date and would like to know if its possible with this module. Thank you in advance.

    1. That is unfortunately not possible. It is something we’re considering for a future release but there is some associated complexity.

  5. Hi, I am assuming this is still limited to “date only”, no time, correct? If so, can you please clarify what time it expires? So if it’s set to expire 12/19, will it be midnight Eastern time or server time or whatever time zone you are in?!

    Also, can you clarify a comment you make above about “removes course access and reporting for the group on the expiration date. Students will no longer have access to courses granted by the group after expiry (unless they are enrolled in the individual courses as well, in which case they will retain access)”- how would I have to manage my settings in order to enroll students in the group, but not the course? i am not following that, I don’t think…
    I do have a group with just 1 course and that group is set to expire, limiting access. But I am now worried that users still have access due to being enrolled in the course. Can you clarify the process for me? Thanks so much!

    Helma

    1. Hi Helma,

      You should see the time of expiration (midnight) and day on the edit group page; see this screenshot: https://www.uncannyowl.com/wp-content/uploads/2016/07/group_expiration.png. It will go by WordPress time.

      If users are in a course directly then their access won’t change. This expiration option removes courses from the group on the expiration date, it does not modify individual user access. So, if users have access independent of the group, they will retain it–and this is the normal and expected approach. If you manage course access independently then reports for the users for individually enrolled courses wouldn’t show up for Group Leaders anyway so the value of using groups wouldn’t really be there.

  6. Our users need to repeat courses every year. If we set an expiry date for a course when we give them a new code they cannot gain access to the course as it still shows as expired. If we remove them from the original group and add them to a new group they cannot start the course again as it shows their original progress.The only way to do it is to manually delete their data from the backend but this is hugely time consuming.
    This is a major problem for us. Please can you advise on how we could surmount this problem.

    1. It’s unfortunately a common problem for LearnDash users; the answer really depends on how you prefer to grant users access to the course again. Have a look at https://www.uncannyowl.com/annual-compliance-programs-with-wordpress/ as a starting point, it is older but has some guidance that’s still applicable. The Toolkit Pro has the progress reset module that allows users to self-reset progress when starting a new year for the course, then Uncanny Automator offers more triggers for reset (most commonly repurchase of a course).

  7. Thank you for changing the expiration time to be midnight *WordPress/website time* instead of UTC!!
    That is such a great improvement for us and we so appreciate it.
    Warmly,
    Sally

  8. Hi there, is it possible to set expiration date per enrolled user, so for example:
    Person 1 has 7 days to complete
    Person 2 has 10 days to complete
    etc
    Thanks
    Adam

    1. It wouldn’t work with this module, I’m afraid. If you use additional plugins (e.g. WP Fusion, Uncanny Automator) there are some options that would allow you to control group removal/expiration on a more granular basis.

  9. Hi Ryan,

    Great option! Will the expiration date remove the members of the group to all their assigned courses? Or will it only remove the members from the course linked to the group?

    Thanks

    Linda

    1. Hi Linda, the expiration effectively removes courses from the group on expiration, which thereby removes access to courses associated with the group (assuming the user isn’t also individually enrolled in the courses). Hopefully that clarifies things a bit.

  10. Parth Kundariya

    Hi Guys,

    I just wanted to notify admin or some list of people for expiration of group access. I do not want to notify group leaders and users.

    Is that possible?

    Thanks
    Parth

    1. Good question. Right now this is not possible, emails go to Group Leaders or students in a group only.

      We have captured your request (add a setting to the module to only send expiration emails to the site admin–we would start with that) and will consider it for a future release.

Leave a Reply

Your email address will not be published. Required fields are marked *

Uncanny Toolkit Pro for LearnDash

30 powerful modules for LearnDash professionals. Our most popular plugin!

Scroll to Top