n8n plugin for Tutor
n8n plugin for Tutor
This plugin adds a self-hosted n8n instance to your Tutor-based Open edX platform (following the official n8n-docker-caddy deployment model, adapted to Tutor’s own Caddy reverse proxy), and installs openedx-events-2-n8n in the LMS/CMS image so that registration, enrollment, and grade-change Open edX Events are forwarded to n8n webhooks.
Installation
pip install tutor-contrib-n8n
# or, to install the latest development version:
pip install git+https://github.com/Abstract-Tech/tutor-contrib-n8n
Usage
tutor plugins enable n8n
tutor config save
tutor local launch
n8n will be reachable at https://n8n.<LMS_HOST> (or http:// when ENABLE_HTTPS is disabled), and the openedx-events-2-n8n package will be installed in the openedx image automatically. The same manifests are provided for tutor k8s launch (a Deployment, Service and PersistentVolumeClaim are created for n8n, and routed through the same Caddy reverse proxy), but this Kubernetes configuration is untested — it has not been deployed or verified on a real cluster. Treat it as a starting point, not a validated deployment path.
Once n8n is running, create your webhook workflows and configure their URLs either via the Django admin (/admin/openedx_events_2_n8n/webhookconfig/) or via the settings below.
Configuration
All settings are prefixed with N8N_ and can be set with tutor config save --set N8N_SETTING=value.
n8n service
Setting |
Default |
Description |
|---|---|---|
N8N_DOCKER_IMAGE |
docker.n8n.io/n8nio/n8n:latest |
Docker image used for the n8n container. |
N8N_HOST |
n8n.{{ LMS_HOST }} |
Domain name at which n8n is exposed. |
N8N_PORT |
5678 |
Port n8n listens on inside its container. |
N8N_GENERIC_TIMEZONE |
UTC |
Timezone used by n8n for scheduling. |
N8N_ENCRYPTION_KEY |
randomly generated |
Key n8n uses to encrypt stored credentials. |
N8N_K8S_STORAGE |
1Gi |
Size of the n8n PersistentVolumeClaim (k8s only). |
n8n data (workflows, credentials) is persisted in the n8n bind-mounted data volume (tutor local) or PersistentVolumeClaim (tutor k8s), alongside Tutor’s other services.
openedx-events-2-n8n
Setting |
Default |
Description |
|---|---|---|
N8N_OPENEDX_EVENTS_ENABLED |
True |
|
N8N_OPENEDX_EVENTS_VERSION |
0.5.0 |
Version of openedx-events-2-n8n (PyPI) to install. |
N8N_REGISTRATION_WEBHOOK |
"" |
n8n webhook URL for STUDENT_REGISTRATION_COMPLETED. |
N8N_ENROLLMENT_WEBHOOK |
"" |
n8n webhook URL for COURSE_ENROLLMENT_CREATED. |
N8N_PERSISTENT_GRADE_COURSE_WEBHOOK |
"" |
n8n webhook URL for PERSISTENT_GRADE_SUMMARY_CHANGED. |
These webhook URLs are only a fallback: a WebhookConfig entry created in the Django admin for a given event takes priority when present.
Set N8N_OPENEDX_EVENTS_ENABLED=false to run the n8n service without installing the Open edX events integration.
Development
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
make test
License
This software is licensed under the terms of the AGPLv3.
Metadata
Release files for tutor-contrib-n8n 1.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_n8n-1.0.0.tar.gz | 19.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tutor_contrib_n8n-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.9 kB
Release files / tutor_contrib_n8n-1.0.0.tar.gz
| Download URL | tutor_contrib_n8n-1.0.0.tar.gz |
|---|---|
| Size | 19.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bf9d2fb70096d87feaeb3a50806495da25afa7ccb8265daf97b446843de759ec
|
|
BLAKE2b-256 checksum How to use checksums |
7b01afc06f7609bf2954d12b95f9b34ae813cce55f8c7f8b6bbb25655670dc08
|
| 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 9, 2026.
Transparency logRelease files / tutor_contrib_n8n-1.0.0-py3-none-any.whl
| Download URL | tutor_contrib_n8n-1.0.0-py3-none-any.whl |
|---|---|
| Size | 24.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c7265a1c35cf9a26801891026f4be0d9354cfe3593f8a785c4fdb2f72222f6d3
|
|
BLAKE2b-256 checksum How to use checksums |
abf9cc7e5ee3f26e82888de4a577e45ffd69de8b2bbf5ab09959e6548f9c6be6
|
| 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 9, 2026.
Transparency log