Title: Tarkva &#8211; Expiry Tracking and Discount Engine
Author: Tarkva
Published: <strong>1 August 2026</strong>
Last modified: 28 September 2026

---

Search plugins

![](https://ps.w.org/tarkva-expiry-tracking-and-discount-engine/assets/icon-256x256.
png?rev=3630783)

# Tarkva – Expiry Tracking and Discount Engine

 By [Tarkva](https://profiles.wordpress.org/tarkva/)

[Download](https://downloads.wordpress.org/plugin/tarkva-expiry-tracking-and-discount-engine.1.9.1.zip)

 * [Details](https://en-gb.wordpress.org/plugins/tarkva-expiry-tracking-and-discount-engine/#description)
 * [Reviews](https://en-gb.wordpress.org/plugins/tarkva-expiry-tracking-and-discount-engine/#reviews)
 *  [Installation](https://en-gb.wordpress.org/plugins/tarkva-expiry-tracking-and-discount-engine/#installation)
 * [Development](https://en-gb.wordpress.org/plugins/tarkva-expiry-tracking-and-discount-engine/#developers)

 [Support](https://wordpress.org/support/plugin/tarkva-expiry-tracking-and-discount-engine/)

## Description

Perishable and dated stock — food, supplements, cosmetics, anything with a best-
before or use-by date — needs a different kind of pricing than the rest of your 
catalogue. Left alone, it either sits at full price until it’s unsellable, or someone
has to remember to mark it down manually, product by product, week after week.

**Expiry Tracking and Discount Engine** tracks expiry dates natively per product(
or per variation), and automatically prices clearance discounts as each batch approaches
its date — no spreadsheets, no manual sale-price editing, no forgotten stock.

**This is a WooCommerce extension.** WooCommerce must be installed and active; the
plugin adds to your existing products rather than replacing any part of your store.

#### What it does (free)

 * **Native batch tracking** — record one or more expiry dates and quantities per
   product, right on the product edit screen. Works with simple and variable products.
 * **Best-before and use-by aware** — the two date types behave differently (best-
   before stays sellable a little past its date; use-by is pulled before it), each
   with its own configurable grace window.
 * **Automatic clearance pricing** — a configurable table of discount tiers (“7 
   days left  65% off”, “30 days left  20% off”, and so on) prices each product 
   automatically as its date approaches.
 * **Runs on its own schedule** — an automatic sweep recalculates every tracked 
   product’s price for you; pick twice daily, daily, weekly, semi-monthly or monthly
   to match how fast your stock moves.
 * **Customers never buy expired stock** — expired-but-retained stock stays visible
   to you for reference, but is automatically hidden from customers and excluded
   from product feeds (Google Shopping, Facebook, etc.) once it’s no longer sellable.
 * **A clear expiry notice on the product page** — a configurable message shown 
   to shoppers, with labels, colors, and placement you control so it fits your store’s
   voice and design.
 * **Your choice on manual sale prices** — protect a price you’ve set by hand entirely,
   let the engine always manage it, or only override it when the engine’s own discount
   is deeper: you decide which.
 * **EU Omnibus-friendly pricing** — your product’s regular price is never altered
   or reset when a discount tier applies, so the reference (“was”) price shown to
   customers is always your genuine original price, not an inflated or escalating
   one.
 * **Unlimited tracked products and unlimited discount tiers** — no caps of any 
   kind. Track your whole catalogue and build as many discount tiers per date type
   as your pricing strategy needs.
 * **Free Reporting dashboard** — sales, waste, and sell-through metrics with a 
   toggleable trend chart, a full Rankings table comparing every tracked product
   side by side, and a scheduled email summary, all included at no cost.
 * **Backup and restore** — snapshot all your batch and expiry data at any time,
   and restore from any saved snapshot.
 * **WP-CLI support** for previewing, applying, and inspecting discounts from the
   command line.

#### Why this is different

Most “sale” or “dynamic pricing” plugins schedule a fixed discount for a fixed period.
This plugin instead reasons about _your actual expiry dates_: how close a batch 
is to its sellable deadline drives the price, automatically, continuously, without
you touching it.

#### Want more?

The **Pro** add-on builds on the same engine for stores that want to go further:

 * Stock & velocity intelligence — slow-selling or overstocked batches discount 
   earlier and harder; batches projected to sell out comfortably discount later 
   or not at all, protecting margin
 * Cart price-split — only the at-risk quantity gets the discounted price; extra
   units in the same order are charged full price
 * Advanced notices — cart reminders, discounted-quantity display, custom CSS placement
 * Scheduled, automated backups
 * Bulk CSV import for batch and expiry data
 * Deeper reporting — revenue and profit-margin figures, plus one-click Excel exports
 * Instant price recompute plus automatic page-cache clearing (including Cloudflare)
 * Priority customer support and configuration assistance

Learn more at [tarkva.com](https://tarkva.com).

#### Privacy and external services

This plugin does not send any data anywhere by default. See “External services” 
below for the one case where it does, and only when you explicitly opt into it.

### External services

This plugin connects to tarkva.com, the developer’s own licensing server, to validate
a Pro add-on license key and check for available Pro updates. This only happens 
if and when you enter a license key on the plugin’s License tab — nothing is sent
otherwise, and this free plugin works fully without ever triggering it. The data
sent is the license key itself and this plugin’s fixed product identifier; no other
site data is transmitted. This service is provided by Tarkva: [Terms of Service](https://tarkva.com/terms-of-service/),
[Privacy Policy](https://tarkva.com/privacy-policy/).

The Engine tab’s cache-clearing settings (a Pro-only feature) include a link to 
Cloudflare’s own public documentation on creating an API token, for reference if
you also install the separate Pro add-on. This free plugin never contacts Cloudflare
itself, sends it no data, and does not require an account with it — the link is 
informational only, and the associated settings fields are read solely by that separate
add-on’s own code, never by this plugin.

### License

This plugin is free software, licensed under the GPLv2 (or later) — see LICENSE.
txt in this plugin’s own folder for the full license text, or https://www.gnu.org/
licenses/old-licenses/gpl-2.0.html. In plain terms: you’re free to use, study, modify,
and redistribute this plugin, including copies you’ve modified yourself, for any
purpose, commercial or otherwise. There is no warranty of any kind, including for
any financial gain or loss resulting from the automatic pricing decisions this plugin
makes on your store. As with any plugin that automatically modifies your store’s
data, keep your own regular backups before and during use — standard practice for
any such plugin, not a sign that this one is unusually risky. This applies only 
to this free plugin — the separately-sold “Expiry Tracking and Discount Engine PRO”
add-on is not distributed under the GPL and is not covered by this section; see 
its own LICENSE.txt for the terms that apply to it.

## Screenshots

[⌊The Reporting → Overview dashboard: sales, waste, and sell-through metrics with
a toggleable
trend chart. Revenue, profit-margin figures, and Excel export require
the Pro add-on.⌉⌊The Reporting → Overview dashboard: sales, waste, and sell-through
metrics with a toggleable
trend chart. Revenue, profit-margin figures, and Excel
export require the Pro add-on.⌉[

The Reporting  Overview dashboard: sales, waste, and sell-through metrics with a
toggleable trend chart. Revenue, profit-margin figures, and Excel export require
the Pro add-on.

[⌊The Engine tab — sellable-day offsets, manual-sale handling, and discount tiers.
Instant
recompute, cache clearing, cart price-split, and profit-margin cost source(
badged PRO here)
are part of the paid add-on.⌉⌊The Engine tab — sellable-day offsets,
manual-sale handling, and discount tiers. Instant
recompute, cache clearing, cart
price-split, and profit-margin cost source (badged PRO here)
are part of the paid
add-on.⌉[

The Engine tab — sellable-day offsets, manual-sale handling, and discount tiers.
Instant recompute, cache clearing, cart price-split, and profit-margin cost source(
badged PRO here) are part of the paid add-on.

[⌊Product-level expiry batch entry on the Inventory tab.⌉⌊Product-level expiry batch
entry on the Inventory tab.⌉[

Product-level expiry batch entry on the Inventory tab.

[⌊Configure how the expiry date and discount notices appear on the product page —
labels,
colors, and timing are all customizable.⌉⌊Configure how the expiry date 
and discount notices appear on the product page — labels,
colors, and timing are
all customizable.⌉[

Configure how the expiry date and discount notices appear on the product page — 
labels, colors, and timing are all customizable.

[⌊The Actions tab — every product the engine is actively discounting for its approaching
expiry
date, at a glance: days remaining, sell-through ratio, and the live discounted
price.⌉⌊The Actions tab — every product the engine is actively discounting for its
approaching expiry
date, at a glance: days remaining, sell-through ratio, and the
live discounted price.⌉[

The Actions tab — every product the engine is actively discounting for its approaching
expiry date, at a glance: days remaining, sell-through ratio, and the live discounted
price.

## Installation

 1. Make sure **WooCommerce** is installed and active — this plugin extends it and 
    will not activate without it.
 2. Upload the plugin files to `/wp-content/plugins/tarkva-expiry-tracking-and-discount-
    engine`, or install directly through the WordPress plugins screen.
 3. Activate the plugin through the ‘Plugins’ screen in WordPress.
 4. Go to **Products  Expiry & Discounts** to configure discount tiers and notices.
 5. On any product you want to track, open the **Inventory** tab and set its expiry
    type and batch dates.

## FAQ

### Do I need WooCommerce?

Yes. This is a WooCommerce extension, not a standalone plugin — it reads your WooCommerce
products, prices and orders, and WordPress will not let it activate unless WooCommerce
is active. It works with any reasonably current WooCommerce version; there is nothing
to configure on the WooCommerce side.

### Does this work with variable products?

Yes. Each variation can have its own expiry batches; the expiry type (best-before/
use-by) is set once on the parent and inherited by all variations.

### Will customers ever be able to buy expired stock?

No. Once a batch is past its sellable window, it’s automatically excluded from what
customers can purchase and from product feeds, while remaining visible to you for
reference.

### Does it work with multilingual/translation plugins?

Yes. All customer-facing text (notices, labels) is a setting you configure, so your
translation plugin translates it exactly like any other text on your site.

### Does it replace my existing expiry-tracking plugin?

It can. The plugin includes a native batch/expiry data model, so once your dates
are entered here, you no longer need a separate expiry-tracking plugin.

### Can I set discounts without expiry dates involved?

Not at this time — this plugin is purpose-built for expiry-driven clearance. For
general-purpose discount rules unrelated to expiry dates, pair it with a dedicated
dynamic pricing plugin.

## Reviews

![](https://secure.gravatar.com/avatar/45dc3bd48f725a634a28e19a77d4b628f6daf3c826335eea08069f62c1c3c14d?
s=60&d=retro&r=g)

### 󠀁[Works flawlessly](https://wordpress.org/support/topic/works-flawlessly-221/)󠁿

 [ecoshopee](https://profiles.wordpress.org/ecoshopee/) 4 August 2026

It lets me precisely configure batch expirations and then the program automatically
applies discounts and notices, easy to use from quick-edit product menu

 [ Read all 1 review ](https://wordpress.org/support/plugin/tarkva-expiry-tracking-and-discount-engine/reviews/)

## Contributors and Developers

“Tarkva – Expiry Tracking and Discount Engine” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ Tarkva ](https://profiles.wordpress.org/tarkva/)

[Translate “Tarkva – Expiry Tracking and Discount Engine” into your language.](https://translate.wordpress.org/projects/wp-plugins/tarkva-expiry-tracking-and-discount-engine)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/tarkva-expiry-tracking-and-discount-engine/),
check out the [SVN repository](https://plugins.svn.wordpress.org/tarkva-expiry-tracking-and-discount-engine/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/tarkva-expiry-tracking-and-discount-engine/)
by [RSS](https://plugins.trac.wordpress.org/log/tarkva-expiry-tracking-and-discount-engine/?limit=100&mode=stop_on_copy&format=rss).

## Change Log

#### 1.9.1

**Fixed**

 * Stock and availability now update right after an order or refund changes a product’s
   batches. With the Pro add-on’s instant recompute, prices update at the same moment.
 * Removing or selling a product’s last batch now sets its stock to 0, including
   when saving a product whose batch list is already empty, and its expiry discount
   is removed by the next scheduled run. Stock left over from earlier deletions 
   is corrected the same way.
 * A product with no sellable batch is no longer shown as in stock.
 * Refunds with restocking now return units to the batch they were sold from, even
   if that batch was already sold out or removed.
 * Sold-out batches are now removed from the batch list.
 * Discounts on individual variations are now recorded correctly for reporting.

#### 1.9.0

**Fixed**

 * Sale prices set by hand on a product that already had an expiry discount were
   reverted on the next save, whichever “manual sale prices” setting was chosen.
   That setting now applies to these products too.

#### 1.8.9

**Fixed**

 * An issue where saving a product’s batches — from the full product edit screen,
   Quick Edit, or the Pro CSV importer — could clear that product’s batch list instead
   of saving the changes, without updating the WooCommerce stock quantity shown 
   for the product. If you’ve added or edited a product’s batch dates or quantities
   recently, please check that product’s batch list and re-enter it if it appears
   empty.

#### 1.8.8

**Fixed**

 * The expiry notice could appear on a product that was still a long way from its
   sellable deadline. When a batch sold out and the next batch happened to fall 
   in the same discount tier, the price did not change, so the stored batch date
   was never refreshed and the notice kept measuring against the sold-out batch.
   In testing, a product 25 days from its deadline showed a notice configured to
   appear within 7. The notice now reads the batch that is actually being sold from,
   the same one shown in the expiry date on the product page, so the two can never
   disagree.

#### 1.8.7

**Fixed**

 * The “show notice within N days” setting measured against a stale day count instead
   of against today, so the notice could stay hidden for a product genuinely close
   to its sellable deadline. The stored count is only refreshed when a product’s
   price actually changes, so a product sitting inside the same discount tier kept
   the day count it had when it entered that tier — a product 1 day from its deadline
   could still be reporting 8, and the notice only appeared once the window was 
   widened past that stale number. This affected every automatic schedule equally,
   daily included, because the runs in between genuinely had no price change to 
   apply. The remaining days are now recalculated from the batch date on each page
   view.
 * Ticking a notice’s background colour box produced an apparently blank notice.
   The background defaulted to the same red as the notice text, so the text was 
   drawn in the same colour as the box behind it. Backgrounds now default to a light
   tint, visible immediately when switched on.

#### 1.8.6

**Changed**

 * Discount notices are now coloured text by default, rather than white text inside
   a solid coloured box. The colour you choose for each notice is its **text** colour.

**New**

 * Each notice also gained an optional background colour, off by default, with its
   own tick box so “no background” stays a real choice. Text colour and background
   sit side by side on the same settings row. Available for the best-before, use-
   by, general and cart notices alike.

#### 1.8.5

**Changed**

 * The listing now states plainly that this is a WooCommerce extension. WooCommerce
   was previously only implied — named in the plugin’s tags and enforced technically,
   but never actually said in the description, the installation steps or the FAQ,
   so it was possible to install this expecting it to work on WordPress alone. Nothing
   about how the plugin behaves has changed.

#### 1.8.4

**Fixed**

 * Widened the expiry date picker further, in both directions. 1.8.3 raised the 
   ceiling but kept a narrow floor, so entering or correcting an older date was 
   still restricted. The picker now spans thirty years back to fifty years ahead,
   and the span remains filterable (`wcde_datepicker_year_range`). CSV import was
   never affected by any of this — it accepts any valid date directly.

#### 1.8.3

**Fixed**

 * Expiry dates more than six years ahead could not be entered. The date picker’s
   year list stopped at the current year plus six, and a date typed by hand beyond
   that was silently pulled back into range instead of being kept — a real problem
   for long-dated goods such as tinned food, spirits or supplements. The picker 
   now offers thirty years ahead, and the range is filterable (`wcde_datepicker_year_range`)
   if you need more. Nothing in the plugin or the database ever limited the date
   itself; this was purely the picker.

#### 1.8.2

**Fixed**

 * Corrected the feature list: instant price recompute is part of the Pro add-on,
   not the free plugin. The free plugin recalculates on its configurable schedule(
   twice daily through monthly). The description previously implied both, and listed
   the feature under free and Pro at once.

**New**

 * An occasional, dismissible prompt asking for a WordPress.org review. It only 
   appears after the plugin has been in use for two weeks and only if you actually
   have expiry-tracked products, can be postponed or turned off permanently, and
   never blocks anything. There is also a quiet link under License  Reviews if you
   would rather leave one on your own terms.

#### 1.8.1

**Fixed**

 * If your Pro license is active but the Pro add-on plugin isn’t installed on the
   site, the plugin now says so. Previously the only mention was on the License 
   tab, so every locked field showed a plain PRO badge — identical to what someone
   who had never bought Pro would see. There is now a notice on the plugin’s own
   screens and on the Plugins screen, and the PRO badge itself explains on hover
   that the licence is fine and only the add-on is missing.

**Security**

 * Every value the plugin prints in the WordPress admin is now escaped at the point
   it is printed, rather than where it was built. The values were already escaped
   before, but escaping at the output itself is what the WordPress coding standards
   require, and it keeps a future edit from quietly introducing a gap.
 * All database queries now pass table and column names as prepared identifiers,
   and product-ID lists in `IN (...)` clauses are bound as individual placeholders
   instead of being assembled into the query text.
 * Data embedded into inline admin scripts is encoded at the point it is written
   into the page.

**Changed**

 * No settings, stored data, pricing behaviour, or reporting figures change in this
   release. It is a code-hardening pass only.

#### 1.8.0

**New**

 * All free-tier limits removed. The plugin now tracks an unlimited number of products,
   supports an unlimited number of discount tiers per date type, and shows every
   row of the Rankings table. No feature in this plugin is limited by quantity any
   more.

**Changed**

 * The Engine tab’s discount-tier tables now show and let you edit every tier you
   have configured, with no cap on adding more.
 * The Rankings table and its CSV export now include every expiry-tracked product.
   Revenue and Profit margin remain columns supplied by the Pro add-on, which is
   what calculates those figures.
 * Removed the product-limit notices from the product edit, product list, and plugin
   settings screens, along with the “limit reached” message from backup restore,
   since there is no longer any limit to report.

**Fixed**

 * The scheduled summary email could permanently drift onto the wrong day of the
   week. WordPress only runs scheduled tasks when someone visits your site, so on
   a quieter store an email set for Monday could actually go out on, say, Thursday—
   and from then on Thursday became the new send day, with every further delay shifting
   it again. The schedule now always re-anchors to the day you chose, so a late 
   send corrects itself on the very next cycle.
 * If duplicate summary emails ever ended up scheduled, every future email was sent
   that many times, permanently. Only one is ever scheduled now, and any existing
   duplicates clear themselves on the next send.
 * The Dashboard trend chart could keep drawing Pro-only metrics from previously
   cached report data after a Pro license expired, even though those metrics were
   no longer selectable. Those series now disappear as soon as the license does.

**Security**

 * Saving a report date range or a Rankings sort order as your remembered default
   now requires a valid nonce and the manage_woocommerce capability. Viewing a report
   from a URL still works exactly as before, including bookmarked links — only storing
   that choice as your new default is gated.
 * Product and category names embedded into admin JavaScript are now hex-escaped,
   so a name containing HTML can never break out of its surrounding script block.

**Improved**

 * The summary email now states the exact date range it covers (“23.07.2026 to 30.07.2026”,
   in your site’s own date format) instead of only “last 7 days”, so it is always
   clear which period the figures belong to.
 * Numbers now use your site’s own decimal and thousands separators throughout the
   reporting screens and the summary email, instead of always using the English 
   convention. A store set to Estonian, German or French now reads 1.234,56 rather
   than 1,234.56. Export filenames also use a neutral, correctly-sorting date format
   and your site’s timezone.
 * All inline JavaScript is now generated through output buffering with explicit
   escaping on every dynamic value, replacing heredoc syntax throughout, in line
   with WordPress.org’s plugin coding requirements.

#### 1.7.0

 * Fixed: “Unsold at expiry,” sell-through rate, Rankings, the scheduled email, 
   and the Dashboard trend chart could misreport waste for a batch whose actual 
   sellable deadline (printed date plus its best-before/use-by grace window) fell
   on a different day, or a different reporting period, than its raw printed date—
   a best-before batch with real shelf life left could show as wasted too early,
   and a use-by batch pulled early could be missed entirely until its printed date
   arrived. All of these now consistently use each batch’s actual sellable deadline.
 * Fixed: a permanently deleted product (or variation) that still had an expired,
   unsold batch could lose that waste record entirely instead of it being counted.
   Deleting a product now gives any such batch one last chance to be recorded first.
 * Fixed: the “Remove” button on a batch row (Inventory tab and Quick Edit) wasn’t
   vertically aligned with its Date/Qty fields.

#### 1.6.0

 * New: “Rankings” (Dashboard  Reporting  Rankings) — a sortable, filterable table
   comparing every expiry-tracked product side by side: current stock, days to sellable
   deadline, units wasted, waste rate, units sold, and sell-through rate. Pro adds
   Revenue and Profit margin columns to the same table.
 * New: every discount notice (best-before, use-by) can now have its own background
   color, next to its own text field.
 * New: best-before and use-by product-page dates can each optionally override their
   own text color.
 * New: the product-page expiry date’s position dropdown now also offers “After 
   add-to-cart button” and “Before product meta” (previously 3 options, now 5 — 
   the same choices already offered elsewhere).
 * New: a “cost includes VAT” option next to the Engine tab’s profit-margin cost
   source, and a Discount timer option on the Display tab — both require Pro to 
   take effect, same as other Pro-gated settings already on these tabs.
 * Improved: order lines now record a regular-price snapshot at the time of sale
   for every order, not just discounted ones — improves the accuracy of Pro’s revenue
   and profit-margin reporting.

#### 1.5.0

 * New: the Actions tab’s “Pending changes” table now includes a “Reason” column
   explaining why each product is about to change (excluded, out of stock, no qualifying
   batch, days left, etc.).
 * New: a free scheduled email summary (Dashboard  Reporting  Email summary) — pick
   weekly, every-2-weeks, or monthly, plus your own day and time.
 * New: “Units sold without an expiry-driven discount” is now shown for free alongside“
   Units sold via expiry-driven discounts,” for comparison.
 * New: the product-page expiry date’s position dropdown now also offers “After 
   add-to-cart button” and “Before product meta” (previously 3 options, now 5 — 
   the same choices already offered elsewhere). Best-before and use-by dates can
   each optionally override their own text color. Discount notices (best-before/
   use-by) can also have their own background color now.
 * Changed: the Dashboard’s revenue/comparison table is now free-tier rows first,
   with the Pro-only figures grouped into a single section below rather than mixed
   in row by row.
 * Changed: “Sold before expiry” now counts every sale, in your selected date range,
   of any product currently marked as expiry-tracked — discounted or not, and drawing
   on your store’s full order history, not just what’s been logged since this feature
   was installed. “Unsold at expiry” now reflects the date range you’ve selected
   instead of all-time, and keeps a permanent record as each batch expires so the
   count stays accurate even if you later clean up old batch entries.
 * Changed: “Manual sales” is a 3-way choice again — protect entirely, always override,
   or override only when the computed discount is cheaper than your manual price.
 * New: the automatic-reconcile schedule dropdown now includes “No schedule.” Batch
   tracking and hiding expired stock from customers work the same regardless of 
   what’s set here.
 * Changed: “Update prices instantly when stock changes” now requires an active 
   Pro license — the automatic schedule’s new Hourly option keeps the practical 
   gap small for everyone else. If you were relying on this without Pro, switch 
   the schedule to Hourly to stay close to instant.
 * Changed: the wp-admin order screen now shows the actual best-before/use-by date
   for each expiry-tracked line item (using your own configured label wording), 
   for every sale — not just discounted ones — instead of raw internal metadata.
 * Fixed: the Dashboard’s date-range buttons (Last 7 days, Last 30 days, etc.) now
   actually show which range is currently selected.
 * Fixed: “All time” in Reporting was showing 0 for most figures.
 * Fixed: “Priority email support” wording updated to “Priority customer support
   and configuration assistance” (Pro doesn’t only offer email support).

#### 1.4.0

 * New: the Dashboard now opens with a “Revenue & comparison” report — units/orders
   sold at a discount, average discount applied, and a batch sell-through/waste 
   metric all calculated for real, no Pro required, with a 7/30/90-day/all-time/
   custom date range and a free CSV export.
 * New: exclude specific products or categories from discount-engine management 
   entirely (Engine tab).
 * Changed: “Manual sales” is now a plain on/off choice (protect entirely, or let
   the engine always manage price) instead of a price-comparison condition.
 * Changed: “update prices instantly on stock change” is now a visible, optional
   toggle (Engine tab).
 * Changed: the automatic-reconcile schedule now also offers Hourly, Semi-monthly,
   and Monthly.
 * Changed: the Dashboard’s product table is now “Actively managed discounts,” with
   search/scroll past 15 products.
 * Fixed: the Engine tab’s product/category exclusion search now actually filters
   by what’s typed.

#### 1.3.0

 * New: custom CSS-selector notice placement (product page) is now available to 
   everyone — moved out of the Pro add-on, since it’s plain positioning, not an 
   automation feature.
 * Changed: the Engine tab’s Stock & Velocity section now appears after the discount-
   tier tables.

#### 1.2.0

 * Changed: the Engine tab’s Stock & Velocity fields are now grouped into one consolidated
   section (Pro feature — no change to plain date-based discounting for everyone
   else).

#### 1.1.0

 * New: CSV export of batch/expiry data (Actions tab) — one row per batch, matched
   by SKU. Doubles as a spreadsheet-friendly backup and as the starting template
   for the Pro add-on’s CSV import.

#### 1.0.0

 * Initial public release.

## Meta

 *  Version **1.9.1**
 *  Last updated **3 weeks ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.0.7**
 *  PHP version ** 8.0 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/tarkva-expiry-tracking-and-discount-engine/)
 * Tags
 * [clearance](https://en-gb.wordpress.org/plugins/tags/clearance/)[discounts](https://en-gb.wordpress.org/plugins/tags/discounts/)
   [expiry date](https://en-gb.wordpress.org/plugins/tags/expiry-date/)[inventory](https://en-gb.wordpress.org/plugins/tags/inventory/)
   [woocommerce](https://en-gb.wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://en-gb.wordpress.org/plugins/tarkva-expiry-tracking-and-discount-engine/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/tarkva-expiry-tracking-and-discount-engine/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/tarkva-expiry-tracking-and-discount-engine/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/tarkva-expiry-tracking-and-discount-engine/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/tarkva-expiry-tracking-and-discount-engine/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/tarkva-expiry-tracking-and-discount-engine/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/tarkva-expiry-tracking-and-discount-engine/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/tarkva-expiry-tracking-and-discount-engine/reviews/)

## Contributors

 *   [ Tarkva ](https://profiles.wordpress.org/tarkva/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/tarkva-expiry-tracking-and-discount-engine/)