{"id":352129,"date":"2026-08-14T03:42:18","date_gmt":"2026-08-14T03:42:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/hdwebmobile-spin-win\/"},"modified":"2026-08-14T03:42:02","modified_gmt":"2026-08-14T03:42:02","slug":"hdwebmobile-spin-and-win","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/hdwebmobile-spin-and-win\/","author":9757813,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.4","requires":"6.9","requires_php":"7.4","requires_plugins":null,"header_name":"HDWebmobile Spin & Win","header_author":"htrxuan - Han Tran","header_description":"A gamified discount-wheel popup for WooCommerce. Real page targeting, one spin per email enforced server-side, and the winning code shown on screen immediately.","assets_banners_color":"0f5847","last_updated":"2026-08-14 03:42:02","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/paypal.me\/htrxuan\/20","header_plugin_uri":"https:\/\/hdwebmobile.com\/plugins\/hdwebmobile-spin-and-win\/","header_author_uri":"https:\/\/hdwebmobile.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":47,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"htrxuan","date":"2026-08-14 03:42:02"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3646547,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3646547,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3646547,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3646547,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3646547,"resolution":"1","location":"assets","locale":"","width":2560,"height":1372},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3646547,"resolution":"2","location":"assets","locale":"","width":2560,"height":1267},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3646547,"resolution":"3","location":"assets","locale":"","width":2560,"height":1267}},"screenshots":{"1":"The Spin &amp; Win settings screen \u2014 trigger, targeting, frequency cap, coupon expiry, and the 8-segment prize table.","2":"The spin-wheel popup as a visitor sees it, before entering their email.","3":"The instant result reveal after spinning, showing the won discount code with its one-click copy button."}},"plugin_section":[],"plugin_tags":[129213,1002,15738,161586,286],"plugin_category":[45],"plugin_contributors":[254181],"plugin_business_model":[],"class_list":["post-352129","plugin","type-plugin","status-publish","hentry","plugin_tags-discount-popup","plugin_tags-exit-intent","plugin_tags-gamification","plugin_tags-spin-wheel","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-htrxuan","plugin_committers-htrxuan"],"banners":{"banner":"https:\/\/ps.w.org\/hdwebmobile-spin-and-win\/assets\/banner-772x250.png?rev=3646547","banner_2x":"https:\/\/ps.w.org\/hdwebmobile-spin-and-win\/assets\/banner-1544x500.png?rev=3646547","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/hdwebmobile-spin-and-win\/assets\/icon-128x128.png?rev=3646547","icon_2x":"https:\/\/ps.w.org\/hdwebmobile-spin-and-win\/assets\/icon-256x256.png?rev=3646547","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/hdwebmobile-spin-and-win\/assets\/screenshot-1.png?rev=3646547","caption":"The Spin &amp; Win settings screen \u2014 trigger, targeting, frequency cap, coupon expiry, and the 8-segment prize table."},{"src":"https:\/\/ps.w.org\/hdwebmobile-spin-and-win\/assets\/screenshot-2.png?rev=3646547","caption":"The spin-wheel popup as a visitor sees it, before entering their email."},{"src":"https:\/\/ps.w.org\/hdwebmobile-spin-and-win\/assets\/screenshot-3.png?rev=3646547","caption":"The instant result reveal after spinning, showing the won discount code with its one-click copy button."}],"raw_content":"<!--section=description-->\n<p>HDWebmobile Spin &amp; Win shows visitors a spinning-wheel popup that awards a real, single-use WooCommerce coupon. Unlike some similar plugins, spins are limited per email address on the server (not just a cookie), the popup only ever appears on the pages you choose, and the winning code is revealed right in the popup \u2014 no need to go check email.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li>Server-enforced one spin per email address, not just a browser cookie<\/li>\n<li>Real page targeting: all pages, homepage only, shop &amp; product pages, or specific page IDs \u2014 the popup has zero footprint on pages you didn't target<\/li>\n<li>Winning code shown instantly in the popup; a backup copy is also emailed via a real WooCommerce transactional email (customizable under WooCommerce &gt; Settings &gt; Emails)<\/li>\n<li>8 configurable weighted prize segments \u2014 percent off, fixed amount off, free shipping, or \"no prize\" \u2014 each with its own probability weight<\/li>\n<li>Delay-based or exit-intent popup trigger<\/li>\n<li>Configurable coupon expiry<\/li>\n<li>Cookie-based frequency capping so returning visitors aren't nagged repeatedly<\/li>\n<\/ul>\n\n<h4>Limitations (please read before installing)<\/h4>\n\n<ul>\n<li>Exactly 8 fixed prize segments \u2014 not an open-ended add\/remove list<\/li>\n<li>One trigger mode active at a time: delay-based OR exit-intent, not both simultaneously<\/li>\n<li>The frequency-cap cookie is a courtesy to avoid annoying repeat visitors \u2014 clearing cookies only re-shows the popup, it never grants a second coupon, since spin eligibility is enforced server-side per email<\/li>\n<li>No double opt-in and no email marketing platform integration (Mailchimp, Klaviyo, etc.) in this version<\/li>\n<li>No built-in A\/B testing or analytics\/conversion dashboard<\/li>\n<\/ul>\n\n<h3>How to Use<\/h3>\n\n<h4>1. Open the settings screen<\/h4>\n\n<p>Go to <strong>WooCommerce &gt; Spin &amp; Win<\/strong> in your admin menu (see Screenshot 1). This one screen controls everything: whether the popup is on, when it appears, where it appears, and what it can give away.<\/p>\n\n<h4>2. Turn it on<\/h4>\n\n<p>Tick <strong>Enable Spin &amp; Win<\/strong>. Nothing shows on your site until this is checked.<\/p>\n\n<h4>3. Choose when the popup appears<\/h4>\n\n<p>Under <strong>Trigger &amp; Targeting<\/strong>, pick one:<\/p>\n\n<ul>\n<li><strong>After a delay of <em>N<\/em> seconds<\/strong> \u2014 the popup opens automatically once a visitor has been on the page for that long.<\/li>\n<li><strong>On exit intent<\/strong> \u2014 the popup opens when the visitor's mouse moves toward the browser's close\/tab bar, signalling they're about to leave.<\/li>\n<\/ul>\n\n<p>Only one of these is active at a time.<\/p>\n\n<h4>4. Choose where it appears<\/h4>\n\n<p>Still under <strong>Trigger &amp; Targeting<\/strong>, set <strong>Show on<\/strong> to one of:<\/p>\n\n<ul>\n<li><strong>All pages<\/strong> \u2014 every page of the site.<\/li>\n<li><strong>Homepage only<\/strong><\/li>\n<li><strong>Shop &amp; product pages<\/strong> \u2014 the shop archive, product categories, and single product pages.<\/li>\n<li><strong>Specific page IDs<\/strong> \u2014 list exactly which pages, nothing else.<\/li>\n<\/ul>\n\n<p>On any page that isn't targeted, the popup adds no HTML, CSS, or JS at all \u2014 it isn't just hidden, it's simply never sent to the browser.<\/p>\n\n<h4>5. Set the frequency cap and coupon expiry<\/h4>\n\n<ul>\n<li><strong>Don't re-show for (days)<\/strong> \u2014 once a visitor closes or completes the popup, this is how many days before it can appear to them again in the same browser. This is a courtesy so people aren't nagged; it does not by itself control how many prizes someone can win (see below).<\/li>\n<li><strong>Coupon expires after (days)<\/strong> \u2014 how long a won coupon stays valid for after it's issued.<\/li>\n<\/ul>\n\n<h4>6. Configure the 8 prize segments<\/h4>\n\n<p>The wheel always has exactly 8 segments (see the <strong>Prize Segments<\/strong> table in Screenshot 1). For each one you can set:<\/p>\n\n<ul>\n<li><strong>On<\/strong> \u2014 untick to disable a segment; disabled segments are never picked and don't need a Label.<\/li>\n<li><strong>Label<\/strong> \u2014 the text shown on the wheel and in the result (e.g. \"15% OFF\").<\/li>\n<li><strong>Type<\/strong> \u2014 Percent off, Fixed amount off, Free shipping, or No prize.<\/li>\n<li><strong>Amount<\/strong> \u2014 the percent or fixed amount (ignored for Free shipping \/ No prize).<\/li>\n<li><strong>Weight<\/strong> \u2014 how likely this segment is to be picked, relative to the other enabled segments. A segment with weight 20 is twice as likely to be picked as one with weight 10. Use <strong>No prize<\/strong> segments with a real weight (like \"Try Again\" or \"So Close!\") to control your overall win rate \u2014 set their weight higher to give away fewer prizes, or lower\/zero to give away more.<\/li>\n<\/ul>\n\n<p>Click <strong>Save Changes<\/strong> when done.<\/p>\n\n<h4>7. What your visitors see<\/h4>\n\n<p>A visitor lands on a targeted page, and after the delay (or on exit intent) the wheel popup opens (Screenshot 2). They enter their email and click <strong>Spin the Wheel<\/strong>. The wheel spins and stops on whatever segment the server already picked \u2014 win or lose, the result and, if they won, the discount code appear immediately in the popup with a one-click copy button (Screenshot 3). There's no need to check email to get the code, though a backup copy is also sent automatically via a WooCommerce email (customizable under WooCommerce &gt; Settings &gt; Emails &gt; \"Prize Won\").<\/p>\n\n<h4>8. One spin per email \u2014 enforced on the server<\/h4>\n\n<p>Each email address can only ever win (or lose) once. This is checked against your actual coupon records on the server, not a cookie \u2014 so clearing cookies, using a different browser, or private\/incognito mode does not grant a second spin to the same email.<\/p>\n\n<h4>9. Where the coupons go<\/h4>\n\n<p>Every prize coupon Spin &amp; Win creates is a normal WooCommerce coupon, visible under <strong>WooCommerce &gt; Coupons<\/strong>, with the discount type\/amount, a 1-use limit, an expiry date, and the winning email attached \u2014 so you can look up or manually adjust any winner's coupon the same way you would any other coupon.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/hdwebmobile-spin-and-win<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress. WooCommerce must already be installed and active.<\/li>\n<li>Configure your prize segments, trigger, targeting, and coupon settings under WooCommerce &gt; Spin &amp; Win.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: 8-segment weighted wheel, server-enforced one-spin-per-email, real page targeting, instant on-screen code reveal with backup email, delay\/exit-intent trigger, cookie frequency cap, configurable coupon expiry.<\/li>\n<\/ul>","raw_excerpt":"A gamified discount-wheel popup for WooCommerce with real page targeting and server-enforced one spin per email.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/352129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=352129"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/htrxuan"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=352129"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=352129"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=352129"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=352129"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=352129"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=352129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}