Lucky Wheel for WooCommerce changelog

Every version, newest first, with the date it was released. Updates install from your Plugins screen.

Latest version 1.12.023 Oct 2026first released 22 Aug 2026

1.12.0

  • New Show shoppers the prizes and their chances. A Prizes and chances link under the Spin button lists each prize that can be won with its chance, worked out from the same weights the draw uses. It also says what the codes are good for, how often someone may play and when the wheel closes, with a link to your own terms page if you choose one. [trasl_lucky_wheel_rules] shows the same list on a page, and Show how many are left adds the real stock beside prizes that have one. New shops have the link on; shops that had the wheel before are offered it on the Dashboard.
  • New New leads into MailPoet and FluentCRM. When either plugin is active on the same site, the Email Lists screen has a card for it: choose a list, plus tags and double opt-in for FluentCRM. Each new lead is added in the background moments after the spin, with no API key and nothing leaving the site. Where the form asks for consent, only players who gave it are added. Failures are counted on the card and never hold up the spin.
  • Improved Lighter pages with the launcher or the Your prize button. The room they take in their corner is now said by a class the wheel's own script sets on the page, not by a style rule the browser re-tested against the whole page on every change. Other corner buttons from the range stand where they did.
  • Fixed Prize rows fit on a phone. Where the prizes have little room, each prize's fields are stacked with their names over them, instead of running 575 pixels wide and making the Wheel screen scroll sideways. The keyboard goes through a row in the order the eye does.

1.11.0

  • New Open the wheel from your own links. A menu link, button or banner pointing at #trlw-open opens the popup, and a page address ending in #trlw-open, in a newsletter or a post, opens it on arrival. Anything with the class trlw-open opens it too, and [trasl_lucky_wheel_button] draws a button in your theme's style. Display lists all three under Open it from your own links. They open it for a shopper who closed it or said No thanks, and on phones; the Schedule and the spin limits still apply.
  • Improved Pages paint without waiting for the wheel. The popup's stylesheet no longer holds up the first paint of every page the wheel can open on. It loads in the background, and the launcher appears once it has arrived, never unstyled. The popup is not laid out, and its wheel not drawn, until a shopper opens it.
  • Improved Lighter admin screens. The media library and the colour picker load only on the Wheel screen, the one that uses them.
  • Improved Faster pages on sites in Spanish or French. The translations now also ship as PHP files, which WordPress 6.5 and later reads from PHP's code cache instead of reading the translation file again on every page. Measured on a French site with all fifteen of our plugins: 6.3 ms and 0.8 MB of memory less on every request. Older WordPress reads the translations as before.
  • Improved Opening the plugin's screens asks less of your server. To make switching tabs instant, the plugin loads its other screens in the background while you read the first one. It now loads at most four, the plugin's own tabs first, and none while the browser tab is in the background; a tab past the fourth loads as your pointer reaches it.
  • Changed Trigger renamed. "Only when clicked" is now "Only when the shopper presses the launcher or one of my links".
  • Fixed A popup opened by hand stays shut. After a shopper opened and closed the popup themselves, its delay, scroll or exit trigger no longer opened it again on the same page.
  • Fixed Remove buttons on their own prize rows. On the Wheel screen every prize's remove button sat at the top right of the screen, one on top of another, so pressing it always removed the last prize. Each now sits at the end of its own row and shows a ring when the keyboard reaches it.
  • Fixed "Delete everything" also clears what the wheel wrote on orders in WooCommerce's own order tables. On shops with WooCommerce's order tables (HPOS) switched on, the wheel's notes on attributed orders were left behind after uninstalling.
  • Fixed No "deprecated" notice from Cloudflare's plugin when you save. With WP_DEBUG on and a current version of Cloudflare's plugin, emptying its cache printed a deprecation notice, which could stop a save from returning to its screen. Cloudflare is now asked under its current name, and the old one only on older copies.
  • Fixed Notes that should be hidden stay hidden. A hint or note a screen had hidden could still show, because the style that lays hints out outranked the browser's own rule for hidden things. Hidden things on the plugin's screens now always stay hidden.

1.10.2

  • Fixed Page caches are emptied only as far as a change needs. With LiteSpeed Cache, the wheel's window opening or closing pressed its Purge All, which also deletes its combined CSS and JS files, empties the object cache and PHP's code cache, clears Cloudflare where LiteSpeed is set to, and leaves "Purged all caches successfully." on your next screen. It now empties LiteSpeed's cached pages only. On a network, WP Super Cache is emptied for this site alone, where it emptied every site's (except a save on the main site of a network in subfolders, whose cached pages hold the other sites', and WP Super Cache's legacy copies, which it always clears for every site).

Earlier versions

September 2026 46 versions

1.10.1

  • Fixed A Code prefix with a % in it is no longer saved with letters missing. 20%DESC- was stored as 20SC-, and every winner's code started that way. A prefix can hold A to Z, numbers, hyphens and underscores; one with anything else is not saved, your prefix is kept and the message says why. If your prefix lost letters before, type it again without the %.
  • Changed The Code prefix box shows exactly how your codes begin. A prefix is saved in capitals, and one an earlier version saved with an accent, space or symbol is saved the way your codes already began the next time you save, with a message. Codes already given out do not change.
  • Fixed The Coupon rules search finds a coupon with a % in its code on shops with more than 300 coupons.
  • Fixed An address in another alphabet under Excluded addresses now leaves out that page, and nothing else. Pasted from the browser, an address such as /контакты/ was saved as //, which hid the wheel on your front page instead, and a section such as /блог/ as //, which hid it on every page. Addresses are now kept as pasted and match however the browser writes their letters. A line saved before keeps doing what it did: if Excluded addresses holds /, // or //* that you did not mean, delete it and paste the address again.

1.10.0

  • New An email before a won code expires. A few days before a prize code's last day (2 by default, from 10:00 on your store's clock), the winner gets one reminder with the code, the prize, its date and a link that puts the code in their cart. It is sent only while the code is unused and valid, never twice, never to a winner you deleted, and, where your form shows a consent box, only to winners who ticked it. It has its own switch under Settings → Expiry Reminder, its own wording, a preview and Send me a test. On for new installs; shops that had the wheel before are offered it once, for codes won from then on.

1.9.3

  • Fixed Turn the wheel off on a Dashboard left open does what it says. Both Dashboard buttons flipped the wheel whichever way it stood when you pressed, so a Dashboard opened before the wheel was switched off elsewhere put it back on your shop. Each button now sets the way its label says, and if the wheel already stands that way it changes nothing and tells you so.
  • Changed On a network whose sites share one address, each shop's popup remembers its own shoppers. Pressing No thanks on one shop's wheel hid the popup on every other shop of a sub-directory network for a year. Each shop now keeps its own, so shoppers on such networks may see each popup once more. Single sites and sub-domain networks are unchanged.
  • Fixed The Schedule's cache emptying follows a change of time zone. After the site's time zone was changed, the page caches were still emptied at the moments of the old time zone, so cached pages could show the wheel outside its window. Both moments are now booked again from the new time zone.

1.9.2

  • Fixed Your prize keeps every code a shopper wins, not only the last. On a wheel that lets an email spin more than once, a second win no longer replaces the first: the button, then called Your prizes, lists up to five codes, newest first. A code leaves the button while it is in the cart and comes back if another of the shopper's codes takes its place there; it goes for good once an order uses it, it expires, or it is taken out of the cart. After a sixth win the oldest code leaves the button and still works from the winner email. If your host or a CDN caches your pages, empty that cache after updating.

1.9.1

  • Fixed Your prize no longer hides the wheel from someone who can still spin. On a wheel that allows more than one spin per email, the launcher stays, with the Your prize button beside it, and other buttons in that corner move up to make room.

1.9.0

  • New A Your prize button. After a win, a small button keeps the code on your shop's pages until it is in the cart, used in an order or out of date, with Copy code and the apply button where the result panel offers it. It never shows on the checkout. The code stays in the shopper's own browser, and where WP Consent API is active it is kept only for shoppers who allow preferences. It is on for new shops, and existing shops are offered it on the Dashboard.

1.8.1

  • Fixed Saving the Wheel screen keeps the wins made while it was open. A prize won while the screen was open is no longer given back when you save, and one that sold out meanwhile stays sold out, even if another tab changed the prizes in between. A stock you type is saved as you typed it, and saving the Settings, Display or Email Lists screen, or turning the wheel on or off, leaves the prizes as they are.
  • Fixed A coupon moved to the bin in a bulk action no longer undoes wins. When a coupon a prize takes its rules from goes to the bin during a bulk action or a clean-up task, prizes won in the meantime are no longer given back, a sold-out prize stays sold out, and changes saved in the meantime are kept.
  • Fixed French counts zero in the singular. French writes "0 message", not "0 messages", and the plugin's French now counts the way WordPress's own French does.

1.8.0

  • Changed The wheel stops showing when no prize can be won. When every prize was sold out, set to a weight of 0 or waiting for its coupon rules, a No luck slice with a weight kept the wheel on your shop, asking for email addresses and marketing consent while every spin had to land on No luck. The wheel now stays off until a prize can be won again, and the page caches the plugin knows are emptied so cached pages stop showing it. The Dashboard, the Wheel screen's save message, the odds line under the prizes and the note where you placed the shortcode all say why.
  • Fixed Two shoppers spinning at the same moment can no longer both win the last one of a prize. The stock used to be counted down only after the coupon was made, and the wheel now sets one aside as it draws the prize, so the second shopper lands on another slice, or keeps their spin and is told nothing is left. A prize the wheel has shown is never taken back, and a shopper's win no longer writes over a change you save at the same moment. A shopper spinning for the first time who is turned away like this, or whose coupon could not be made, is no longer kept as a lead.
  • Fixed A visitor is counted once when the server writes their address two ways. Some servers write a visitor's IPv4 address the IPv6 way, as ::ffff:203.0.113.7, and it is now read as 203.0.113.7 however it is written. On such a server behind Cloudflare or a proxy of your own, every shopper was taken for the proxy and they all shared one limit on spins from one connection; each shopper now has their own, and spins already counted start again from zero, once. Each spin now stores the plain address with its lead, and a lead saved before keeps the address it has until it spins again.

1.7.0

  • New Coupon rules for each prize. Choose one of your own coupons for a prize and its winners' codes copy that coupon's limits, such as a minimum spend or chosen products and categories, with an expiry of their own if you set one. Winners see those conditions under their code and in the win email, and a free gift is a 100% prize on a coupon limited to one product and one item. If that coupon is later moved to the bin, deleted or unpublished, the prize cannot be won until you choose again, and the Wheel screen and the Dashboard name it.
  • Changed Wheel revenue now comes down after refunds. From this update on, a refund on an order that used a wheel coupon comes off the Revenue figure, and an order that is cancelled, refunded in full or whose payment fails comes off entirely and leaves the order count. The Revenue card now says the figure is after refunds, and on a shop that already had the wheel it names the day that started. A refund from before that day stays in the figure until something new happens to the same order, and then all of that order's refunds come off together.
  • Changed A Fixed product discount prize now says what it takes off. WooCommerce takes a fixed product discount off every item in the cart, so a prize of that type with no coupon rules now carries a note saying so on the Wheel screen. Your winners' codes work as before until you choose coupon rules for it.

1.6.22

  • Fixed Spins outside the Schedule no longer give out coupons. Only the popup was held to the Schedule on the Display screen, so a wheel placed on a page with [trasl_lucky_wheel] could still hand out real coupons after the window had closed. Spins from the inline wheel and from the popup are now refused before the window opens, after it ends and outside the chosen days and hours, so a page a cache kept may still show the wheel but cannot give out a coupon.
  • Fixed A wheel placed with [trasl_lucky_wheel] keeps to the Schedule. Outside the window the inline wheel is not drawn, and administrators see a note in its place. If you used a window that had already ended to keep the popup shut while the inline wheel ran, the inline wheel is now hidden too: set "Display on" to "Only what I choose below" with nothing chosen, and the Schedule to "Always".
  • Fixed A launcher in the middle of a side no longer drops when the pointer reaches it. A tab placed in the middle of the left or right side moved down by half its height on hover. It now lifts slightly and stays centred, and for shoppers who ask for less motion it stays still.
  • Fixed A launcher in the middle of a side no longer covers Social Share's floating buttons. When both are on the same side, the tab now steps in beside the share buttons instead of sitting on top of them. This needs Social Share Buttons updated as well, since it is the share buttons that tell the wheel how far in they reach.
  • Fixed Emptying the Spin button text no longer leaves two buttons blank. The Spin button and the floating tab now say "Spin the wheel" when that text is left empty.
  • Fixed Shoppers who ask for less motion no longer see the wheel spin. With reduced motion switched on in their device's settings, the wheel still turned, only faster, and then wound back. It is now shown stopped on their slice, with their result.
  • Fixed The floating tab is named by the words on it. It was called "Open the prize wheel" whatever it said, so a shopper using voice control who spoke the words on the tab reached nothing. On larger screens its name is now the words it shows, and on phones, where only its icon shows, screen readers still hear those words.
  • Fixed Our plugins on one site use the newest licence code among them. With several of our plugins on one site, licensing and updates for all of them now run on the newest licence code any of them carries, whatever order WordPress loads them in. The one exception is while the first of our plugins that WordPress loads (usually the alphabetically first) is on a release from before this one: its older code still serves them all until that plugin is updated. An older plugin of ours on the same site can also no longer stop this plugin's admin screens loading.
  • Improved Page caches are emptied when the Schedule starts and ends. When the Schedule on the Display screen has a start or end date and the wheel is on, the page caches the plugin knows (NimbleCache, WP Rocket, LiteSpeed, W3 Total Cache, WP Super Cache, WP Fastest Cache, SiteGround, Breeze, WP-Optimize and Cloudflare's plugin) are emptied as the window opens and again as it closes (until 1.9.3, a later change of the site's time zone left them at the moments of the old time zone). This runs through WordPress's scheduled tasks, so it happens on the first visit that reaches WordPress after that moment. Days of the week and hours of the day do not empty caches.

1.6.21

  • Fixed A percentage prize on a slice with no label of its own is named correctly. A 20% slice read "2% off" in the winner's message, in the win email and in the coupon's own description, while the coupon really took 20% off; every percentage ending in a zero was wrong the same way. Slices that carry a label were never affected.
  • Fixed The wheel is back on product pages and product archives for shops that had chosen "Shop". That setting always meant the shop page and everything in it, but the move to display rules kept only the shop page and dropped the rest without a word, so a wheel set up that way stopped appearing where most shoppers are. Those shops get it back, and the Display screen now names those places in WooCommerce's own words instead of listing them as deleted.
  • Fixed Shoppers can still spin when the spam check cannot be reached properly. A reply that arrived but was not Google's, such as a gateway error page or a filtering proxy's block page, was read as "this shopper is a bot", so every spin on the shop was refused until the check came back. A reply that cannot be read now lets the spin through, as a timeout already did, while a real refusal from Google still stops it.
  • New Addresses that never reached Mailchimp or Klaviyo are counted on the Email Lists screen. The hand-off runs in the background minutes after the shopper has gone, so a rotated API key or a deleted list failed with nobody watching, while the screen went on showing the platform connected. It now says how many addresses did not arrive, when the last attempt was and what the platform said, so you can export those leads and add them by hand. Nothing is sent again automatically, and the warning clears when a Test connection succeeds or when you change that platform's own details.
  • Fixed The limit on how often one visitor can spin no longer keeps a readable stand-in for their address. It was stored under a plain hash of the visitor's IP address, which sits in the site's options table and can be turned back into the address in seconds. The name is scrambled with the site's own secret now, and the limit itself behaves exactly as before.
  • Fixed A failed activation no longer throws away the licence key you entered. When the licence server could not be reached, or sent back something that could not be read, the Licence screen cleared the stored key and the list of sites using it, and asked you to go and find the key again. Only an answer from the server about the key itself changes what is stored now.
  • Fixed A key the licence server does not recognise leaves the key box open. When a key is reissued or deleted while this site still holds it, the notice on every admin page sends you to the Licence screen to enter it again, and the box was locked there with nothing to press but "Deactivate this site". The box stays editable now, so the right key can be pasted straight in.
  • New A "Check again" button on the Licence screen. Renew your licence, or have it put right by support, and one press picks it up instead of waiting for the next automatic check. If the check cannot be made, the screen says why and changes nothing.
  • Fixed "Deactivate this site" and "Free" work with the key box empty. Neither of them reads the box, but clearing it answered both with "Enter your licence key first." and sent nothing. "Check again" works the same way.
  • Fixed The search and filter box on Leads now filters. Typing words and pressing Filter brought back the whole list with the box empty again, because the words were sent where the screen does not look for them. The list narrows now, and your words stay in the box and in the address, so a filtered list can be bookmarked or sent to someone.
  • Fixed A fixed-amount prize on a slice with no label says what it takes off. On the rare setup where WooCommerce is not loaded to price it, the wheel printed a bare figure such as "20", with nothing to say what it meant. It now reads as an amount in the site's own number format with "off" after it.
  • Fixed The screen no longer scrolls itself to the top after you leave a page with a suggestion list open. A "show it on these" box left open when you moved to another screen, or when you pressed Back, kept correcting the page position on every scroll from where it could no longer be seen, so the screen pinned itself to the top. Those boxes, and the tick lists beside them, now stop listening when the screen changes.
  • Improved Repeating a search in a "show it on these" box no longer goes back to the server. On a catalogue too large to hold in the browser, a term you had searched a moment ago was asked of the server again. Smaller catalogues already had the whole list in the browser, so nothing changes there.

1.6.20

  • Fixed One spin gives one coupon, however many times it is posted. The spin was only written down after the coupon had been made, so several copies of the same request arriving together all passed the check for spins already used and each made a live coupon for that address, every one of them good for its own order, while the Leads screen still counted a single spin. The spin is now claimed before anything is made, and only the first of those requests can claim it. A coupon that cannot be created still gives the shopper their go back, the wait between spins included.
  • Fixed Two wins in the same moment no longer leave a prize's stock miscounted. Both wins read the same figure and wrote the same one back, so one of them was never taken off, and anything else you saved on the wheel in that moment was written over by the older copy. Taking one off a prize's stock now waits its turn. The stock is still counted after the wheel has stopped, so a last unit drawn by two shoppers at the same instant is still won twice.
  • Fixed A spin the site could not record now says so. If the leads table is missing or will not take the row, a first-time visitor was told they had already played, which nobody could tell apart from a spin that really had been used. They are now asked to try again.
  • Fixed An empty "Message when they have already played" no longer leaves the popup blank. With that box cleared, a shopper who had used their spins was shown a refusal with no words in it. They now read the wording the plugin ships with.
  • Fixed Paging through Leads shows every lead once. Leads that spun in the same second could change places from one page to the next, so one was listed twice and another never listed at all. That is settled now, with a search or a filter on as well.
  • Fixed A page number past the end of Leads shows the last page. Deleting the only lead on the last page sends the browser back to that page number, and Leads then said there were no leads at all, under a card counting hundreds of them and with no page links to get back. It now shows the last page there is.
  • Fixed Network activation only prepares the sites of the network you switched it on for. On an installation running more than one network, switching the plugin on for one of them also created its leads table and wrote its settings on the other network's sites, which never load it.
  • Fixed Deleting the plugin clears away leads tables from network sites that are gone. When a site is deleted from Network Admin, WordPress asks the plugins that site is running which tables to take with it, and a plugin switched on for that site alone is not running at that moment. Its leads table stayed in the database with nothing but its name to say it had ever been ours. Deleting the plugin now removes those too, after checking that the site really has gone.
  • Fixed "Check again" on the Updates screen asks straight away. A minute of trouble reaching our server shut that button for a quarter of an hour, for this plugin and for every other one of ours on the site, with nothing on screen saying why. Pressing it now clears the wait and asks.
  • Improved The Leads list draws a short run of page numbers. A wheel that has collected three thousand addresses printed a hundred and twenty buttons under a table of twenty-five rows. You now get the first and last pages, the two either side of the one you are on, and Previous and Next.
  • Improved Fewer database lookups on WPML sites. When a display rule names particular pages, the ones in Exclude for instance, each of those pages was fetched on its own every time a visitor opened a page. They are now read in one go. Sites without WPML are unchanged.

1.6.19

  • Fixed The wheel always stops on the prize the shopper is told they won. If your prizes change while a shopper has the page open, or while a page cache still holds the old wheel, the wheel is now redrawn before it spins. Changing, pausing or reordering the wheel and its prizes also clears your page cache.
  • Fixed Importing a settings file with fewer than three prizes keeps your own prize list, rather than replacing it with the starter prizes.
  • Fixed Turning on reCAPTCHA without a site key no longer blocks every spin.
  • Fixed A schedule that runs past midnight keeps to its days. In the Schedule panel, a Friday window from 22:00 to 02:00 now stays on until 02:00 on Saturday. It used to stop at midnight, and to come on between midnight and 02:00 early on Friday instead.

1.6.18

  • Improved Fewer database queries on every admin page. Each of our plugins checks its licence on every admin screen, to know whether to show the licence notice, and read its saved licence and its "Remind me later" flag with a query each. With the whole range installed that was thirty separate lookups on every admin page, most of them for rows that do not exist yet. They are now read together in one query (on WordPress 6.4 or later). Measured on a test site with all fifteen plugins: the WordPress Dashboard went from 41 queries of ours to 12.

1.6.17

  • Improved A download is made once, not twice. Pressing Export CSV on Leads and Export settings built the file twice: the admin's no-reload navigation fetched it first, found a file rather than a screen it could show, and then asked for it again the ordinary way. On a long list that was twice the wait, and twice the work for the server. Each download is now a single request. Measured in a browser: two requests per click before, one after.

1.6.16

  • Improved Saved API keys and the reCAPTCHA secret are no longer shown on screen or written into the page. The Mailchimp and Klaviyo API keys and the reCAPTCHA secret sat in plain text boxes, readable by anybody looking at the screen or at a screenshot sent for help, and in the page for anything that reads it. The boxes now stay empty and say a key ending in its last four characters is saved. An empty box keeps the key, a typed one replaces it, and Forget the saved key removes it. Test connection with the box empty tests the saved key. The boxes also tell browsers not to fill in a saved sign-in password, which a save would otherwise have stored as the key.

1.6.15

  • Fixed Importing a settings file removed the reCAPTCHA secret and the Mailchimp and Klaviyo keys. The keys are left out of exported files, and importing a file put the blanks over the site's own keys, even when the file came from the same site. With the secret gone, the reCAPTCHA check on each spin was skipped, and with the API keys gone, new leads stopped reaching Mailchimp and Klaviyo; nothing said so. Importing now keeps the keys the site has, and a key written into a file by hand is not taken from it.

1.6.14

  • Improved Pages with the wheel download less. The script and stylesheet visitors are sent are now minified: 23.9 KB became 10.7 KB compressed, 55% less, on every page that shows the wheel. The readable files stay in the plugin, and a minified copy is only ever sent while it was built from the file as it is now, so an update can never be hidden behind an old copy. With SCRIPT_DEBUG on, the readable files are sent, as WordPress does for its own. Checked by photographing the same pages both ways at two screen sizes: identical, pixel for pixel.

1.6.13

  • New Four more shapes for the popup: Split, Dome, Frame and Sheet. Eight now, and every one of them still wears the colours you chose, so trying a shape never changes them. Split puts the wheel on a tinted half beside the words; Dome sets it in an arched top with the words centred beneath; Frame is an invitation card, square-cornered with a fine double line inside the edge and a serif heading; Sheet rises from the bottom of the screen, full width, with the fields in a row, which is the shape a phone shopper knows from every app. Each stacks to one column on a phone, mirrors on a right-to-left shop, and has its own silhouette in the picker.

1.6.12

  • Improved One update check for all of our plugins on a site, instead of one each. Every plugin of ours used to ask our server about updates separately — fifteen requests in a row on a site with the whole range, twice a day and every time you press "Check again". The first plugin asked now asks for all of them at once, and the rest read the answer. Measured on a site with all fifteen: fifteen requests became one, and the whole check took a third of a second. If our server refuses or cannot be reached, every plugin waits the same fifteen minutes before trying again, rather than each trying in turn.

1.6.11

  • Improved A launcher in a top corner says how much of the corner it takes, so a dark-mode switch put in the same top corner stands above it instead of on it — the same rule the two already follow at the bottom.

1.6.10

  • Fixed A launcher in a top corner stood under a top banner or bar. It now adds the height of whatever the range has pinned to the top of the window — a shipping bar, a cookie banner, WordPress's admin bar for anyone signed in — to its distance from the edge, as it already did at the bottom.

1.6.9

  • Fixed The wheel keeps the colours you chose in dark mode. The launcher and the popup carry your colours, and a dark engine changed only half of them — measured on the page: the launcher's white words were dimmed to 4.2:1 on the same orange, under the 4.5:1 that can be read. Both now ask our Dark Mode (1.3.8 or later) to leave them exactly as designed, and their fills are written so any other dark engine follows them instead of losing them. Found by a new check that reads every widget we put on a page the way a screen reader and a keyboard do.

1.6.8

  • Fixed A shop with a lot of leads could not download them. Every lead was read into memory before the spreadsheet was written, so a shop that has been running the wheel for a year — one lead per address it collected — could ask for its list and get a blank page instead. The file is now written out as it is read, a thousand leads at a time, and the length of the list no longer matters.

1.6.7

  • Fixed A wp-admin that would not load when our licence server could not be reached. Each of our plugins checked for its own updates, and if the server was unreachable each one waited out its own fifteen-second timeout — so a site with several of them could spend minutes on a single admin page, twice a day, for something entirely outside its control. The first one to find the server unreachable now says so for the whole site, and the others stand down until it is worth trying again. Measured on a site with fifteen installed: fifteen waits became one.

1.6.6

  • Fixed "Delete everything on removal" was leaving four notes on every order that came from a spin — which wheel it was, which prize, which lead, and that the order was attributed to the wheel at all. On a shop that has been running the wheel for a year that is a great many rows, and nothing in the removal had ever mentioned them. Found by removing the plugin on a test site and counting what was still in the database.

1.6.5

  • Fixed Import now asks before it replaces every setting you have. The Import button said in its own hint that it could not be undone, and then did it the moment you pressed it: the question that was meant to appear never had anything to show it.
  • Fixed Deleting a lead keeps asking on sites with a strict security policy. The confirmation was written into the page in a way that some sites block for safety, which quietly removed it altogether — so a single click deleted a lead for good. It is now asked in a way no security policy switches off.

1.6.4

  • Fixed A setting that is waiting on another one is readable again. A field held back until you switch something else on is dimmed, so it does not look identical to one you simply have not used — but it was dimmed so far that its label and explanation fell below the contrast a person with ordinary eyesight needs. Measured on the rendered screen at 2.55:1 against the 4.5:1 minimum, and now 4.75:1 and 5.02:1. The greying, the sunken background and the blocked cursor carry the rest of the signal.

1.6.3

  • Fixed A site deleted from a network no longer leaves its tables behind. WordPress asks every plugin for the tables it owns when a site is removed, and this one never answered, so its collected leads stayed in the database for ever with nothing left to say which site it had belonged to. On a network that creates and removes sites regularly that is thousands of orphan tables and a database that stops fitting in its backup window. Deleting a site now takes its collected leads with it.

1.6.2

  • Fixed Exporting a spreadsheet on PHP 8.4 could put a warning inside the file. PHP 8.4 deprecated the way this plugin was asking for a CSV row, and a host with error display switched on prints that notice into whatever is being sent — which for a download is a corrupt spreadsheet. It asks the new way now.

1.6.1

  • Fixed A link could put words of its own into an admin notice. The bar that appears at the top of a screen after an action took its wording from the address, so a link crafted by somebody else could show an administrator a sentence this plugin never wrote. Only the sentences the plugin itself registers are shown now.
  • Improved The help text under each setting can be read at a glance. A settings screen is scanned, not read, and several notes here had grown into paragraphs. They say the same thing in a line or two, in Spanish and French as well as English.

1.6.0

  • New Move your wheel to another site. Settings → Import / Export writes a small .json file with the prizes and their odds, the colours, the wording, the coupon rules and when the popup appears — and reads one back on your next site, so a wheel you spent an afternoon on does not have to be built again from a screenshot. The prizes themselves travel: they are labels, amounts and odds, nothing that names a product by a number.
  • New Your API keys are never written into that file. The reCAPTCHA secret and the Mailchimp and Klaviyo keys are left out on purpose — it is a file made to be moved, and a key in a file that travels is a key that leaks. The switches travel; you paste the keys in again on the new site, and the panel says so. Rules that show the popup on particular pages are left behind too, because those are numbers that mean something else elsewhere.
  • Improved Settings are checked wherever they come from, not just on the form. What counts as a valid value used to live on each of the four admin screens, keyed to that screen's own fields — which made the screens the only safe way to write a setting. It now lives with the settings, so anything writing them is held to the same rules: an unknown design, a colour that is not a colour, a delay outside its range or a wheel with two prizes are refused whoever asks.

1.5.1

  • Fixed The Form panel heading had no icon. It asked for a mark the plugin did not carry, so it drew nothing and sat unmarked beside the panels that were.

1.5.0

  • New The Licence screen now shows which sites are using your key. "You have used all your activations" used to leave you to work out which sites those were, in your account, on another tab. Every site on the licence is listed now — the date it was added, when it last checked in, and a Free button beside it — so you can let go of a site you no longer run and put this one on without leaving the page. "Last seen" is the column that decides it: a copy that stopped checking in months ago is the one to free. The list appears on a refused activation too, directly under the key you just typed, with the same buttons. Local and staging copies are listed as well, marked free, so the count adds up.
  • Improved Updates follow the activation, not just the key. Freeing a site now really does free it: that site is still told when a new version exists, but it is not handed the download, and its own Licence screen says plainly that it is no longer on the licence and offers to activate again.
  • Fixed Two things on the Licence screen were never translated — the screen's own heading, and the "2 of 3" activation count. Both read in your language now.

1.4.36

  • Improved Plainer words on every screen, after somebody who runs a shop and has never written code read the whole plugin and said what they could not follow.
  • Fixed A field sent you to a "Prizes screen" that does not exist. It is the Wheel screen, and the line now says so.
  • Fixed "A honeypot and rate limiting always apply" told a shop owner nothing. It now says spam entries and rapid repeat spins are always blocked, and what reCAPTCHA adds on top.
  • Fixed A failed connection test gave a bare status number. It now says what to check first.

1.4.35

  • Fixed Tabbing onto a "Remove" or "Undo" link showed the wrong ring, or none. Those quiet link-shaped buttons in a table row are WordPress's own kind, and WordPress rings them in its blue with a rule stronger than the one this plugin writes — strong enough that it also cancelled the ring the plugin draws. Somebody working down a screen with the keyboard either saw a colour that belongs to no part of this plugin, or lost sight of where they were altogether. They now wear the same ring as every other control here.

1.4.34

  • New Four designs for the popup, and a picker to choose one. Until now the popup had one shape and you set it colour by colour. Card is what it has always looked like — the wheel beside the words in a rounded panel — and stays the default; nothing changes for a shop that has already set one up. Stack is one narrow column with the wheel on top. Ticket is a cloakroom ticket: square corners, a torn perforation between the wheel and the form, and a notch punched out of each end of it so the page shows through. Strip is a wide, low band with a small wheel and the form fields side by side, made for a page rather than a popup. Each one is drawn in the colours you already chose, so trying them costs you nothing.
  • Fixed The shop's theme was styling the form inside the popup. On Storefront, and any theme that styles inputs with one class, the field edge this plugin measures for contrast was never drawn at all — 1.53:1 where 3:1 was intended — and the boxes came out in the theme's grey instead of white. Every control the popup owns now outranks the theme, so the colours it works out are the colours you see.
  • Fixed The floating tab ignored your colours. It was the same orange whatever the shop had chosen, on every page, for every visitor. It now takes your Pointer colour — which ships as that same orange, so nothing moves unless you changed it — with its label in black or white, whichever can be read on it, and a hairline edge when the colour is too pale to be seen on a white page.
  • Improved The panel's type is a scale instead of nine sizes. Four of the old sizes were within a pixel of each other. The heading, the message, what you type, the small print and the field labels now step apart, and the spacing sits on a four-pixel rhythm, so the panel reads as one thing.
  • Improved The consent tick box is bigger and takes your button colour rather than the browser's blue, and it lines up with the first line of its own label.
  • Fixed Half the prizes read upside down. Every label was written straight out from the middle of the wheel, so the ones on the left-hand side arrived on their heads — and that is the side a shopper reads while the wheel is standing still. Each label is now turned the right way up wherever it sits, and turned again when the wheel comes to rest, so the prizes can be read whichever way it lands.
  • Fixed A three-word prize could be written back in the wrong order. A label too long for one line is split across two, and the split measured each word against the first line on its own — so a short word after a long one hopped the break and "Free shipping today" came out as "Free today" above "shipping". The wheel said something the shop never offered.
  • Improved The whole popup fits a phone screen. It stood 766 pixels tall on a phone 667 tall, which left the Spin button below the bottom of the screen: a shopper had to scroll a popup to find the button it had opened for. On a short screen every measurement now comes down one step together — the wheel, the padding, the space between the fields — and the wheel, the words, the form and the button arrive on one screen. On the very smallest phones still in use the Spin button sits at the bottom of the screen instead of below it. Fields stay big enough to hit with a thumb throughout.
  • Fixed A long heading ran underneath the close button. There is room kept for it now.
  • Fixed The inline wheel's border was black at six per cent, which is nothing at all on the dark panel the plugin ships with. It is mixed from your own two colours instead.
  • Fixed A visitor whose system asks for less motion still got the popup rising into place, the overlay fading in and the buttons lifting under the pointer. Only the wheel and the confetti had been covered.
  • Fixed "No luck this time — thanks for playing!" now reads "No luck this time. Thanks for playing!" Spanish and French are unchanged in meaning.

1.4.33

  • Fixed On phones the popup could not be closed or played. On an iPhone SE, or any phone on its side, the popup was taller than the screen and ran off both ends, with the close button out of reach, the Spin button half hidden and no way to scroll. The popup now scrolls when it needs to, the close button stays in view at the top, the wheel is sized to the screen's height, and on a phone on its side the wheel and the form stay side by side.
  • Fixed Shoppers who had already played were shown the wheel again every day, only to be told they had already played. After a spin the popup now stays away for as long as the wheel would not let them spin again: a year with one spin per email, and otherwise until their next spin is allowed.
  • Fixed A spin on the [trasl_lucky_wheel] wheel was not remembered, and the popup opened on top of the page the shopper had just played on, and on every page after. The popup no longer opens by itself on a page with the shortcode, and a spin there counts like one in the popup.
  • Fixed "On exit intent" never opened the wheel on phones or tablets, which have no cursor to leave with, so with the launcher off most shoppers could never see it. On a touch screen it now opens when the visitor scrolls quickly back up the page, and the Display screen says so.
  • Fixed A white or light popup was hard to use. The form fields' edges, the close button, the coupon's border and error messages were fixed colours made for the dark default panel, so on a white panel the Name field disappeared and errors were pale pink on white. They are now worked out from your panel colours and always meet WCAG AA contrast. The same fix makes the inline wheel's errors readable: they were dark red on the dark default panel.
  • Fixed For keyboard and screen-reader users, pressing Spin no longer throws them out of the popup to the top of the page. "Good luck!" is read out as the wheel turns, and the result is read out and focused when it stops, so the coupon code and its buttons are the next thing they reach.
  • Fixed The wheel's text now shows in your shoppers' language with WPML or Polylang. The heading, description, button text, consent line, messages, winner email and prize labels can all be translated there, and the result and winner email come in the language of the page the shopper spun on.
  • New Preview on site. A button on the dashboard and the Wheel screen opens your shop with the popup already open, even before you switch it on, so you can check the panel, form and colours as shoppers will see them. Only you see it, and spins in a preview make no lead, coupon or email.
  • New "No thanks" link under the Spin button, so a visitor who does not want to play can close the popup for good in their browser. Change its wording, or leave it blank for none, with Decline link text on the Wheel screen. New shops have it; if you set up your wheel before this version, add a label there to show it.
  • New The Wheel screen shows the chance each prize is won beside its weight, and how many spins win anything under the table, updated as you edit.
  • Improved Google reCAPTCHA and any Google font you chose are now only loaded when a visitor opens the wheel, instead of on every page it could open on, which makes those pages faster. With reCAPTCHA on, Google's badge no longer covers a bottom-right launcher: the form shows Google's wording instead, as Google allows.
  • Improved The floating launcher now sits above a bar fixed to the bottom of the screen by another Traslatability plugin, such as Free Shipping Bar, and follows right-to-left languages to the other side of the screen. Every control in the popup has a clear focus ring.
  • Improved On the Wheel screen each box in a prize row, and the search and filter on the Leads screen, now have names a screen reader can announce.
  • Improved After this update the plugin empties your page cache once, if the wheel is on, so pages cached before it pick up the new popup straight away.
  • Improved Admin screens are easier to read: faint help text and switched-off toggles now meet WCAG AA contrast.
  • Improved Checkboxes show a clear focus ring when you reach them with the keyboard, and the tick in a ticked box draws correctly on phones.
  • Improved A page rule that names a particular page or category now also applies to its translations under WPML or Polylang, and each group of ticks in the page rules is announced by name to screen readers.
  • Improved With several Traslatability plugins on one site, their bars and buttons no longer land on top of each other. A shipping bar and a share bar at the foot of the screen stack one above the other, and a prize-wheel launcher, a contents button and a dark mode button in the same corner stand one above the next.

1.4.32

  • Fixed "Apply to my cart" now works for the shoppers most likely to press it. A new visitor with an empty cart landed on the cart page with no coupon and no message, and one with items in the cart saw "Please enter a valid email at checkout" instead of the discount, because the coupon is locked to the winner's email and a guest has none on file yet. The button now keeps the coupon on the cart, and fills in the address the winner typed into the wheel as their billing email when none has been entered.
  • Fixed The wheel stopped spinning on pages your cache had kept for more than a day, showing "Cookie check failed" to every visitor. The spin no longer carries a security token that can go out of date; the protections against abuse are unchanged.
  • Fixed A prize that had run out could come back with no limit. It showed Stock 0 and Weight 0, which looks like "unlimited, switched off", and raising the weight gave it away without any cap. A prize that runs out is now marked Sold out on the Wheel screen and stays out of the draw until you give it a new stock, or untick the mark to offer it with no limit. Prizes that ran out before this update cannot be told apart and are not marked, so check the stock of any capped prize before raising its weight.
  • Fixed The expiry date given to winners was a day late, and worked out on London time. A coupon described as "Valid until 19 September" stopped working as that day began — on the evening before, in the Americas. Coupons now last to the end of the day on your store's clock, and the date given is the last day they can be used.
  • Fixed "+ Add prize" did nothing when you reached the Wheel screen from the bar at the top of the plugin, or after saving it. It now works every time.
  • Fixed Saving the Wheel screen said only "Done.", and showed it in red when the prizes had not been saved. It now says "Wheel saved.", or exactly what was and was not saved, and turning the wheel on or off says which.
  • Fixed The winner's email arrived from "WordPress <wordpress@…>" rather than from your store. It is now sent through WooCommerce, from the sender name and address under WooCommerce → Settings → Emails.
  • Fixed A new shop's popup text, consent line, messages, winner email and example prizes were in English whatever the site's language, and the example "$15 off" slice said dollars on every store. They now start in your site's language and your store's currency. Shops that have already saved their settings keep the wording they have.
  • Fixed Choosing "Only when clicked" with the floating launcher switched off left a wheel nobody could open, while the dashboard said it was live. The launcher is now always shown with that trigger, and its switch is greyed out while it is chosen.
  • Fixed A slow or unreachable Mailchimp or Klaviyo kept the wheel waiting for up to twelve seconds before it turned. New addresses are now sent in the background moments after the spin.
  • Fixed A mistyped email in the wheel's form turned the field red without saying why. It now says "Please enter a valid email address.", and screen readers announce it.
  • Fixed The warning when removing one of the last three prizes, the message when a connection test cannot reach the server, and the lead export's column headings were in English on every site. They now follow your admin language, and the warning appears in the corner of the screen rather than in a browser pop-up.
  • Fixed The Leads screen's Last spin column showed the time in UTC rather than on your site's clock.
  • Fixed Page rules: an excluded URL such as /contact/ now matches on a site installed in a subfolder or on a subdirectory multisite site; "Shop and product pages" now also covers brand and attribute archives; and a rule about the shop, cart or checkout is no longer turned into "Everywhere" while WooCommerce is switched off.
  • New Leads are now part of WordPress's privacy tools. Tools → Export Personal Data includes what the wheel holds for an address, and Tools → Erase Personal Data clears the name, phone number, IP address and consent while keeping the counts, and takes the address off the coupons the wheel gave that person. Settings → Privacy offers a suggested paragraph for your privacy policy, and each row on the Leads screen has a Delete link.
  • New The Wheel screen and the dashboard warn you when a free shipping prize cannot work — no shipping zone has a Free shipping method that accepts coupons, or shipping is switched off — so winners are not left paying for delivery with a "free shipping" coupon applied.
  • Improved The popup now takes keyboard focus when it opens, keeps Tab inside it and hands focus back when it closes, and screen readers are told which prizes are on the wheel.
  • Fixed Activating the plugin from an older WP-CLI or a site-management tool could stop with a fatal error.

1.4.31

  • Fixed Behind Cloudflare, or a proxy on the server such as nginx in front of Apache, every shopper looked like the same shopper, so the spin limit was shared by everyone on the site and the address saved with each lead was the proxy's. Spin limits now count each real visitor. The "real visitor" headers are believed only when the request truly came through Cloudflare or the site's own proxy, so nobody can fake their way past a limit by sending them.

1.4.30

  • Improved On a new install the wheel is kept off the checkout page from the start, so it never pops up in front of the payment form. Existing shops keep their own setting; to do the same, open Display and tick Checkout under Common exclusions.
  • Improved When more than one Traslatability plugin is waiting for its licence key, the admin shows one notice naming them all, each name linking to its own licence screen, instead of a separate notice per plugin at the top of every admin page. "Remind me later" quietens all of them for a week. An expired or revoked licence still gets a notice of its own.
  • Fixed "Delete all data on uninstall" now also removes the licence key and the update records, which were left behind in the database.
  • Fixed In the search-as-you-type picker, screen readers now hear "1 result" rather than "1 results".

1.4.29

  • Fixed The Slice text colour on the Appearance screen never reached a slice. It was meant for "any prize with no colour of its own", and every prize has had its own colour since the prize editor shipped. It is now the colour a new prize starts with, and a prize saved with a blank colour falls back to it instead of to white.
  • Fixed The lead export guards against spreadsheet formulas. A name or phone typed into the wheel's form starting with = + - or @ ran as a formula in Excel — including ordinary international numbers written +44…, which showed as errors.
  • Improved "Wait between spins" is greyed at one spin per email, where there is no second spin to wait for, and the already-played message is greyed when spins are unlimited.
  • Improved A setting can now depend on another field simply being filled in — a date typed, a picture chosen — rather than only on it holding one particular value. Several screens in the range needed exactly that and had no way to say it.

1.4.28

  • Improved Values arriving from the browser are now unslashed before use, the way WordPress expects. WordPress adds a backslash in front of every quote and apostrophe in a submitted value, and it is up to each plugin to take them off again. In most places here that changed nothing you could see, because the value was being cleaned in a way that discarded them anyway — but it is what WordPress's own plugin checker looks for, and it removes a whole class of quoting bug before it has a chance to appear.

1.4.27

  • Fixed A user-role rule went on filtering after the screen stopped showing it. The role ticks on Display Rules appear only once "Signed in" is ticked, and whatever had been chosen before that carried on being applied from a panel nobody could see. A site that had once picked a role and then switched to "Signed out only" ended up with two rules cancelling each other out, one of them invisible, and nothing on the screen to explain why nobody was seeing anything. The rule now applies exactly when it is on show.

1.4.26

  • Fixed A display rule about something the site no longer has was quietly destroyed. Post types, taxonomies and roles arrive with other plugins and leave with them, and the display rules were checked against whatever happened to be registered at that moment — on every save of every screen. Switch WooCommerce off, change a colour on an unrelated screen, save, and the rule about products was gone. Turning WooCommerce back on did not bring it back, and nothing had said a word. Such a rule is now kept, and shown on the Display Rules screen marked "(not available)" so it can be seen and unticked rather than sitting in the database where nobody can reach it.

1.4.25

  • Improved Settings that depend on two answers at once now stay greyed out until both are met. Where one greyed group sits inside another, the inner one used to switch its own fields back on whenever its own condition was satisfied, whatever the group around it had decided. No screen in this plugin is arranged that way today; the safeguard is in place before one is.
August 2026 54 versions

1.4.24

  • Improved The WooCommerce page in the display rules is called "Cart", matching WooCommerce itself. It read "Basket" before.

1.4.23

  • Improved Wording across the admin now follows WordPress conventions. The display screen's first panel is "Trigger", the message fields read "Message when they win" rather than "When they win", and panel titles are consistently capitalised. Nothing about how the wheel works has changed.
  • Improved Spanish and French translations updated to match.

1.4.22

  • Fixed In the section bar's two-row layout, the first section now lines up with the plugin icon above it, and the sections fill the height of their row instead of sitting against the top edge.

1.4.21

  • Fixed The section bar no longer breaks onto a second line when a plugin has several sections. It is two tiers by default — the plugin name and the Documentation button on top, the sections on a full-width row beneath — and collapses to one row where everything fits.

1.4.20

  • Improved Field labels are shorter and every save button reads "Save changes", matching WordPress itself.

1.4.19

  • Improved Every screen has been reworded to WordPress conventions. Section names, field labels and help text are shorter and say plainly what they do, and a save now answers "Settings saved." rather than describing what was saved. Nothing about how the plugin works has changed.

1.4.18

  • Fixed The changelog inside the plugin listed only a handful of the releases there have been. It is generated from the same source as the one on the website now, so "View details" on the Plugins screen shows every release rather than stopping months ago.
  • Improved Every changelog entry says what kind of change it is: new, improved, fixed or removed.

1.4.17

  • Improved A page chosen in one list can no longer also be chosen in the other.

1.4.16

  • Fixed A stylesheet a screen sends deliberately switched off is no longer switched on when you move between tabs.

1.4.15

  • Fixed The floating Save button comes back after changing tabs. It appeared on a freshly opened screen and never again once you moved between tabs.

1.4.14

  • Fixed A site that cannot reach the update server now waits a few minutes before asking again, instead of asking on every admin page load. Nothing changes when the server is reachable; pressing "Check again" still asks at once.

1.4.13

  • Improved Saving now says what was saved. Every screen answered with the same word — “Saved.” — which tells you the one thing you already knew, that you pressed the button. Each screen names what it kept.
  • Improved The confirmation message has no close button and more room at both ends: it leaves on its own after four seconds, and clicking anywhere on it dismisses it.

1.4.12

  • Improved Confirmation and error messages are easier to see: rounder, and coloured by what they are saying — green for saved, red for something rejected, amber for something to look at — each with a mark of its own.
  • Improved A licence message now looks like one. Activating a key answered in an unmarked grey box, whatever it said; it carries the right colour and a mark like every other message on the screen.
  • Improved A licence key that could not be a key is refused on the spot, without a request to the licence server and without reloading the screen. An empty box used to mean a wait, and on an offline site it meant being told the licence server could not be reached.
  • Improved A key pasted out of an email in lower case, or with the dashes lost, is put right rather than reported as wrong.

1.4.11

  • Fixed Confirmation messages line up properly and sit on rounder corners: they were top-aligned with the text nudged down two pixels to meet the icon, which on a one-line message read as a misalignment because it was one.

1.4.10

  • Improved Confirmations are easier to see. The message after a save is bordered in the colour of what it is telling you, sized to the words rather than stretched to a fixed card, and it now says what was saved rather than just "Saved".
  • Improved It stays for four seconds instead of three — long enough to read a sentence — and hovering it holds it open.

1.4.9

  • Improved Tab changes are instant. The plugin's other screens are fetched quietly in the background while you read the first one, so by the time you click a tab there is nothing left to wait for — tens of milliseconds instead of a second and a half.
  • Improved One at a time, never in parallel, started only once the screen you are on is ready and the browser says it is idle, stopped the moment you navigate, and skipped entirely on a metered connection.

1.4.8

  • New An admin that never reloads. Every screen arrives without a page load and every save happens where you are standing — and the screen you are heading for is usually already fetched, because moving a pointer to a menu item takes long enough to fetch it.
  • New Saved, and told so where you are looking. A save answers in a small message in the top-right corner that clears itself after a few seconds, instead of reloading the page and putting a notice above the header.
  • Improved It is an enhancement, not a dependency: if a fetch fails or scripting is off, links navigate and forms submit exactly as they always did, and the server side is unchanged.

1.4.7

  • Improved Notices redesigned: a quiet bordered card at 14px with the tone carried by a tinted icon, rather than a block of colour in coloured type.

1.4.6

  • Improved Every notice this plugin prints now looks the same: a white box with a coloured rule down its edge — orange for something to do, red for something wrong, green for something that worked. WordPress tinted a warning cream and an error pink and gave each one its own border colour, so a few notices in a row read as a few different kinds of box.
  • Fixed The message on the licence screen after activating or deactivating a key now stays where it is printed, rather than jumping down the page a second after the screen has loaded.

1.4.5

  • Fixed A notice from this plugin no longer jumps after the page has loaded. WordPress lifts any notice out of the page once it is ready and drops it under the page heading, so the screen settled and then everything below moved by the height of a notice — and painted once in WordPress's colours before ours arrived. Ours stay where they are put, styled from the first paint.

1.4.4

  • Improved Tooltips are ours rather than the browser's. They appear the moment you hover or focus instead of after a second, they are styled like the rest of the screen, and somebody using a keyboard gets them too. That covers a prize's two colour pickers and the copy button beside a shortcode.

1.4.3

  • Fixed "Excluded pages" threw away every exception but the first. The field posts its choices as one line, and the code that read it back only knew how to split that line in one of the two shapes it arrives in — so choosing two pages to keep it off kept it off neither. It has been that way since the display settings were rebuilt. One choice always worked, which is why it went unnoticed.
  • Fixed A place could be chosen and ruled out at the same time when the choice came from a preset. "The front page only" left the front page tickable under Quick exclude, which is a rule that cancels itself. The preset now greys out the places it chose, and the setting is refused on save even if the form says otherwise.
  • Fixed A place ticked under Quick exclude could not be unticked. It was written into the field below it as well, and that field posted it straight back on the next save. Named places belong to the ticks now, and individual pages and categories to the field, so nothing is written down twice.
  • Improved User roles appears once Signed in is ticked, rather than sitting there inviting a rule that can never match: a role is something only a signed-in visitor has.
  • Fixed The documentation no longer describes a screen-size list on the Display screen. There is not one, and there should not be: the popup decides its layout in its own script, so phones are handled by Show on mobile devices beside the wheel's settings.

1.4.2

  • Improved "When it opens" and "Floating launcher" sit side by side rather than stacked.

1.4.1

  • Improved The display settings are laid out in two columns: what it shows on and who sees it on the left, what it is kept off and when on the right, so the pair can be read against each other.
  • Fixed A place could be ticked both as somewhere to show and somewhere to exclude, which is a rule that cancels itself. Ticking one now greys out the other, and the setting is refused on save even if the form says otherwise.

1.4.0

  • Improved The display settings are one structure now, the same in every plugin: a preset for the common answers, tick lists for the places, kinds of content and archives, and searchable fields for the exceptions.
  • New Common exclusions ticks the places most often left out. They and the search field are one list, not two settings that can disagree.
  • New Excluded URLs takes paths with a * wildcard, so a whole section can be excluded without naming every page in it.
  • New Audience limits by screen size, by whether a visitor is signed in, and by role — the role list is your own site's.
  • New When gives it a window: dates, days of the week and hours, worked out against your site's clock.
  • Improved Every list is built from your own site. A site without WooCommerce is never offered a rule about a checkout it does not have.
  • Improved Your existing settings are carried across; nothing needs re-doing.
  • New The documentation and knowledge base cover all of it.

1.3.0

  • Improved Where it shows is now ticks first, exceptions second. Tick the places, the kinds of content and the archives it belongs on — every list built from your own site, so a custom post type of yours is already there — then name the exceptions by searching for them.
  • Improved "But never on these" always wins, and only offers what is inside your ticks, so an exception can never be a rule that does nothing. Named places like the basket and the checkout are always offered.
  • Improved Your existing settings are carried across; nothing needs re-doing.
  • Improved The documentation and knowledge base have been rewritten to match.

1.2.0

  • Improved Where a thing shows is now chosen by name, not by ID. Pick pages, posts, products, categories, tags or a named place — the basket, the checkout, the shop, the front page, search results — and say either "everywhere except these" or "only these". An exclusion always wins.
  • Improved The same vocabulary is used by every Traslatability plugin that asks the question, so you learn it once.
  • Improved Your existing settings are carried across; nothing needs re-doing.
  • Improved The five-way "Show on" switch and the box for page IDs are gone. A wheel can now be kept off the checkout, or shown only on one category, which was not possible before.

1.1.9

  • Fixed The shortcode chip in a list is drawn as one object again — it had become a line of text with a copy icon adrift after it — and copying now turns it the same soft green as everything else that has gone well, rather than outlining it in dark green.

1.1.8

  • Fixed The shortcode boxes are drawn properly now. WordPress paints every piece of inline code with its own grey background, which put a second box inside ours; a long shortcode was also cut off at the edge rather than wrapping, so you could not read the end of what you were about to copy.

1.1.7

  • Improved Every dropdown now draws its own arrow. A native select is nearly invisible against our surface on macOS and sometimes has no arrow at all elsewhere, so a dropdown could read as a text box — and a text box invites typing rather than clicking.
  • Improved A shortcode is copied by clicking it. It used to be text to select by hand, which is a small tax on the one thing you came to the screen for.

1.1.6

  • Improved WordPress's own plugin details window now says what the plugin is, not only what changed in the last version.
  • Fixed Settings screens have the two-column layout the shared stylesheet was missing.

1.1.5

  • Fixed A colour field is one row again — a swatch and its value. Every one of them was showing its hex box and a Clear button at all times, because a rule meant for the opened picker was overriding the one that keeps them shut, so a screen of colours read as twice as many controls as it had.
  • Fixed Each swatch shows its own colour value instead of all of them saying “Select Color”.
  • Improved The wheel’s colours are grouped under The popup and The wheel rather than sitting in one undifferentiated block, and the two settings that are not colours have moved in beside the one they belong with.

1.1.4

  • Fixed The confetti is a burst thrown out of the wheel that crosses the whole panel. It used to creep about a centimetre down from the top and stop — it was told to fall 120% of its own height, which for a 14-pixel chip is seventeen pixels.
  • Improved The wheel spins like a wheel: it pulls back before it goes, runs at speed for about half the spin, then brakes all the way to the stop. It used to cover almost all the distance in the first half and then sit still for over a second before finishing.
  • Improved The pointer is knocked aside by each slice that passes under it, the wheel leans in while it turns and bumps as it lands, and the winning slice flashes when it stops.
  • Improved Slice labels sit in the middle of each slice, between the hub and the rim, instead of being pushed out against the outer edge — and shrink to fit rather than running over it. The preview on the Wheel screen draws them the same way.

1.1.3

  • Fixed The colour picker is laid out properly once opened — the hex box and Clear sat hard against the swatch button and each other with no spacing at all.
  • Fixed The plugin mark in the section bar is versioned by file time, so a redrawn icon actually reaches you instead of the browser serving the one it cached first.

1.1.2

  • Improved The plugin icon has lost the decorative braces that used to sit either side of the mark. They crowded the wheel at every size; the mark is drawn larger now.

1.1.1

  • Fixed The section bar no longer scrolls sideways when the window is narrow, and no longer raises a stray scrollbar over itself.
  • Improved The licence chip has gone from the bar — Licence is still a click away in the nav beside it.

1.1.0

  • New The sign-up form is yours to configure. Ask for a name and/or a phone number, make either required, show a consent tick box and write your own consent wording. These already drove the form your visitors saw, but no screen exposed them.
  • Removed ReCAPTCHA v2. It never worked: the plugin has no checkbox widget for a visitor to tick, so the token was always empty and Google rejected every spin. reCAPTCHA v3 is unaffected and is what the setting now uses — if you had v2 selected, enter v3 keys from Google to keep bot protection on.
  • Improved Settings that only apply to another choice now say so. "Delay" and "Scroll depth" appear only for their own trigger; the launcher position, page IDs, reCAPTCHA keys, Mailchimp and Klaviyo keys, the apply-button label, the email domain list and the admin notification address are greyed until the option they belong to is switched on.
  • Improved A prize's Amount is greyed for free shipping and for “no luck”, neither of which uses one.

1.0.16

  • Improved Checkbox options now sit several to a row instead of one per line, so settings screens use the space properly.

1.0.15

  • Improved Clearer section bar: larger, darker labels and icons, and it now stays in place instead of following the page as you scroll.
  • Fixed Summary tables read as two columns again rather than stacking each value under its label.

1.0.14

  • Improved Bigger, clearer admin type throughout, and larger controls to match — easier on the eyes on a long settings page.

1.0.13

  • Improved Easier on the eyes: slightly larger text, clearer colours and bigger buttons throughout the admin. Shorter plugin name in the menu and plugin list.

1.0.12

  • Fixed The licence reminder now sits at the top of the screen instead of halfway down some WooCommerce pages.

1.0.11

  • Fixed The licence screen is now translated in Spanish and French, like the rest of the plugin.

1.0.10

  • Improved Colour pickers line up in a tidy grid like every other field, and the floating Save button is larger.

1.0.9

  • Fixed Clicking a link no longer leaves a stray blue focus box; keyboard focus now shows the brand ring.

1.0.8

  • Fixed Settings and Display: switches now line up with the fields beside them instead of sitting slightly high.

1.0.7

  • Improved Display: the “When it opens” choices now sit two-per-row instead of stacked, so the whole screen fits without scrolling.

1.0.6

  • Improved The floating Save button is now a clean single pill, keeps the normal Save button at the foot of the form, and steps aside the moment you scroll down to it.

1.0.5

  • Improved Wheel admin: every section now uses the same titled-panel header, more options laid out in two columns, and the live preview pointer draws as a clean arrow.
  • New A floating Save button follows you down long settings pages, with an “unsaved changes” hint.

1.0.4

  • Improved Wheel admin: consistent section headers, cleaner colour pickers, a Google-font picker for the popup text, and a corrected preview pointer.
  • Improved Admin: a nicer keyboard focus on the section tabs.

1.0.3

  • New Updates: unlicensed sites now see when a new version is available (installing still needs an active licence). The version check is anonymous — no licence key or site details are sent.

1.0.2

  • Fixed Admin: toggle switches now render correctly.
  • Improved Admin: the plugin's header icon now matches the brand.

1.0.1

  • New Full WordPress Multisite support: the leads table is created on every site on network activation, and on new sites automatically.
  • Improved Refreshed plugin icon.

1.0.0

  • New First release: a spin-to-win prize wheel for WooCommerce that trades a coupon for an email address.
  • New Popup, floating launcher and inline shortcode; server-decided odds; real WooCommerce coupons with expiry and email locking.
  • New Leads stored in their own table with CSV export, plus conversion and revenue tracking back to each coupon.
  • New Display triggers and page targeting, consent and honeypot, optional reCAPTCHA, and Mailchimp and Klaviyo sync.
  • New Spanish and French translations included.

Pricing

Every plan includes every feature. Choose how many domains, and whether to pay yearly or once.

Pay yearly renews until you cancel

1 domain One year of updates and support
$19a year
5 domains One year of updates and support
$29a year
Unlimited domains One year of updates and support
$39a year

Pay once (lifetime) no renewals

5 domains Updates and support for as long as we publish it
$49once
Unlimited domains Updates and support for as long as we publish it
$69once
  • Every plan includes every feature. You choose only the number of domains.
  • 30-day refund, no reason needed. Refund policy
  • Licence key and download straight after payment, by Stripe.
  • A lapsed licence stops updates and support. It never switches a feature off.
  • Local, development and staging copies are free and do not count against your domains.
  • Yearly plans renew at the then-current price until you cancel. Cancel any time from your account.
  • Where tax applies it is calculated at checkout and shown before you pay.

Licence questions