Save abandoned carts and send automated abandoned cart recovery messages. Get more leads, reduce cart abandonment, and increase sales.
Category Scores
Top Issues by Category
security573
maintainability139
i18n45
Issues Details
769 issues found in latest scan
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"<a class='cartbounty-tab nav-tab$class' href='"'.
$_GET['cart-status'] not unslashed before sanitization. Use wp_unslash() or similar
Processing form data without nonce verification.
Processing form data without nonce verification.
Use placeholders and $wpdb->prepare(); found interpolated variable $cart_table at "DELETE FROM $cart_table\n
Detected usage of a non-sanitized input variable: $_GET['cart-status']
Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().
date() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead.
Unescaped parameter $consent_query used in $wpdb->get_results()\n$consent_query assigned unsafely at line 803.
Multiple placeholders in translatable strings should be ordered. Expected "%1$s, %2$s", but got "%s, %s" in 'Get %sCartBounty Pro%s to enable cart data preview above.'.
Function "get_privacy_policy_url()" requires WordPress 4.9.6, but your plugin minimum supported version is WordPress 4.6.0.
A function call to _n() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders.
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$button_html".
Detected usage of a possibly undefined superglobal array index: $_GET['page']. Check that the array index exists before using it.
Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "activate_cartbounty".
The $text parameter must be a single text string literal. Found: $key
Sanitization missing for register_setting().
Complex placeholders used for values in the query string in $wpdb->prepare() will NOT be quoted automagically. Found: %0.2f.
Missing singular placeholder, needed for some languages. See https://codex.wordpress.org/I18n_for_WordPress_Developers#Plurals
Unescaped parameter $cart_table used in $wpdb->query()\n$cart_table assigned unsafely at line 16.
All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'.
File contains UTF-8 byte order mark, which may corrupt your application
Attempting a database schema change is discouraged.
| Code | Type | Message | Count |
|---|---|---|---|
| WordPress.Security.EscapeOutput.OutputNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"<a class='cartbounty-tab nav-tab$class' href='"'. | 253 |
| WordPress.Security.ValidatedSanitizedInput.MissingUnslash | WARNING | $_GET['cart-status'] not unslashed before sanitization. Use wp_unslash() or similar | 61 |
| WordPress.Security.NonceVerification.Recommended | WARNING | Processing form data without nonce verification. | 60 |
| WordPress.Security.NonceVerification.Missing | WARNING | Processing form data without nonce verification. | 59 |
| WordPress.DB.PreparedSQL.InterpolatedNotPrepared | WARNING | Use placeholders and $wpdb->prepare(); found interpolated variable $cart_table at "DELETE FROM $cart_table\n | 58 |
| WordPress.Security.ValidatedSanitizedInput.InputNotSanitized | WARNING | Detected usage of a non-sanitized input variable: $_GET['cart-status'] | 45 |
| WordPress.DB.DirectDatabaseQuery.DirectQuery | WARNING | Use of a direct database call is discouraged. | 43 |
| WordPress.DB.DirectDatabaseQuery.NoCaching | WARNING | Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete(). | 42 |
| WordPress.DateTime.RestrictedFunctions.date_date | ERROR | date() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead. | 25 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | ERROR | Unescaped parameter $consent_query used in $wpdb->get_results()\n$consent_query assigned unsafely at line 803. | 17 |
| WordPress.WP.I18n.UnorderedPlaceholdersText | ERROR | Multiple placeholders in translatable strings should be ordered. Expected "%1$s, %2$s", but got "%s, %s" in 'Get %sCartBounty Pro%s to enable cart data preview above.'. | 17 |
| wp_function_not_compatible_with_requires_wp | ERROR | Function "get_privacy_policy_url()" requires WordPress 4.9.6, but your plugin minimum supported version is WordPress 4.6.0. | 14 |
| WordPress.WP.I18n.MissingTranslatorsComment | ERROR | A function call to _n() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders. | 13 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | WARNING | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$button_html". | 6 |
| WordPress.Security.ValidatedSanitizedInput.InputNotValidated | WARNING | Detected usage of a possibly undefined superglobal array index: $_GET['page']. Check that the array index exists before using it. | 6 |
| WordPress.WP.I18n.MissingArgDomain | ERROR | Missing $domain parameter in function call to __(). | 6 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound | WARNING | Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "activate_cartbounty". | 5 |
| WordPress.WP.I18n.NonSingularStringLiteralText | ERROR | The $text parameter must be a single text string literal. Found: $key | 5 |
| PluginCheck.CodeAnalysis.SettingSanitization.register_settingMissing | ERROR | Sanitization missing for register_setting(). | 4 |
| WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder | WARNING | Complex placeholders used for values in the query string in $wpdb->prepare() will NOT be quoted automagically. Found: %0.2f. | 4 |
| WordPress.WP.I18n.MissingSingularPlaceholder | ERROR | Missing singular placeholder, needed for some languages. See https://codex.wordpress.org/I18n_for_WordPress_Developers#Plurals | 4 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | WARNING | Unescaped parameter $cart_table used in $wpdb->query()\n$cart_table assigned unsafely at line 16. | 3 |
| WordPress.Security.EscapeOutput.UnsafePrintingFunction | ERROR | All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'. | 3 |
| Generic.Files.ByteOrderMark.Found | ERROR | File contains UTF-8 byte order mark, which may corrupt your application | 2 |
| WordPress.DB.DirectDatabaseQuery.SchemaChange | WARNING | Attempting a database schema change is discouraged. | 2 |
Latest Snapshot
Findings
769
Errors
370
Warnings
399
Score History
First score snapshot
First scan completed Jun 20, 2026
v8.10.2 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
Jun 20, 2026
v8.10.2
33
Latest
- Findings
- 769
- Errors
- 370
- Warnings
- 399
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Jun 20, 2026Latest | 33 | 769 | 370 | 399 | v8.10.2 | 2.0.0 | 2026.06-mvp-static-v2 |