Describr – Membership, User Profile, Content Restriction & Role Editor Plugin Security & Risk Analysis

wordpress.org/plugins/describr

The best membership plugin including front-end user profiles, user registration, content restriction, user roles, and more.

0 active installs v3.1.3 PHP 7.0+ WP 6.0+ Updated Feb 1, 2026
communitymembermembershipuser-profileuser-registration
100
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is Describr – Membership, User Profile, Content Restriction & Role Editor Plugin Safe to Use in 2026?

Generally Safe

Score 100/100

Describr – Membership, User Profile, Content Restriction & Role Editor Plugin has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 3mo ago
Risk Assessment

The describr plugin v3.1.3 presents a mixed security posture. On the positive side, it demonstrates excellent security practices regarding SQL queries, utilizing prepared statements exclusively. The plugin also boasts a high percentage of properly escaped output and includes a substantial number of nonce and capability checks, indicating an awareness of security best practices. Furthermore, the complete absence of known CVEs and historical vulnerabilities suggests a well-maintained and secure codebase. However, a significant concern arises from the attack surface. With 17 AJAX handlers, a considerable 10 of these lack authentication checks, creating a substantial entry point for potential unauthorized actions. While the taint analysis did not reveal critical or high severity vulnerabilities, the presence of 4 flows with unsanitized paths is noteworthy and warrants investigation, especially in conjunction with the unprotected AJAX handlers. The single external HTTP request, while not inherently a vulnerability, could be a vector if the target endpoint is compromised or malicious. In conclusion, while describr excels in many fundamental security areas, the significant number of unprotected AJAX handlers poses a notable risk that overshadows its otherwise strong security profile. Addressing these unauthenticated entry points should be the primary focus for improving its security.

Key Concerns

  • Unprotected AJAX handlers
  • Taint flows with unsanitized paths
Vulnerabilities
None known

Describr – Membership, User Profile, Content Restriction & Role Editor Plugin Security Vulnerabilities

No known vulnerabilities — this is a good sign.
Version History

Describr – Membership, User Profile, Content Restriction & Role Editor Plugin Release Timeline

v3.1.3Current
v3.1.2
v3.1.1
v3.1.0
v3.0.2
v3.0.1
v3.0
v2.1.1
v2.1.0
v2.0.0
v1.1.0
v1.0.0
Code Analysis
Analyzed Apr 16, 2026

Describr – Membership, User Profile, Content Restriction & Role Editor Plugin Code Analysis

Dangerous Functions
0
Raw SQL Queries
0
35 prepared
Unescaped Output
21
1212 escaped
Nonce Checks
21
Capability Checks
89
File Operations
0
External Requests
1
Bundled Libraries
0

SQL Query Safety

100% prepared35 total queries

Output Escaping

98% escaped1233 total outputs
Data Flows · Security
4 unsanitized

Data Flow Analysis

15 flows4 with unsanitized paths
redirects_markup (includes/admin/class-admin-menu.php:1557)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
10 unprotected

Describr – Membership, User Profile, Content Restriction & Role Editor Plugin Attack Surface

Entry Points17
Unprotected10

AJAX Handlers 17

authwp_ajax_describr-destroy-sessionsincludes/class-account.php:84
authwp_ajax_describr-partner-queryincludes/class-profile.php:150
authwp_ajax_describr-change-asideincludes/class-profile.php:151
authwp_ajax_describr-edit-profile-dataincludes/class-profile.php:152
authwp_ajax_describr-delete-profile-dataincludes/class-profile.php:153
authwp_ajax_describr-send-messageincludes/class-profile.php:154
authwp_ajax_describr-block-profileincludes/class-profile.php:156
authwp_ajax_describr-unblock-profileincludes/class-profile.php:157
authwp_ajax_describr-profile-aboutincludes/class-profile.php:160
authwp_ajax_describr-profile-postsincludes/class-profile.php:161
authwp_ajax_describr-profile-commentsincludes/class-profile.php:162
noprivwp_ajax_describr-profile-aboutincludes/class-profile.php:167
noprivwp_ajax_describr-profile-postsincludes/class-profile.php:168
noprivwp_ajax_describr-profile-commentsincludes/class-profile.php:169
authwp_ajax_describr-remove-pictureincludes/class-upload-photo.php:54
authwp_ajax_describr-assign-pictureincludes/class-upload-photo.php:55
authwp_ajax_describr-rate-pictureincludes/class-upload-photo.php:56
WordPress Hooks 268
actiondescribr_account_noticesincludes/actions-filters/actions-account.php:216
actiondescribr_account_hidden_fieldsincludes/actions-filters/actions-account.php:243
actiondescribr_submit_account_formincludes/actions-filters/actions-account.php:313
actiondescribr_submit_account_validateincludes/actions-filters/actions-account.php:664
actiondescribr_submit_account_tab_privacy_validateincludes/actions-filters/actions-account.php:707
actiondescribr_submit_account_updateincludes/actions-filters/actions-account.php:935
actiondescribr_account_fieldset_opening_tagincludes/actions-filters/actions-account.php:950
actiondescribr_account_fieldset_closing_tagincludes/actions-filters/actions-account.php:965
actionwp_footerincludes/actions-filters/actions-account.php:1052
actionwp_footerincludes/actions-filters/actions-account.php:1064
actionadmin_enqueue_scriptsincludes/actions-filters/actions-admin.php:52
actionadmin_enqueue_scriptsincludes/actions-filters/actions-admin.php:73
actionadmin_footerincludes/actions-filters/actions-admin.php:148
actionadmin_footerincludes/actions-filters/actions-admin.php:177
actionwp_headincludes/actions-filters/actions-global.php:46
actiontemplate_redirectincludes/actions-filters/actions-global.php:83
actiondescribr_authenticate_profile_schema_ajax_requestincludes/actions-filters/actions-profile.php:59
actiondescribr_profile_authenticate_field_changesincludes/actions-filters/actions-profile.php:100
actiondescribr_profile_pluck_submitted_fieldsincludes/actions-filters/actions-profile.php:129
actiondescribr_profile_delete_fieldsincludes/actions-filters/actions-profile.php:191
actiondescribr_profile_validate_edited_fieldsincludes/actions-filters/actions-profile.php:822
actiondescribr_profile_before_headerincludes/actions-filters/actions-profile.php:832
actiondescribr_profile_headerincludes/actions-filters/actions-profile.php:913
actiondescribr_profile_summaryincludes/actions-filters/actions-profile.php:1054
actiondescribr_print_profile_summary_fieldsincludes/actions-filters/actions-profile.php:1234
actiondescribr_profile_after_headerincludes/actions-filters/actions-profile.php:1283
actiondescribr_profile_after_headerincludes/actions-filters/actions-profile.php:1346
actiondescribr_profile_action_edit-profileincludes/actions-filters/actions-profile.php:1382
actiondescribr_profile_action_send-messageincludes/actions-filters/actions-profile.php:1414
actiondescribr_profile_action_block-profileincludes/actions-filters/actions-profile.php:1456
actiondescribr_profile_menuincludes/actions-filters/actions-profile.php:1617
actiondescribr_profile_menu_tab_content_aboutincludes/actions-filters/actions-profile.php:1766
actiondescribr_profile_menu_tab_content_postsincludes/actions-filters/actions-profile.php:1814
actiondescribr_profile_menu_tab_content_commentsincludes/actions-filters/actions-profile.php:1856
actionwp_footerincludes/actions-filters/actions-profile.php:2387
actionwp_footerincludes/actions-filters/actions-profile.php:2410
actionwp_footerincludes/actions-filters/actions-profile.php:2564
actionwp_footerincludes/actions-filters/actions-profile.php:2591
actionwp_footerincludes/actions-filters/actions-profile.php:2620
filterdescribr_get_field_user_loginincludes/actions-filters/filters-account.php:56
filterdescribr_get_field_user_emailincludes/actions-filters/filters-account.php:73
filterdescribr_get_field_user_nicenameincludes/actions-filters/filters-account.php:98
filterdescribr_get_field_display_nameincludes/actions-filters/filters-account.php:166
filterpassword_hintincludes/actions-filters/filters-account.php:180
filterdescribr_get_field_user_passincludes/actions-filters/filters-account.php:193
filterdescribr_account_blocked_users_contentincludes/actions-filters/filters-account.php:317
filterdescribr_account_destroy_sessionsincludes/actions-filters/filters-account.php:338
filterdescribr_viewable_field_settingsincludes/actions-filters/filters-account.php:358
filterdescribr_is_user_viewableincludes/actions-filters/filters-misc.php:84
filterdescribr_determine_user_logged_inincludes/actions-filters/filters-misc.php:129
filterdescribr_can_view_when_logged_inincludes/actions-filters/filters-misc.php:179
filterdescribr_can_view_registeredincludes/actions-filters/filters-misc.php:224
filterdescribr_is_field_viewableincludes/actions-filters/filters-misc.php:345
filterdescribr_can_user_send_messageincludes/actions-filters/filters-misc.php:388
filterdescribr_user_status_indicatorincludes/actions-filters/filters-misc.php:429
filterdescribr_important_user_indicatorincludes/actions-filters/filters-misc.php:460
filterdescribr_logged_in_indicatorincludes/actions-filters/filters-misc.php:490
filterget_canonical_urlincludes/actions-filters/filters-misc.php:525
filterdescribr_user_display_nameincludes/actions-filters/filters-misc.php:632
filterdescribr_get_field_supportsincludes/actions-filters/filters-misc.php:656
filterdescribr_get_field_supportsincludes/actions-filters/filters-misc.php:681
filterdescribr_profile_current_subtabincludes/actions-filters/filters-misc.php:693
filtersafe_style_cssincludes/actions-filters/filters-misc.php:736
filterdescribr_is_nicename_lock_expiredincludes/actions-filters/filters-misc.php:749
filterdescribr_profile_about_schemaincludes/actions-filters/filters-misc.php:782
filterdescribr_profile_about_schemaincludes/actions-filters/filters-misc.php:813
filterdescribr_profile_no_data_available_messageincludes/actions-filters/filters-misc.php:846
filterdescribr_profile_summary_classincludes/actions-filters/filters-misc.php:870
filterdescribr_profile_get_edit_fieldsincludes/actions-filters/filters-misc.php:894
filterdescribr_profile_get_edit_fieldsincludes/actions-filters/filters-misc.php:913
filterdescribr_profile_get_edit_fieldsincludes/actions-filters/filters-misc.php:932
filterdescribr_profile_get_edit_fieldsincludes/actions-filters/filters-misc.php:953
filterdescribr_profile_get_edit_fieldsincludes/actions-filters/filters-misc.php:988
filterdescribr_profile_get_edit_field_user_nicenameincludes/actions-filters/filters-misc.php:1008
filterdescribr_profile_get_edit_field_descriptionincludes/actions-filters/filters-misc.php:1023
filterdescribr_profile_get_edit_field_user_emailincludes/actions-filters/filters-misc.php:1041
filterdescribr_profile_get_edit_field_timezoneincludes/actions-filters/filters-misc.php:1059
filterdescribr_profile_get_edit_field_college_support_descriptionincludes/actions-filters/filters-misc.php:1073
filterdescribr_profile_get_edit_field_high_school_support_descriptionincludes/actions-filters/filters-misc.php:1087
filterdescribr_profile_edit_fields_saved_asidesincludes/actions-filters/filters-misc.php:1113
filterdescribr_wp_safe_redirect_fallbackincludes/actions-filters/filters-misc.php:1139
filterdescribr_profile_field_urlincludes/actions-filters/filters-profile.php:81
filterdescribr_profile_field_user_urlincludes/actions-filters/filters-profile.php:120
filterdescribr_profile_field_user_emailincludes/actions-filters/filters-profile.php:150
filterdescribr_profile_field_taglineincludes/actions-filters/filters-profile.php:170
filterdescribr_profile_field_timezoneincludes/actions-filters/filters-profile.php:236
filterdescribr_profile_field_birthdateincludes/actions-filters/filters-profile.php:255
filterdescribr_profile_field_user_nicenameincludes/actions-filters/filters-profile.php:298
filterdescribr_profile_fieldincludes/actions-filters/filters-profile.php:381
filterdescribr_profile_fieldincludes/actions-filters/filters-profile.php:441
filterdescribr_profile_field_descriptionincludes/actions-filters/filters-profile.php:464
filterdescribr_profile_field_relationshipincludes/actions-filters/filters-profile.php:591
filterdescribr_profile_field_lived_citiesincludes/actions-filters/filters-profile.php:665
filterdescribr_profile_field_work_historyincludes/actions-filters/filters-profile.php:798
filterdescribr_profile_fieldincludes/actions-filters/filters-profile.php:1044
filterdescribr_profile_fieldincludes/actions-filters/filters-profile.php:1076
filterdescribr_profile_field_accessible_birthdateincludes/actions-filters/filters-profile.php:1089
filterdescribr_profile_field_accessibleincludes/actions-filters/filters-profile.php:1169
filterdescribr_profile_field_accessibleincludes/actions-filters/filters-profile.php:1208
filterdescribr_profile_field_accessible_relationshipincludes/actions-filters/filters-profile.php:1308
filterdescribr_profile_field_accessibleincludes/actions-filters/filters-profile.php:1483
filterdescribr_profile_field_accessible_work_historyincludes/actions-filters/filters-profile.php:1531
filterdescribr_profile_field_accessible_lived_citiesincludes/actions-filters/filters-profile.php:1566
filterdescribr_profile_field_accessible_descriptionincludes/actions-filters/filters-profile.php:1584
actionnetwork_admin_noticesincludes/admin/class-admin-menu.php:18
actionnetwork_admin_menuincludes/admin/class-admin-menu.php:19
actionuser_admin_noticesincludes/admin/class-admin-menu.php:21
actionuser_admin_menuincludes/admin/class-admin-menu.php:22
actionadmin_noticesincludes/admin/class-admin-menu.php:24
actionadmin_menuincludes/admin/class-admin-menu.php:25
filterset_screen_option_describr_roles_per_pageincludes/admin/class-admin-menu.php:28
actionadmin_initincludes/admin/class-admin-options.php:57
actionadmin_initincludes/admin/class-admin-options.php:58
actionadmin_headincludes/admin/class-admin-users.php:58
actionload-users.phpincludes/admin/class-admin-users.php:61
actionload-site-users.phpincludes/admin/class-admin-users.php:64
filterwpmu_users_columnsincludes/admin/class-admin-users.php:70
filterms_user_row_actionsincludes/admin/class-admin-users.php:73
filterusers_list_table_query_argsincludes/admin/class-admin-users.php:76
filteruser_row_actionsincludes/admin/class-admin-users.php:77
filtermanage_users_custom_columnincludes/admin/class-admin-users.php:78
actionadmin_enqueue_scriptsincludes/admin/class-admin-users.php:80
actionnetwork_admin_noticesincludes/admin/class-admin-users.php:83
actionuser_admin_noticesincludes/admin/class-admin-users.php:85
actionadmin_noticesincludes/admin/class-admin-users.php:87
filterdisplay_post_statesincludes/admin/class-admin.php:17
filterplugin_row_metaincludes/admin/class-admin.php:18
actioninitincludes/class-account.php:65
actiontemplate_redirectincludes/class-account.php:76
actiontemplate_redirectincludes/class-account.php:77
actiontemplate_redirectincludes/class-account.php:78
actiontemplate_redirectincludes/class-account.php:79
filterdocument_title_partsincludes/class-account.php:80
filterwp_robotsincludes/class-account.php:81
filterbody_classincludes/class-account.php:82
actioninitincludes/class-avatar.php:60
filterpre_get_avatar_dataincludes/class-avatar.php:61
filterajax_query_attachments_argsincludes/class-avatar.php:85
filterwp_prepare_attachment_for_jsincludes/class-avatar.php:88
actioninitincludes/class-config.php:110
actioninitincludes/class-config.php:111
actioninitincludes/class-config.php:112
actiondescribr_pre_default_fields_initincludes/class-config.php:113
actiondescribr_pre_default_fields_initincludes/class-config.php:114
actiondescribr_pre_default_fields_initincludes/class-config.php:115
actioninitincludes/class-error.php:27
actiontemplate_redirectincludes/class-error.php:38
actionplugins_loadedincludes/class-init.php:103
actionplugins_loadedincludes/class-init.php:106
actioninitincludes/class-init.php:108
actioninitincludes/class-init.php:111
actionwp_loadedincludes/class-init.php:115
actioninitincludes/class-locale.php:42
actionwp_loadedincludes/class-login-register.php:25
actionlogin_initincludes/class-login-register.php:35
filtershake_error_codesincludes/class-login-register.php:45
actionlogin_form_loginincludes/class-login-register.php:47
actionlogin_form_loginincludes/class-login-register.php:48
actionlogin_form_registerincludes/class-login-register.php:51
actionlogin_form_checkemailincludes/class-login-register.php:52
actionlogin_form_loginincludes/class-login-register.php:53
actionlogin_formincludes/class-login-register.php:67
filterwp_login_errorsincludes/class-login-register.php:68
filterlogin_titleincludes/class-login-register.php:69
actionregister_formincludes/class-login-register.php:89
filterwp_login_errorsincludes/class-login-register.php:121
filterlogin_titleincludes/class-login-register.php:122
filterauthenticateincludes/class-login-register.php:244
filterauthenticateincludes/class-login-register.php:245
actionpassword_resetincludes/class-mailer.php:166
filterwp_new_user_notification_emailincludes/class-mailer.php:168
filterdescribr_placeholdersincludes/class-mailer.php:170
filterwp_mailincludes/class-mailer.php:172
filterwp_mailincludes/class-mailer.php:173
filterwp_mailincludes/class-mailer.php:174
filterwp_mailincludes/class-mailer.php:175
filterwp_mailincludes/class-mailer.php:176
filterwp_mail_fromincludes/class-mailer.php:178
filterwp_mail_from_nameincludes/class-mailer.php:179
filterwp_mail_content_typeincludes/class-mailer.php:180
actionphpmailer_initincludes/class-mailer.php:182
filterwp_send_new_user_notification_to_adminincludes/class-mailer.php:184
filterwp_send_new_user_notification_to_userincludes/class-mailer.php:185
actioninitincludes/class-multisite.php:17
actionwpmu_new_blogincludes/class-multisite.php:27
actionwp_initialize_siteincludes/class-multisite.php:29
actionwpmu_optionsincludes/class-multisite.php:33
actionupdate_wpmu_optionsincludes/class-multisite.php:34
actionadmin_head-settings.phpincludes/class-multisite.php:35
actioninitincludes/class-pages.php:30
actionwp_loadedincludes/class-password.php:25
actionlogin_initincludes/class-password.php:36
actionafter_password_resetincludes/class-password.php:39
actionlogin_initincludes/class-password.php:40
actionlogin_form_registerincludes/class-password.php:50
filterregistration_errorsincludes/class-password.php:62
filterrandom_passwordincludes/class-password.php:63
actionlogin_form_resetpassincludes/class-password.php:162
actionlogin_form_rpincludes/class-password.php:163
actionvalidate_password_resetincludes/class-password.php:176
filterpassword_hintincludes/class-password.php:177
actioninitincludes/class-permalinks.php:25
actioninitincludes/class-profile.php:138
actioninitincludes/class-profile.php:139
actiontemplate_redirectincludes/class-profile.php:172
actiontemplate_redirectincludes/class-profile.php:173
actiontemplate_redirectincludes/class-profile.php:174
filterlanguage_attributesincludes/class-profile.php:175
filterwp_robotsincludes/class-profile.php:176
filterdocument_title_partsincludes/class-profile.php:177
filterbody_classincludes/class-profile.php:178
actionwp_headincludes/class-profile.php:179
filterexcerpt_moreincludes/class-profile.php:2048
filterget_post_timeincludes/class-profile.php:2061
filterget_comment_dateincludes/class-profile.php:2220
actioninitincludes/class-redirect.php:46
actioninitincludes/class-redirect.php:47
actioninitincludes/class-redirect.php:48
actioninitincludes/class-redirect.php:49
actionadmin_initincludes/class-redirect.php:69
actiontemplate_redirectincludes/class-redirect.php:72
filterx_redirect_byincludes/class-redirect.php:75
actionregister_new_userincludes/class-redirect.php:111
actionwp_loginincludes/class-redirect.php:112
actionwp_logoutincludes/class-redirect.php:113
actiondeleted_userincludes/class-redirect.php:114
filterallowed_redirect_hostsincludes/class-redirect.php:258
filterwp_safe_redirect_fallbackincludes/class-redirect.php:259
filterrewrite_rules_arrayincludes/class-rewrite.php:25
filterquery_varsincludes/class-rewrite.php:26
actioninitincludes/class-scripts.php:17
filterdescribr_locale_profile_urlincludes/class-translation.php:17
filterdescribr_locale_account_urlincludes/class-translation.php:18
actionadmin_initincludes/class-updater.php:34
filterplugins_apiincludes/class-updater.php:54
actionupgrader_process_completeincludes/class-updater.php:56
actioninitincludes/class-upload-photo.php:42
actiondelete_userincludes/class-upload-photo.php:59
actionwpmu_delete_userincludes/class-upload-photo.php:62
actiondeleted_userincludes/class-upload-photo.php:65
actioninitincludes/class-user.php:97
actioninitincludes/class-user.php:98
actionadmin_initincludes/class-user.php:108
actionuser_registerincludes/class-user.php:112
actionuser_registerincludes/class-user.php:113
actionuser_registerincludes/class-user.php:114
filteruser_registerincludes/class-user.php:115
actionregister_new_userincludes/class-user.php:118
actionregister_new_userincludes/class-user.php:119
actionregister_new_userincludes/class-user.php:120
actionwp_loginincludes/class-user.php:123
actionwp_logoutincludes/class-user.php:124
actionwp_headincludes/class-user.php:126
actiontemplate_redirectincludes/class-user.php:129
actiontemplate_redirectincludes/class-user.php:130
actiontemplate_redirectincludes/class-user.php:131
actiontemplate_redirectincludes/class-user.php:132
actionprofile_updateincludes/class-user.php:139
actionwpmu_activate_userincludes/class-user.php:142
actionadded_existing_userincludes/class-user.php:143
actiondeleted_user_metaincludes/class-user.php:150
filterpre_user_nicenameincludes/class-user.php:152
filterpre_user_loginincludes/class-user.php:153
filtershow_admin_barincludes/class-user.php:413
filterwp_new_user_notification_email_adminincludes/class-user.php:515
actiondeleted_userincludes/class-user.php:1493
actionwpmu_delete_userincludes/class-user.php:1500
actiondelete_userincludes/class-user.php:1508
Maintenance & Trust

Describr – Membership, User Profile, Content Restriction & Role Editor Plugin Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedFeb 1, 2026
PHP min version7.0
Downloads2K

Community Trust

Rating100/100
Number of ratings1
Active installs0
Developer Profile

Describr – Membership, User Profile, Content Restriction & Role Editor Plugin Developer Profile

Chris

1 plugin · 0 total installs

94
trust score
Avg Security Score
100/100
Avg Patch Time
30 days
View full developer profile
Detection Fingerprints

How We Detect Describr – Membership, User Profile, Content Restriction & Role Editor Plugin

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/describr/assets/css/admin-style.css/wp-content/plugins/describr/assets/css/describr.css/wp-content/plugins/describr/assets/js/describr.js/wp-content/plugins/describr/assets/js/describr-admin.js/wp-content/plugins/describr/assets/js/describr-roles.js/wp-content/plugins/describr/assets/js/describr-options.js/wp-content/plugins/describr/assets/js/describr-public.js
Script Paths
/wp-content/plugins/describr/assets/js/describr.js/wp-content/plugins/describr/assets/js/describr-admin.js/wp-content/plugins/describr/assets/js/describr-roles.js/wp-content/plugins/describr/assets/js/describr-options.js/wp-content/plugins/describr/assets/js/describr-public.js
Version Parameters
describr/assets/css/admin-style.css?ver=describr/assets/css/describr.css?ver=describr/assets/js/describr.js?ver=describr/assets/js/describr-admin.js?ver=describr/assets/js/describr-roles.js?ver=describr/assets/js/describr-options.js?ver=describr/assets/js/describr-public.js?ver=

HTML / DOM Fingerprints

CSS Classes
describr-important-userdescribr-roles-list-tabledescribr-options-page
Data Attributes
data-describr-typedata-describr-id
JS Globals
describr
FAQ

Frequently Asked Questions about Describr – Membership, User Profile, Content Restriction & Role Editor Plugin