diff --git a/doc/sources/admin/index_portal.rst b/doc/sources/admin/index_portal.rst
index b3460acb4..85aa43151 100644
--- a/doc/sources/admin/index_portal.rst
+++ b/doc/sources/admin/index_portal.rst
@@ -6,6 +6,7 @@ Portal configuration
portal
portalcustom
+ jqueryevents
portalmenu
portalservers
captcha
diff --git a/doc/sources/admin/jqueryevents.rst b/doc/sources/admin/jqueryevents.rst
new file mode 100644
index 000000000..10a23d45c
--- /dev/null
+++ b/doc/sources/admin/jqueryevents.rst
@@ -0,0 +1,42 @@
+Available JQuery Events
+========================
+
+Some portal functions (such as 2FA registration) are performed by Javascript.
+
+We offer a few custom events that let you react to certain high-level Javascript events
+
+Second factor management
+------------------------
+
+mfaAdded
+~~~~~~~~
+
+.. versionadded:: 2.0.15
+
+This event is triggered when a TOTP, WebAuthn or U2F device is registered
+
+Sample code:
+
+.. code:: javascript
+
+ $(document).on( "mfaAdded", { }, function( event, info ) {
+ console.log( "Added MFA of type" + info.type );
+ // Your code here
+ });
+
+
+mfaDeleted
+~~~~~~~~~~~
+
+.. versionadded:: 2.0.15
+
+This event is triggered when a TOTP, WebAuthn or U2F device is removed
+
+Sample code:
+
+.. code:: javascript
+
+ $(document).on( "mfaDeleted", { }, function( event, info ) {
+ console.log( "Removed MFA of type" + info.type );
+ // Your code here
+ });
diff --git a/doc/sources/admin/portalcustom.rst b/doc/sources/admin/portalcustom.rst
index 99383ca71..2b85ca266 100644
--- a/doc/sources/admin/portalcustom.rst
+++ b/doc/sources/admin/portalcustom.rst
@@ -220,6 +220,12 @@ To change CSS, two options:
myskin/css/myskin.css" rel="stylesheet" type="text/css" />
+To add custom JS, create a new file in myskin/js/custom.js and load it in customhead.tpl ::
+
+
+
+In this file, you can access JQuery functions, and hook your code to :doc:`JQuery events `
+
Put then all custom HTML code in the custom template files.
To configure your new skin in Manager, select the custom skin, and enter