Lucky Wheel for WooCommerce – Spin a Sale Security & Risk Analysis

wordpress.org/plugins/woo-lucky-wheel

Engage customers with a fun spin-the-wheel game! Collect emails and reward them with discount coupons instantly.

1K active installs v1.1.15 PHP 7.0+ WP 5.0+ Updated Jan 17, 2026
fortune-wheellucky-wheelmailchimpwheelio-for-woocommercewoocommerce-fortune-wheel
96
A · Safe
CVEs total2
Unpatched0
Last CVEDec 29, 2025
Download
Safety Verdict

Is Lucky Wheel for WooCommerce – Spin a Sale Safe to Use in 2026?

Generally Safe

Score 96/100

Lucky Wheel for WooCommerce – Spin a Sale has a strong security track record. Known vulnerabilities have been patched promptly.

2 known CVEsLast CVE: Dec 29, 2025Updated 2mo ago
Risk Assessment

The "woo-lucky-wheel" v1.1.15 plugin exhibits a mixed security posture. On the positive side, it demonstrates good practices by using prepared statements for all SQL queries and properly escaping almost all output. The presence of a substantial number of nonce and capability checks suggests an awareness of security fundamentals. However, significant concerns arise from its attack surface. With 8 entry points identified, 3 of which are unprotected (2 AJAX handlers and 1 REST API route lacking permission callbacks), there are clear opportunities for unauthenticated attackers to interact with the plugin in potentially unintended ways. The taint analysis, while showing no critical or high severity unsanitized flows, did identify 2 flows with unsanitized paths, which warrants further investigation. The plugin's vulnerability history, featuring 2 known CVEs including one high and one medium severity, with common types like Code Injection and Cross-site Scripting, indicates a past susceptibility to serious security flaws. While there are currently no unpatched vulnerabilities, this history, combined with the identified unprotected entry points, suggests a need for ongoing vigilance and thorough code auditing.

In conclusion, while the plugin incorporates several robust security measures, the presence of unprotected entry points and its past vulnerability record are notable weaknesses. The 2 unsanitized taint flows, though not classified as critical or high, represent a potential area of concern that could be exploited if further analysis reveals specific weaknesses. The strengths lie in its SQL handling and output escaping, but the identified attack surface vulnerabilities and historical issues mean it should be treated with caution. Developers should prioritize patching any discovered vulnerabilities promptly and thoroughly review and secure all entry points. Users should ensure they are running the latest version and remain aware of any security advisories.

Key Concerns

  • AJAX handlers without auth checks
  • REST API routes without permission callbacks
  • Flows with unsanitized paths
  • High severity vulnerability in history
  • Medium severity vulnerability in history
Vulnerabilities
2

Lucky Wheel for WooCommerce – Spin a Sale Security Vulnerabilities

CVEs by Year

1 CVE in 2022
2022
1 CVE in 2025
2025
Patched Has unpatched

Severity Breakdown

High
1
Medium
1

2 total CVEs

CVE-2025-14509high · 7.2Improper Control of Generation of Code ('Code Injection')

Lucky Wheel for WooCommerce – Spin a Sale <= 1.1.13 - Authenticated (Administrator+) PHP Code Injection via Conditional Tags

Dec 29, 2025 Patched in 1.1.14 (1d)
WF-61aaeca4-6b5c-4b00-ab71-bba976d9e1b5-woo-lucky-wheelmedium · 6.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Lucky Wheel for WooCommerce – Spin a Sale <= 1.0.10 - Cross-Site Scripting

Apr 5, 2022 Patched in 1.0.11 (658d)
Code Analysis
Analyzed Mar 16, 2026

Lucky Wheel for WooCommerce – Spin a Sale Code Analysis

Dangerous Functions
0
Raw SQL Queries
0
0 prepared
Unescaped Output
4
456 escaped
Nonce Checks
9
Capability Checks
8
File Operations
1
External Requests
5
Bundled Libraries
1

Bundled Libraries

Select2

Output Escaping

99% escaped460 total outputs
Data Flows
2 unsanitized

Data Flow Analysis

7 flows2 with unsanitized paths
get_email (frontend\frontend.php:537)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
3 unprotected

Lucky Wheel for WooCommerce – Spin a Sale Attack Surface

Entry Points8
Unprotected3

AJAX Handlers 7

authwp_ajax_wlwl_search_couponadmin\admin.php:20
authwp_ajax_wlwl_search_cateadmin\admin.php:21
authwp_ajax_wlwl_search_productadmin\admin.php:22
authwp_ajax_wlwl_preview_emailsadmin\admin.php:23
authwp_ajax_wlwl_preview_wheeladmin\admin.php:24
authwp_ajax_wlwl_get_emailfrontend\frontend.php:21
noprivwp_ajax_wlwl_get_emailfrontend\frontend.php:22

REST API Routes 1

POST/wp-json/woocommerce_lucky_wheel/spinfrontend\frontend.php:379
WordPress Hooks 41
actionadmin_menuadmin\admin.php:18
actionadmin_initadmin\admin.php:19
actionadmin_enqueue_scriptsadmin\admin.php:25
actionmedia_buttonsadmin\admin.php:26
actionadmin_footeradmin\admin.php:27
actionwp_enqueue_scriptsfrontend\frontend.php:19
actionrest_api_initfrontend\frontend.php:24
filterviwec_disable_woocommerce_email_inline_stylefrontend\frontend.php:38
actionwp_footerfrontend\frontend.php:372
actionadmin_enqueue_scriptsincludes\support.php:32
actionadmin_noticesincludes\support.php:33
actionadmin_initincludes\support.php:34
actionadmin_menuincludes\support.php:35
filterplugin_row_metaincludes\support.php:37
actionadmin_initincludes\support.php:39
actionadmin_bar_menuincludes\support.php:41
actionadmin_noticesincludes\support.php:52
actionadmin_footerincludes\support.php:669
actionadmin_bar_menuincludes\support.php:807
actionadmin_noticesincludes\support.php:953
filterwlwl_get_default_paramsplugins\curcy.php:11
filterwlwl_get_priceplugins\curcy.php:12
filterwlwl_get_price_formatplugins\curcy.php:13
filterwlwl_woocommerce_price_num_decimalsplugins\curcy.php:14
filterwlwl_woocommerce_currencyplugins\curcy.php:15
filterwmc_get_list_currenciesplugins\curcy.php:77
actionwlwl_wheel_settings_slices_columnplugins\woocommerce-email-template-customizer.php:15
actionwlwl_wheel_settings_slices_column_contentplugins\woocommerce-email-template-customizer.php:16
filterviwec_register_email_typeplugins\woocommerce-email-template-customizer.php:17
filterviwec_sample_subjectsplugins\woocommerce-email-template-customizer.php:18
filterviwec_sample_templatesplugins\woocommerce-email-template-customizer.php:19
filterviwec_live_edit_shortcodesplugins\woocommerce-email-template-customizer.php:20
filterviwec_register_preview_shortcodeplugins\woocommerce-email-template-customizer.php:21
actionbefore_woocommerce_initwoo-lucky-wheel.php:43
actionplugins_loadedwoo-lucky-wheel.php:44
actioninitwoo-lucky-wheel.php:73
actioninitwoo-lucky-wheel.php:74
actionadd_meta_boxeswoo-lucky-wheel.php:75
filtermanage_wlwl_email_posts_columnswoo-lucky-wheel.php:76
actionmanage_wlwl_email_posts_custom_columnwoo-lucky-wheel.php:77
filterplugin_action_links_woo-lucky-wheel/woo-lucky-wheel.phpwoo-lucky-wheel.php:78
Maintenance & Trust

Lucky Wheel for WooCommerce – Spin a Sale Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedJan 17, 2026
PHP min version7.0
Downloads101K

Community Trust

Rating90/100
Number of ratings19
Active installs1K
Developer Profile

Lucky Wheel for WooCommerce – Spin a Sale Developer Profile

VillaTheme

58 plugins · 167K total installs

78
trust score
Avg Security Score
99/100
Avg Patch Time
214 days
View full developer profile
Detection Fingerprints

How We Detect Lucky Wheel for WooCommerce – Spin a Sale

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/woo-lucky-wheel/admin/css/wheel.css/wp-content/plugins/woo-lucky-wheel/admin/css/settings.css/wp-content/plugins/woo-lucky-wheel/admin/js/wheel.js/wp-content/plugins/woo-lucky-wheel/admin/js/settings.js/wp-content/plugins/woo-lucky-wheel/frontend/css/wheel.css/wp-content/plugins/woo-lucky-wheel/frontend/js/wheel.js
Script Paths
/wp-content/plugins/woo-lucky-wheel/admin/js/wheel.js/wp-content/plugins/woo-lucky-wheel/admin/js/settings.js/wp-content/plugins/woo-lucky-wheel/frontend/js/wheel.js
Version Parameters
woo-lucky-wheel/admin/css/wheel.css?ver=woo-lucky-wheel/admin/css/settings.css?ver=woo-lucky-wheel/admin/js/wheel.js?ver=woo-lucky-wheel/admin/js/settings.js?ver=woo-lucky-wheel/frontend/css/wheel.css?ver=woo-lucky-wheel/frontend/js/wheel.js?ver=

HTML / DOM Fingerprints

CSS Classes
vi-lucky-wheel-wrappervi-lucky-wheel-canvasvi-lucky-wheel-pointervi-lucky-wheel-prizevi-lucky-wheel-spin-buttonvi-lucky-wheel-coupon-codevi-lucky-wheel-email-formvi-lucky-wheel-close-button
HTML Comments
<!-- Lucky Wheel for WooCommerce --><!-- VI_WOO_LUCKY_WHEEL_Admin_Settings --><!-- VI_WOO_LUCKY_WHEEL_Frontend_Wheel -->
Data Attributes
data-wheel-iddata-wheel-options
JS Globals
woo_lucky_wheel_frontendwoo_lucky_wheel_admin
REST Endpoints
/wp-json/woo-lucky-wheel/v1/spin/wp-json/woo-lucky-wheel/v1/get-coupon
Shortcode Output
<div class="woo-lucky-wheel-shortcode"><div id="lucky-wheel-container"></div></div>
FAQ

Frequently Asked Questions about Lucky Wheel for WooCommerce – Spin a Sale