Simple Newsletter Plugin – Noptin

A fast, GDPR-compliant newsletter plugin. Collect newsletter subscribers, let users subscribe to new post notifications, and send newsletters. ★★★★★

v4.3.0Noptin Newsletter TeamUpdated 2026-06-02Added Mar 6, 201910k+ installs90% rating
24
Score
66
Errors
591
Warnings
+0
Change

Category Scores

Security0
Repo90
Performance85
Maintainability8

Top Issues by Category

maintainability369
security229
i18n31
performance11

Issues Details

657 issues found in latest scan

WARNING98
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound

Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$app".

WARNING92
WordPress.Security.NonceVerification.Recommended

Processing form data without nonce verification.

WARNING88
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound

Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "_noptin_obfuscate_email_addresses_callback".

WARNING56
WordPress.Security.ValidatedSanitizedInput.MissingUnslash

$_COOKIE['noptin_email_subscribed'] not unslashed before sanitization. Use wp_unslash() or similar

WARNING48
WordPress.Security.ValidatedSanitizedInput.InputNotSanitized

Detected usage of a non-sanitized input variable: $_COOKIE[$name]

WARNING45
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound

Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "'check_' . $rule->get_trigger_id()".

WARNING33
WordPress.DB.DirectDatabaseQuery.DirectQuery

Use of a direct database call is discouraged.

WARNING31
WordPress.DB.DirectDatabaseQuery.NoCaching

Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().

ERROR31
WordPress.WP.I18n.TextDomainMismatch

Mismatched text domain. Expected 'newsletter-optin-box' but got 'gravityforms'.

ERROR15
WordPress.Security.EscapeOutput.OutputNotEscaped

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$args['after_title']'.

WARNING14
Internal.NoCodeFound

No PHP code was found in this file and short open tags are not allowed by this install of PHP. This file may be using short open tags but PHP does not allow them.

WARNING14
WordPress.NamingConventions.PrefixAllGlobals.DynamicHooknameFound

Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "$hook".

WARNING13
WordPress.DB.SlowDBQuery.slow_db_query_meta_query

Detected usage of meta_query, possible slow query.

WARNING12
WordPress.DB.DirectDatabaseQuery.SchemaChange

Attempting a database schema change is discouraged.

WARNING8
WordPress.Security.ValidatedSanitizedInput.InputNotValidated

Detected usage of a possibly undefined superglobal array index: $_GET['noptin_campaign']. Check that the array index exists before using it.

ERROR7
missing_direct_file_access_protection

PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;

WARNING6
WordPress.Security.NonceVerification.Missing

Processing form data without nonce verification.

ERROR6
WordPressVIPMinimum.Performance.WPQueryParams.SuppressFilters_suppress_filters

Setting `suppress_filters` to `true` is prohibited.

WARNING5
WordPress.DB.SlowDBQuery.slow_db_query_meta_key

Detected usage of meta_key, possible slow query.

WARNING5
WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_exclude

Using exclusionary parameters, like exclude, in calls to get_posts() should be done with caution, see https://wpvip.com/documentation/performance-improvements-by-removing-usage-of-post__not_in/ for more information.

WARNING4
WordPress.DB.SlowDBQuery.slow_db_query_meta_value

Detected usage of meta_value, possible slow query.

WARNING3
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound

Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "IS_NOPTIN_ACTIONS_PAGE".

WARNING2
PluginCheck.Security.DirectDB.UnescapedDBParameter

Unescaped parameter $values_sql used in $wpdb->query()\n$values_sql assigned unsafely at line 382.

WARNING2
WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber

Incorrect number of replacements passed to $wpdb->prepare(). Found 1 replacement parameters, expected 2.

WARNING2
WordPress.DB.SlowDBQuery.slow_db_query_tax_query

Detected usage of tax_query, possible slow query.

Latest Snapshot

Findings

657

Errors

66

Warnings

591

Score History

First score snapshot

First scan completed Jun 20, 2026

v4.3.0 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2

Jun 20, 2026

v4.3.0

24

Latest

Findings
657
Errors
66
Warnings
591
Plugin Check
2.0.0
Model
2026.06-mvp-static-v2

Related Plugins