Countdown Timer changelog
Every version, newest first, with the date it was released. Updates install from your Plugins screen.
1.12.0
- New Shop managers can run the sale countdowns. Under Settings → Who can manage campaigns, tick Shop managers and they get the Dashboard, Campaigns and Cart Timer, coupons included, without being made administrators. Settings, the licence, import and export stay with administrators. Until you choose, only administrators can, and the Dashboard asks once. A role editor plugin can give trct_manage_campaigns to any other role.
- Improved A page whose only countdown content waits for a visitor's countdown no longer keeps the browser busy. The script ran on every frame for as long as the page was open; it now stops until there is something to count.
- Changed The cart timer from a settings file comes in switched off, like the campaigns. It went to work at once, applying its coupon to every cart. Its length, wording, coupon and code come in as they were, and the message after the import says to check it and switch it on.
- Fixed Countdown content blocks saved by authors and editors on WordPress 6.0 to 6.3 stay hidden. Saving took the hidden mark off the block's box, so the block showed as invalid content when the post was opened again, and a site without the plugin showed what was in it. The box now keeps its mark, and a block saved that way earlier is read again and saved hidden next time.
- Fixed A settings file no longer points a campaign at an image. A page or product the new site lacks, whose name an image in its media library shared, was taken for that image and not named as left out. It is now left out and named.
- Fixed Content for another moment stays hidden on themes that give blocks a display of their own. On such a theme, "After it ends" could show beside the offer it replaces.
- Fixed The Ribbon keeps its colours under Dark Mode. With Dark Mode by Traslatability switched on, the Ribbon's button turned dark while its words stayed the accent colour, so a link such as "Shop the sale" was hard to read (4.16:1 for the default red). The Ribbon now asks Dark Mode to leave it as you chose it, so it looks as it does in light mode. Nothing changes without Dark Mode.
- Fixed The delete question on a campaign's screen. Cancel sat against the Delete campaign button, or under it on a narrower screen. They now sit side by side on the note's right, and on a phone under the question.
1.11.0
- New Show or hide part of a page when the countdown ends. A Countdown content block, and
[trasl_countdown_show], wrap any content and show it only before a campaign starts, while it runs, or after it ends. The swap happens the second the timer reaches zero, with no reload, on cached pages too, and a per-visitor campaign changes at each visitor's own end. Content for a moment that has passed is not sent, and page caches are emptied at the campaign's start and end. - New Move your settings and campaigns to another site. Settings → Import / Export carries the settings and the campaigns. Products, categories, tags, pages and coupons are found on the new site by SKU, slug, address or code, never by number; anything missing is left out and named (from 1.12.0, also where an image on the new site has the same name). Every campaign arrives switched off until you check it.
- 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.
- 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.0
- New Days off for cut-offs. A daily or weekly cut-off can now skip bank holidays and closures: list the dates under Days off, and tick Every year for holidays that come round each year. The editor shows the next three cut-offs with your days off applied before you save, and the Campaigns list says when the next one is.
- New The heading can say which day it ships. Write {day} in a cut-off's heading, such as "Order now for dispatch {day}", and it reads today, tomorrow, the weekday or the date, by your shop's clock and in the shopper's language, on cached pages too. A cut-off heading that already contains the text {day} now shows the day instead.
- Improved A cut-off with nothing ahead says so. If every cut-off in the next 76 days is a day off, the Campaigns list marks the campaign No cut-off ahead rather than Live, and its shortcode tells editors why it shows nothing.
- Fixed Page caches are emptied only as far as a change needs. With LiteSpeed Cache, saving a campaign, and the moment a sale opens or closes, 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 34 versions
1.9.1
- Fixed A coupon linked to a per-visitor countdown that repeats daily or weekly keeps working past midnight while the shopper's countdown runs. From midnight in your site's time zone, WooCommerce refused the code although the timer on screen still had time left.
- Fixed A per-visitor countdown's start more than five minutes ahead of your site's clock no longer counts, so a hand-edited cookie can no longer keep a linked coupon working.
- Changed A shopper whose device clock is more than five minutes fast is refused a per-visitor code until your site's clock reaches the start their device recorded.
- Fixed The Campaigns list says correctly when a linked code works, for a campaign that has not started, one with no end date, and one that counts to a sale end or a daily or weekly cut-off (where the code is always refused).
- 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 a campaign's countdown 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.9.0
- New A coupon that works only while the countdown runs. On a campaign counting to a fixed date and time or a length per visitor, type one of your WooCommerce coupon codes under Countdown. WooCommerce then refuses the code before the start and from the end, to the minute, and takes it off a cart at the checkout once the offer is over, in the classic cart and checkout and in the Cart and Checkout blocks. On a per-visitor campaign it works only while that visitor's own countdown runs, measured by your site's clock from the start their browser recorded (until 1.9.1, a daily or weekly repeat was refused from midnight). The timer can show the code with a Copy button, and staff adding the code to an order by hand are not refused.
- Fixed A cart timer coupon code with a percent sign in it, such as 30%BFRIDAY, is now saved exactly as you type it. Some of these lost the percent sign and the two characters after it.
1.8.2
- Fixed Cached pages catch up once an offer's end has passed. Saving the campaign again unchanged after its end, correcting the site's time zone after the end, or activating the plugin again after an end passed could leave cached product pages showing Add to cart for an offer the shop refused, until the cache expired. Each of these now keeps or runs the cache emptying the end needs.
- Fixed The timer above post and page content appears once, above the article. It no longer starts every automatic excerpt on the page, such as a Latest Posts block, sits above the other posts a block theme lists under the article, or adds a second timer where a shortcode inserts a content block.
1.8.1
- Fixed Orders no longer empty every page cache. While a variation's scheduled sale waited for WooCommerce's daily job, every order that took stock from it emptied all page caches on the site. Now only WooCommerce's own sale job empties them, when it stores the sale price of a product your campaign covers.
- Fixed "Sale starts in" follows the variations shoppers can choose. A variable product whose variation's sale has just started no longer shows "Sale starts in" for another variation, and variations shoppers cannot choose no longer set or hide a product's countdown.
- Improved Saving a sale-start campaign is quicker on a large shop. It stops looking at each start once it finds a product the campaign covers.
1.8.0
- New Sale starts in. A sale campaign can count down to a WooCommerce sale that has not started yet and then carry on to its end, so shoppers know when to come back. Choose it under Countdown, Before a scheduled sale starts; campaigns left on Show nothing look exactly as before. Once the sale starts, a product with options is kept out of page caches until WooCommerce has updated its price, and the caches are emptied when it does, so nobody is shown the old price as the sale price.
1.7.1
- Fixed A campaign saved while WooCommerce was off keeps the products it applies to. Such a save kept Buying but reset Apply to to All products with nothing excluded, so once WooCommerce was back the campaign could stop sales across the whole shop. Apply to, Selection and Exclude products are now kept as they were.
- Fixed Network Deactivate no longer cancels a site's sale openings and closings. On a multisite network, a site that also has the plugin switched on for itself keeps emptying its page caches at the moment sales open or close.
- 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.7.0
- New Sell only while the countdown allows. With the new Buying choice, a Fixed date and time campaign can keep the products it covers off sale until the countdown ends, for a launch, or stop selling them when it ends, for a limited offer that stays closed until you change the campaign. The shop refuses the order itself, whether it comes from the product page, a link that adds to the cart or a cart filled earlier, and where WooCommerce draws the Add to cart button the page says when sales open, or that the offer has ended. Saving such a campaign asks first and names how far it reaches, and the Campaigns list says when sales open or close.
1.6.14
- Fixed A shortcode end date written with slashes no longer counts to the wrong day.
25/12/2030and12/25/2030are both read as 25 December, and a date that could mean two days, such as05/12/2030, is no longer drawn: anyone who can edit posts sees a note asking for it year first, like2027-12-24 17:00. That includes American dates earlier versions drew, such as11/05/2026for 5 November, which now show visitors nothing until the date is written year first. - Fixed The example shortcode on the Countdown dashboard always uses a date still to come. It offered 25 December 2026 at 09:00 to copy, which would draw nothing once that morning had passed. It now uses 24 December next year at 17:00.
- 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 A shortcode countdown that draws nothing now tells editors why. Anyone who can edit posts sees a note in its place when its end date cannot be read, when a one-off end date has passed and the countdown is set to hide or go elsewhere, or when a campaign that counts to each product's sale end date is placed on a page that is not a product page. Visitors still see nothing there.
1.6.13
- Fixed Campaign end dates are written in the site's language. The Ends column on Campaigns and the date on the dashboard spelled the month and the day in English whatever language the site is in, so a French shop read "21 September 2026" where it should read "21 septembre 2026". The date, the time and the time zone are unchanged.
- 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 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.12
- 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.
- 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 wrote its settings on the other network's sites, which never load it.
- Improved Fewer database lookups on WPML sites. When a campaign's display rules name 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.11
- Fixed A visitor whose own countdown had run out no longer affects everyone else. The page they saw, without the timer, could be stored by your page cache and shown to new visitors. Such pages are now kept out of the cache, including countdowns placed by shortcode with their own setting for what happens at the end.
- Fixed Changing, switching off or deleting a campaign clears your page cache, so shoppers no longer see the old countdown.
- Improved Shop and category pages load faster when a countdown targets a parent category.
1.6.10
- 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.9
- Improved One database query fewer on every page not served from a cache. Every public page reads the list of countdown campaigns, and on a site that had never saved one it was looked up in the database and not found, on every page view. It is now made once and loaded with the settings. Measured on a shop's product page: the plugin's own queries went from one to none.
1.6.8
- Improved Pages with a countdown download less. The script and stylesheet visitors are sent are now minified: 17.5 KB became 6.3 KB compressed, 64% less, on every page that shows a countdown. 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.7
- 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.6
- Fixed Countdown designs written so dark mode can re-colour them. Measured on the dark engine our Dark Mode ships — the same one a reader's own dark-mode browser extension uses: a colour handed in on the element and painted through the
backgroundshorthand is left light, or lost altogether, while the words on it are lightened to suit a dark page. A Panel or an Outline design could end up pale words on a white box. Every surface is now written asbackground-color, which the engine follows. 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.5
- 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.4
- Fixed "Delete this campaign?" keeps asking on sites with a strict security policy. The question was written into the page in a way that some sites block for safety, which quietly removed it — so one click deleted a campaign for good.
1.6.3
- Fixed A setting that could not be changed and was never read has gone.
week_startssat in every install's settings, travelled in every exported file, and described a decision that is made in code — the clock comes from WordPress rather than from the visitor's device, which is achieved by not offering a choice. It clears itself the next time you save the settings.
1.6.2
- 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.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 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.5.35
- 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 Two panels on one screen both asked where the timer goes. The page rules are called Pages now, not a second "Display on", and the screen says plainly that Placement, Pages, Exclude and Audience all have to allow a timer before it shows, and that a shortcode ignores all four.
- Fixed Wording that was not true: a cart timer's bar is never drawn on the cart or the checkout page, and there is no field called "When the timer ends". Both said otherwise.
1.5.34
- 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.5.33
- New Four more designs, twelve in all. Panel puts the heading, the clock and the button inside one bordered card, so a product page gets one object rather than three loose parts. Stack runs the units down the page instead of across it, ruled off like a list, which is the one shape a narrow sidebar can always take. Underline sets the figures on a thick accent rule and draws nothing else. Stripe is a tinted band with a thick rule down its leading edge, quiet enough to sit above post content. Nothing changes for a shop that has already chosen a design. In the two places that cannot spare the height — the bar across the top of the site, and a card in a shop listing — Stack lies on its side and rules between the units instead of under them, folding to two rows of two when the card is too narrow for four.
- Fixed On the shop page the words under the figures ran together. A product card is about 220 pixels wide and the word SECONDS wants 45 of them, so four units across a card left MINUTES and SECONDS touching, or spilling over the tile they belong to — on every design, on the page where most shoppers meet a sale. In a listing the units now fold into two rows of two when the card is too narrow for four, and stay in one row when it is not. The timer asks the card how wide it is rather than the window, because the same window holds two columns on one shop and five on another.
- Improved Figures drawn in the accent can now be read on any brand colour, on the new designs as well as the old. The Plain, Outline and Pill designs drew them in the accent exactly as chosen, so a sale amber came out at 2.1:1 at 27px and a teal at 4.1:1 in a shop listing. The accent is now walked towards black, or towards white on a dark background, only as far as it takes to read: the 4.5:1 WCAG asks for, and a little more to allow for the off-white a theme paints behind it. One that already reads, the default red included, is used exactly as you chose it, and the note under Colours says when yours has been adjusted.
- Improved The heading and the unit labels follow your text colour. They were a fixed grey, which was 3.3:1 on a shop that had set a dark Background, on every design. They are now that shop's own text colour faded: 7.9:1 there, and 6.2:1 on a light page where the grey was 5.4:1.
- Improved The Pill and the Rings can be seen now. The strip's edge and the divisions inside it, and the empty part of each ring, were drawn in a line at 1.2:1 against white, so the Pill read as four loose numbers and a ring showed only the arc that was left. Those lines are 3.6:1 now, with enough in hand to stay above 3:1 on the off-white card a theme puts them on. The colour was changed because the old one failed contrast, and only there: the rule under the top bar and the edge of the cart panel are as they were. A ring's arc is drawn in the readable shade of the accent as well, so a pale sale yellow no longer draws it at 1.3:1 on the white inside the ring.
- Improved The units are equal columns, so a tile is no longer whatever width its label happened to need and DAYS no longer sits narrower than SECONDS. The heading steps with the size of the clock instead of staying one size above all three, spacing is on a 4px rhythm, and the button's corners follow the design it stands under rather than always being a lozenge.
- Fixed A shortcode countdown sat outside the column of words around it, by 386px on a wide screen. It was an inline box, and a theme's content width has nothing to hold an inline box with. It now sits where the paragraphs do.
- Fixed The Flip design's seam was measured from the middle of the whole tile, so it crossed the numbers in a different place at each size and moved again when the unit labels were switched off. It is across the middle of the figure now, which is where a flip card's hinge is.
- Fixed The Digital design's colons and the Pill's divisions stayed on the left on a right-to-left site. They mirror with the page now.
1.5.32
- New Daily or weekly cut-offs. A campaign can count to a time of day on the days you choose, such as "order within 02:14:09 for dispatch today" before 15:00 on weekdays, and moves on to the next cut-off by itself, on cached pages too. The time stays right on the wall when the clocks change.
- New A campaign can show a button beside the clock, such as "Shop the sale", in every placement including the bar across the top, and "When the timer ends" can now send a visitor who watches it reach zero to another page.
- Fixed Listing timers froze when a shopper paged through a block theme's shop. The timers on the next page of the grid were still pictures that never reached zero. They now count down and end like any other.
- Fixed On the block Cart, the cart timer kept counting above "Your cart is currently empty!", and at zero would have said the items were still in the cart. It now hides when the cart is emptied without a page load, on the Cart, from the mini-cart drawer or from a mini-cart widget, and comes back if something is added again.
- Fixed A per-visitor countdown stopped page caches from keeping the page. Its first view sent a cookie, and caches such as Nimble Cache will not store a page that sets one, so a site-wide per-visitor bar left every page uncached and the cache preloader warmed nothing. The visitor's browser now records the start instead.
- Fixed Screen readers heard the time twice, and on a cached page the two disagreed. They now hear it once, in words that stay true as the clock runs and say when the offer has ended.
- Fixed The Ribbon design no longer splits its figures and labels across lines on phones when it is used on a product page or in content ("0/2", "MINUT ES"). Whole units move to a second line instead.
- Fixed The labels on the Blocks design, the Ribbon's heading and labels, and the Digital design's figures now meet WCAG AA contrast. Text drawn on the accent turns dark wherever white could not be read on the colour chosen, and the editor warns when a Plain, Outline or Pill accent is too pale to read.
- Fixed The default heading and ended message now appear in the shopper's language, even when the campaign was saved by an admin working in another language. Headings, messages, links and the cart timer's wording can be translated with WPML or Polylang, and a campaign on particular products also covers their translations.
- Fixed A campaign narrowed to categories, tags or products with none chosen was listed as Live and showed nowhere. It is now marked "No products chosen", the campaign editor shows each campaign's status and why it is not showing, and saving says so too.
- Fixed On block themes the listing timer now sits under the price, aligned with it, instead of below the Add to cart button at the edge of the card.
- Improved The campaign editor is easier to use by keyboard and screen reader: the design cards show which one has focus, and the design, "Counts to", placement and unit choices are announced as named groups.
- 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.
1.5.31
- Fixed A shopper's own "Individual use only" coupon could stop them checking out while the cart timer offered a coupon: the timer kept trying to add its code, WooCommerce refused it with an error, and the order was refused too. The timer's coupon now waits until the shopper's code is removed, and a timer coupon that is itself individual use no longer pushes off codes the shopper entered.
- Fixed With "Show to: Guests only", signed-in customers were still given the cart timer's discount, and had it taken away when a countdown they could not see ran out. They now get neither the countdown nor the discount.
- Fixed A cart timer with no coupon reloaded the page when it reached zero, throwing away whatever the shopper was typing on the checkout. The page now reloads only when the timer is set to take its coupon off; otherwise the ending message simply takes the countdown's place.
- Fixed The campaign Preview was blank when the editor was opened from the Campaigns list or the Dashboard, and after every save.
- Fixed "Show a message instead" no longer leaves the clock at 00 on screen beside the message for a shopper watching it end.
- Fixed A campaign's shortcode now names it by its ID, so renaming the campaign no longer breaks shortcodes already placed. A shortcode that names a campaign still works, and one that finds nothing now tells an editor which campaign it could not find, and why a campaign is not showing (switched off, not started, no end date or ended).
- Fixed If coupons are switched off in WooCommerce while the cart timer is set to apply one, the Cart Timer screen and the Dashboard now say so and link to the setting. Shoppers were being promised a discount that could never arrive.
- Fixed Switching off "Enable countdown timers" under Settings no longer removes the cart timer's "Every page, as a bar". That switch pauses campaigns; the cart timer has its own.
- Fixed Screen readers no longer read the cart timer out every second. It is announced once, when it ends.
- Fixed A campaign's Text colour left empty now really uses your theme's text colour, as the editor says; it used to be near-black, which vanished on a dark theme. Background, when left empty, is white, and the editor now says so; text drawn on it, in the Rings design and the top bar, stays near-black.
- Fixed A "Product sale end date" campaign placed only in the bar or above content — where there is no product to read a date from — is now marked "Needs a product placement" instead of "Live", and no longer counted as running on the Dashboard.
- 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 Campaigns can be put in order. The Campaigns list has up and down arrows, and the campaign higher in the list wins when two could show in the same place — so an offer for one category can sit above the one for the whole shop.
- New Duplicate copies a campaign, switched off and placed just below it, so a design can be reused without setting it up again.
- New On a variable product, the sale countdown follows the variation the shopper picks, and hides for one that is not on sale, instead of always showing the soonest end among them.
- Improved The description, the website and the help pages no longer say the cart is "held", and no longer say a device clock that runs fast is corrected — only a slow one is.
- Fixed Activating the plugin from an older WP-CLI or a site-management tool could stop with a fatal error.
1.5.30
- 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.5.29
- Fixed A cart timer coupon with a minimum spend could stop the checkout. The coupon was tried before WooCommerce had added up the cart, so it failed every time, and the failure left an error message on the page — which WooCommerce treats as a reason to refuse the order. The coupon is now applied after the cart is totalled, only once the cart meets its rules, and never leaves an error behind.
- Fixed An ended cart timer reloaded the cart and checkout pages over and over, so neither could be used until the cart was emptied.
- Fixed A sale countdown ran a day past the end of the sale, then vanished. It now ends at the exact moment WooCommerce ends the sale.
- Fixed Switching the cart timer off, or changing its discount, now takes back the coupon it had already given. A code the shopper typed in themselves is never touched. For new shops, "When the timer ends" now defaults to removing the coupon, so the offer matches what the wording says.
- Fixed A campaign placed with the shortcode now respects "Enable this campaign", its start date and the site-wide switch, instead of counting down regardless.
- Fixed "Leave the timer at zero" now shows the clock at zero to anyone who loads the page after the end, not only to someone already watching.
- Fixed A campaign's heading and finished message can be left empty on purpose; saving no longer puts the default text back.
- Fixed Countdowns on a cached page no longer run late. The page's own clock was trusted even when a cache served an hour-old copy; the visitor's device clock is now used, and corrected only when it is provably slow.
- Fixed Per-visitor countdowns now work behind a page cache. Every visitor used to get the deadline of whoever loaded the page first. The browser now works out each visitor's own end and remembers it.
- Fixed A per-visitor countdown placed only with a shortcode no longer restarts on every page load; one set above post content no longer starts on product pages where it never shows; and opening the Dashboard no longer starts the administrator's own.
- Fixed On a device set to dark mode, the timer no longer turns dark on a light website — which had made the finished message almost invisible.
- Fixed Centre and right alignment now work on product pages, listings and shortcodes. The Pill and Digital designs no longer stretch across the page above post content, and four Large tiles fit on a phone.
- Fixed The Ribbon design and the top bar were 32 pixels wider than their space on every screen; they now fit exactly.
- Fixed The finished message keeps its design after a reload, instead of turning into plain text.
- Fixed The top bar now appears on themes that skip WordPress's wp_body_open step. It used to be missing there, with nothing to say why.
- Fixed A timer that appears late in the page, such as in a
[products]grid, no longer shows unstyled digits while the rest of the page loads. - Fixed Default cart wording that an earlier version saved into the database — possibly in another language, or for the other discount choice — is read as the default again, so it follows the Discount choice and each visitor's language. Saving untouched wording no longer freezes it.
- Fixed Each save shows one confirmation message, not two.
- Fixed "Delete all data on uninstall" now removes the licence key and the update records too.
- New If the cart timer is set to apply a coupon code that does not exist in WooCommerce, the Cart Timer screen and the Dashboard say so in a warning box, naming the code.
- Improved The Campaigns list gives each campaign's real status: Live, Scheduled, No end date, Ended, Off, or Needs WooCommerce. A campaign with no placement shows "Shortcode only" rather than "Not placed", because a shortcode is a perfectly good place.
- Improved Without WooCommerce, a new campaign starts as a bar across the top of the site instead of on product pages it could never reach. The Dashboard's Cart Timer card says "needs WooCommerce" or "no place chosen to show it" rather than "running on carts" when it cannot run.
- Improved Clearer wording: "Show the timer on" labels the Cart Timer's page choices, "Timezone" replaces "Site clock", and several labels and hints now say exactly what they do. The plugin description no longer says the cart is held.
- Improved Faster: shop listings no longer load every variation of every variable product, the running campaigns are worked out once per page rather than once per product, and the admin screens no longer load the media library.
1.5.28
- Fixed "Returning shoppers" on the Cart Timer screen did nothing. It was saved, exported and read by nothing at all. Its default said "Start a new timer" — the one thing the code never did: an expired cart timer stayed expired until the shopper's session ended. Now renamed "After the timer runs out", it works: start a new timer on the next add to cart, or keep it expired for the rest of the visit so the offer is not handed out twice.
- Improved On the Cart Timer screen, the wording and the whole Discount panel are greyed while the timer is off.
- Improved In the campaign editor, "Apply to" and "Exclude products" are greyed unless a product placement is ticked — they meant nothing to a bar or a content placement — and Alignment is greyed for the Ribbon design, which runs edge to edge. Size notes that listings always use the small timer.
- 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.5.27
- 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.5.26
- 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.5.25
- 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.5.24
- 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 37 versions
1.5.23
- Improved "Cart Hold" is now Cart Timer. The old name did not say what the feature was, and "hold" implied the shop was reserving something. It is not: it counts one shopper's own cart, nothing is reserved and the cart is never emptied. The settings follow — "Enable the cart timer", "Timer length (minutes)", "Message while the timer runs".
- Fixed The default message told shoppers "Your cart is held for {time}." even with no coupon attached, which is how the feature ships. Nothing was being held: no stock is reserved, no discount was being withdrawn, and the cart is not emptied at zero. The default now depends on what the timer actually does. With a coupon: "Checkout within {time} to keep your discount." Without one: "Complete your order within {time}." — a request rather than a claim. Shops carrying the old default get the new wording; a message you wrote yourself is left exactly as it is.
1.5.22
- Improved "Basket" is now "Cart" throughout, matching WooCommerce. The screen is Cart Hold, the setting is "Enable cart hold", and the message a shopper reads says their cart is held. Nothing about how the hold works has changed.
1.5.21
- Improved On Basket Hold, the first card was also titled "Basket Hold", repeating the page heading directly above it. It now reads "General".
1.5.20
- Improved Every screen has been reworded to WordPress conventions. The campaign editor's first panel is "Countdown" rather than "Threshold", field labels read "End date and time", "Duration (minutes)" and "Repeat" instead of "Ends at", "Minutes it runs for" and "And then", and the basket hold screen says what each message is for. Nothing about how timers work has changed.
- Improved Spanish and French translations updated to match.
1.5.19
- 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.5.18
- 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.5.17
- Improved Field labels are shorter and every save button reads "Save changes", matching WordPress itself.
1.5.16
- 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.5.15
- 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.5.14
- Improved A page chosen in one list can no longer also be chosen in the other.
1.5.13
- Fixed A stylesheet a screen sends deliberately switched off is no longer switched on when you move between tabs.
1.5.12
- 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.5.11
- 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.5.10
- 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.5.9
- 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.5.8
- 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.5.7
- 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.5.6
- 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.5.5
- 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.5.4
- 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.5.3
- 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.5.2
- 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.5.1
- 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. On this plugin that is the copy button beside a shortcode.
1.5.0
- 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.
- New Audience on a campaign. Limit one to desktop, tablet or mobile — decided by the width of the window, so it survives page caching — to signed-in or signed-out visitors, or to particular roles from your own site's list. There is no schedule panel: a campaign already has its own dates.
- Fixed pressing Enter in a field on a saved campaign offered to delete it. A browser submits a form through its first submit button, and on that screen it was Delete. Enter saves now.
- Fixed A campaign limited to one screen size still left its bar across the top of every other one. The strip carries the rule as well as the timer inside it.
- 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.
1.4.2
- Fixed The campaign editor's page rules sit in the two columns it already had, rather than opening a second grid inside one of them.
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 A campaign's page rules use the same structure as every other plugin: a preset, tick lists built from your own site, a searchable exceptions field and address rules with a
*wildcard. - Improved A campaign keeps its own dates and its own audience question, so it does not repeat them.
- New The documentation and knowledge base cover all of it.
1.3.0
- New A campaign can now say which pages it is allowed on, not just where on a page it sits: tick the places, kinds of content and archives, then name the exceptions. A sale bar everywhere except the checkout takes one entry.
- Improved Products, categories and tags are chosen by name throughout; there is nowhere left that asks for an ID.
- Improved The documentation and knowledge base have been updated to match.
1.2.0
- New A campaign can now be kept off particular pages, or limited to them: pages, posts, products, categories, or a named place like the basket or the checkout. A bar that belongs everywhere except the checkout was not something you could say before.
- Improved The same vocabulary is used by every Traslatability plugin that asks the question, so you learn it once.
1.1.4
- 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.3
- Improved The category, tag and product search is immediate now. It was asking the server on every keystroke, and almost none of that wait was the search — it was WordPress starting up, which no amount of tuning the query can fix. A shop small enough to carry is now sent across once, the first time you use the field, and every keystroke after that is answered in your browser with nothing on the wire: about 1.3 seconds a search before, about 25 milliseconds now. Very large shops keep asking the server, which is the right trade at that size.
- Improved A saved campaign's shortcode, under its name at the top of the editor, is now something you can click to copy rather than text to retype.
1.1.2
- 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.1
- Fixed The search box in the category, tag and product picker drew a border of its own inside the box that already had one, so the field appeared to have two.
- Improved The picker no longer opens a list until you type. Showing the first twenty things alphabetically answered a question nobody asked, and on a shop with thousands of categories it was never the twenty you wanted.
- Fixed The list of matches now moves the field clear of the preview pinned at the top of the screen, and opens upwards when there is no room below it.
1.1.0
- Improved Categories, tags and products are chosen by name instead of by ID. Start typing and it finds them; the page never loads the taxonomy, so a shop with thirty thousand categories opens as fast as one with thirty.
- Improved An exclusion list that used to ask for "12, 44, 91" now searches your products the same way.
- 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.0.2
- Fixed The basket hold now shows on the block Cart and block Checkout, which is what a recent WooCommerce installs by default. It hooked only the classic shortcode cart, so on a default modern shop the hold was switched on and drew nothing.
1.0.1
- Improved The campaign preview now sits above the controls, across the full width of the screen, and stays in view while you scroll. Choosing a design and judging the result is one glance rather than two.
1.0.0
- New First release: countdown campaigns for WooCommerce and WordPress.
- New Three kinds of countdown — a fixed date and time, a product's own WooCommerce sale end, or a length of time per visitor that is remembered rather than reset.
- New Four placements without touching a template: a product page, shop and category listings, a bar across the top of the site, and above post and page content. Plus a shortcode for anywhere else.
- New Targeting by category, tag or product ID, with an exclude list that always wins.
- New Eight designs — blocks, plain, outline, pill, digital, rings, flip and a full-width ribbon — each drawn live in the picker.
- New Every countdown is worked out against the site's own time zone and sent to the browser as remaining seconds, so a wrong device clock cannot mislead anyone.
- New A basket hold that applies a real WooCommerce coupon while it runs, takes it back when it expires, and never empties the basket.
- New Rendered correct on the server, so a cached page shows the right time and a page without JavaScript still shows a countdown.
- New Spanish and French included, and each site on a multisite network keeps its own campaigns.
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
5 domains
One year of updates and support
Unlimited domains
One year of updates and support
Pay once (lifetime) no renewals
5 domains
Updates and support for as long as we publish it
Unlimited domains
Updates and support for as long as we publish it
- 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.