notifications plugin for Tutor
Tutor plugin for Open edX notification jobs on Verawood / Tutor 22.x.
This repository provides the Tutor plugin notification-jobs to automate the following management commands:
Course updates
Recurring nudges
Scheduled instructor tasks
This plugin exposes manual Tutor jobs for all of them and, on Kubernetes, creates CronJobs for daily course updates and recurring nudges, plus hourly scheduled instructor tasks.
Course updates (aka course highlight emails)
If your Open edX system adminstrator has configured your instance of the Open edX platform to send course highlight emails, you can send automatic email messages to learners in your course that contain three to five “highlights” of upcoming course content. A highlight is a brief description of an important concept, idea, or activity in the section. Your Open edX system administrator provides the template for this course highlight email, and you enter the highlights for the email in Studio.
To learn more about this feature, see Course Highlight Email.
Recurring nudges
Recurring nudges are emails that are sent 3 and 10 days after a learner enrolls in a course.
To learn more about this feature, see Recurring Nudges.
Email notifications
On Verawood, notification tray integration is provided by tutor-mfe. The separate tutor-contrib-platform-notifications plugin is no longer needed.
Open edX schedules daily and weekly notification digests automatically through delayed Celery tasks when notifications are created. This plugin does not schedule digests; the send_email_digest management command is deprecated.
To learn more about this feature, see Email Notifications.
Installation
Install this plugin:
pip install git+https://github.com/aulasneo/tutor-contrib-notifications.git
Usage
Enable the jobs plugin and regenerate the environment:
tutor plugins enable notification-jobs
tutor config save
tutor {local|k8s} start
This plugin adds the following manual jobs:
tutor {local|k8s} do process-scheduled-instructor-tasks
tutor {local|k8s} do send-course-update
tutor {local|k8s} do send-recurring-nudge
For Kubernetes users, this plugin sets up CronJobs to run course updates, recurring nudges, and scheduled instructor tasks at the configured schedules. Users of a Tutor local installation will still have to configure cron outside Tutor.
Upgrading from Tutor 21
Disable the old notifications plugin before uninstalling tutor-contrib-platform-notifications. Use tutor-mfe for notification tray integration on Tutor 22.
Remove external cron entries calling send_email_digest, send-daily-digest, or send-weekly-digest.
Remove the unused NOTIFICATIONS_SEND_DAILY_DIGEST, NOTIFICATIONS_SEND_WEEKLY_DIGEST, and NOTIFICATIONS_WEEKLY_SCHEDULE keys from your Tutor configuration.
Run tutor config save and tutor k8s start to update the remaining Kubernetes jobs. Delete the obsolete weekly-emails CronJob if it still exists in your Tutor namespace. If both course updates and recurring nudges are disabled, also delete any existing notifications-emails CronJob.
The NOTIFICATIONS_DAILY_SCHEDULE setting is retained for course updates and recurring nudges.
Configuration
NOTIFICATIONS_DAILY_SCHEDULE: Set the schedule for course updates and recurring nudges. Default is “<random-minute> 10 * * *” (every day at 10 UTC, with a randomized minute).
NOTIFICATIONS_INSTRUCTOR_TASKS_SCHEDULE: Set the schedule for scheduled instructor tasks. Default is “<random-minute> * * * *” (every hour, with a randomized minute).
NOTIFICATION_JOBS_SITE_DOMAIN: Optional site domain passed to send-course-update and send-recurring-nudge. Default is “{{ LMS_HOST }}”. Set it to an empty value to run those jobs for all sites.
NOTIFICATIONS_SEND_COURSE_UPDATE: Enable course updates. Default is True.
NOTIFICATIONS_SEND_RECURRING_NUDGE: Enable recurring nudges. Default is True.
Notes:
The daily email CronJob is only generated when course updates or recurring nudges are enabled.
The default randomized minute spreads CronJob launches across clusters with many sites, which helps avoid large bursts of pods starting at the same time.
If you want a fixed execution time instead of a randomized minute, set the corresponding schedule variable explicitly in your Tutor config.
After changing the schedules, you will need to restart the cronjobs with tutor k8s start.
Development
In your Python virtual environment, install the development dependencies and run the checks:
make requirements
make test
You can select a specific virtual environment with make requirements test PYTHON=/path/to/venv/bin/python. Packaging checks and Tutor integration tests use temporary directories, leaving your workspace’s config.yml, env/, and dist/ intact. CI runs the suite on Python 3.10 through 3.14.
License
This software is licensed under the terms of the AGPLv3.
Release files for tutor-contrib-notifications 22.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tutor_contrib_notifications-22.0.0.tar.gz | 18.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tutor_contrib_notifications-22.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.9 kB
Release files / tutor_contrib_notifications-22.0.0.tar.gz
| Download URL | tutor_contrib_notifications-22.0.0.tar.gz |
|---|---|
| Size | 18.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4af4093b3741f15c13a9e2ef035c1743eacb3f0491dbc9882d16bc897043697f
|
|
BLAKE2b-256 checksum How to use checksums |
7054cbce0cb6ab3de1365aebf2159e3ed93d47bf2883316eb1c1bb92c2613953
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / tutor_contrib_notifications-22.0.0-py3-none-any.whl
| Download URL | tutor_contrib_notifications-22.0.0-py3-none-any.whl |
|---|---|
| Size | 6.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9e732ab581b2f1171bd45b46eb3af7918b4d6f094477dd280e6b8bc579ddf56f
|
|
BLAKE2b-256 checksum How to use checksums |
dbdb844eb13eacb503f5b96098b66fdfa1217820e4ea402acd893413a24913aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency log