{"id":142431,"date":"2021-06-20T07:49:05","date_gmt":"2021-06-20T07:49:05","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/product-expiry-for-woocommerce\/"},"modified":"2026-04-22T05:54:02","modified_gmt":"2026-04-22T05:54:02","slug":"product-expiry-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/kn.wordpress.org\/plugins\/product-expiry-for-woocommerce\/","author":17556873,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"3.2","stable_tag":"3.2","tested":"6.9.4","requires":"3.5","requires_php":"","requires_plugins":null,"header_name":"Product Expiry for WooCommerce","header_author":"WebCodingPlace","header_description":"Provide expiry date for your products and get notified before expire","assets_banners_color":"ceb1fe","last_updated":"2026-04-22 05:54:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/webcodingplace.com\/product-expiry-for-woocommerce\/","header_author_uri":"https:\/\/webcodingplace.com\/","rating":4.5,"author_block_rating":0,"active_installs":2000,"downloads":23317,"num_ratings":12,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1":{"tag":"1.1","author":"webcodingplace","date":"2022-01-12 18:01:06"},"1.2":{"tag":"1.2","author":"webcodingplace","date":"2022-01-13 17:11:05"},"1.3":{"tag":"1.3","author":"webcodingplace","date":"2022-03-20 04:44:33"},"1.4":{"tag":"1.4","author":"webcodingplace","date":"2022-04-17 05:25:44"},"1.5":{"tag":"1.5","author":"webcodingplace","date":"2022-05-15 12:50:22"},"2.0":{"tag":"2.0","author":"webcodingplace","date":"2022-09-02 15:01:20"},"2.1":{"tag":"2.1","author":"webcodingplace","date":"2022-11-01 14:35:36"},"2.2":{"tag":"2.2","author":"webcodingplace","date":"2022-11-07 07:26:49"},"2.3":{"tag":"2.3","author":"webcodingplace","date":"2023-01-29 17:29:30"},"2.4":{"tag":"2.4","author":"webcodingplace","date":"2023-04-07 10:55:26"},"2.5":{"tag":"2.5","author":"webcodingplace","date":"2023-11-20 03:11:17"},"2.6":{"tag":"2.6","author":"webcodingplace","date":"2024-09-01 07:49:59"},"2.7":{"tag":"2.7","author":"webcodingplace","date":"2025-07-20 11:10:20"},"2.8":{"tag":"2.8","author":"webcodingplace","date":"2025-12-04 03:14:03"},"2.9":{"tag":"2.9","author":"webcodingplace","date":"2026-01-07 06:23:33"},"3.0":{"tag":"3.0","author":"webcodingplace","date":"2026-03-13 09:15:10"},"3.1":{"tag":"3.1","author":"webcodingplace","date":"2026-04-07 05:52:09"},"3.2":{"tag":"3.2","author":"webcodingplace","date":"2026-04-22 05:54:02"}},"upgrade_notice":[],"ratings":{"1":1,"2":0,"3":1,"4":0,"5":10},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3357485,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3357485,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3357485,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1","1.2","1.3","1.4","1.5","2.0","2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","3.0","3.1","3.2"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":2656804,"resolution":"1","location":"assets","locale":""},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":2656804,"resolution":"2","location":"assets","locale":""},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":2763861,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":2779343,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":2780743,"resolution":"5","location":"assets","locale":""}},"screenshots":{"1":"Provide Expiry Date","2":"Single Product Page","3":"Filter by Expiry Dates","4":"Settings","5":"Expire date in order emails"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[746,200603,5485,200604,286],"plugin_category":[45],"plugin_contributors":[187022],"plugin_business_model":[],"class_list":["post-142431","plugin","type-plugin","status-publish","hentry","plugin_tags-product","plugin_tags-product-expiry","plugin_tags-woo","plugin_tags-woo-notifications","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-webcodingplace","plugin_committers-webcodingplace","plugin_support_reps-juli3t"],"banners":{"banner":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/banner-772x250.jpg?rev=3357485","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/icon-128x128.png?rev=3357485","icon_2x":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/icon-256x256.png?rev=3357485","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/screenshot-1.jpg?rev=2656804","caption":"Provide Expiry Date"},{"src":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/screenshot-2.jpg?rev=2656804","caption":"Single Product Page"},{"src":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/screenshot-3.jpg?rev=2763861","caption":"Filter by Expiry Dates"},{"src":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/screenshot-4.png?rev=2779343","caption":"Settings"},{"src":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/screenshot-5.png?rev=2780743","caption":"Expire date in order emails"}],"raw_content":"<!--section=description-->\n<p><strong>Product Expiry for WooCommerce<\/strong> gives every product and variation in your store an expiry date. When the date hits, the plugin can flip the product to out-of-stock, move it to draft, or fire an email notification. No manual cleanup, no forgotten sale items haunting your catalog.<\/p>\n\n<p>Perfect for stores selling perishable goods, time-limited offers, seasonal inventory, digital licenses, event tickets, or anything with a shelf life.<\/p>\n\n<h3>\ud83d\udd17 Quick Links<\/h3>\n\n<p><a href=\"https:\/\/kb.webcodingplace.com\/docs\/product-expiry-for-woocommerce\/\">Documentation<\/a> \u00b7 <a href=\"https:\/\/webcodingplace.com\/product-expiry-for-woocommerce\/\">Live Details<\/a> \u00b7 <a href=\"https:\/\/webcodingplace.com\/product-expiry-for-woocommerce\/?utm_source=wporg&amp;utm_medium=readme&amp;utm_campaign=pro\">Upgrade to Pro<\/a><\/p>\n\n<h3>\ud83d\udee0\ufe0f Typical Use Cases<\/h3>\n\n<ul>\n<li>Food, cosmetics, supplements, and other <strong>perishable goods<\/strong> that auto-disappear after their sell-by date<\/li>\n<li><strong>Limited-time sales<\/strong> and flash offers : pair with the Pro countdown timer for real urgency<\/li>\n<li><strong>Seasonal products<\/strong> (holiday, summer lines) that should vanish off-season<\/li>\n<li><strong>Digital licenses<\/strong>, event tickets, and subscription codes with a fixed validity window<\/li>\n<li><strong>Rental listings<\/strong>, classifieds, and marketplace-style stores where items expire<\/li>\n<\/ul>\n\n<h3>\ud83d\udd11 Free Features<\/h3>\n\n<ul>\n<li>Set an <strong>expiry date<\/strong> for any WooCommerce product or variation<\/li>\n<li>Automatically mark expired products as <strong>Out of Stock<\/strong> or <strong>Draft<\/strong><\/li>\n<li><strong>Email notifications<\/strong> to store admins when a product expires<\/li>\n<li><strong>Show or hide<\/strong> the expiry date on single product and shop pages, with customizable markup<\/li>\n<li>Display expiry info in <strong>order details<\/strong> (frontend, admin, and order emails)<\/li>\n<li><strong>Sort<\/strong> products in the admin list by expiry date<\/li>\n<li><strong>Quick edit<\/strong> and <strong>bulk edit<\/strong> expiry dates from the product list<\/li>\n<li>Custom notification recipients (comma-separated emails)<\/li>\n<li><strong>WPML-compatible<\/strong> expiry markup<\/li>\n<li>Works with both simple and variable products<\/li>\n<\/ul>\n\n<h3>\u2b50 Pro Features<\/h3>\n\n<p>Upgrade to <strong>Product Expiry Pro<\/strong> for everything above, plus:<\/p>\n\n<ul>\n<li>\u23f1 <strong>Live Countdown Timer<\/strong> on product pages : day \/ hour \/ minute \/ second, with three display styles (blocks, badge, minimal) and automatic green \u2192 amber \u2192 red urgency colouring<\/li>\n<li>\ud83d\udcca <strong>CSV Bulk Tools<\/strong> : export every product and variation with expiry data, edit in Excel, re-import to update dates, times, notes and on-expiry actions across thousands of products at once<\/li>\n<li>\ud83d\udd50 <strong>Exact expiry time<\/strong> (HH:MM), not just the date<\/li>\n<li>\ud83d\udce7 <strong>Pre-expiry reminder emails<\/strong> : notify admins X days <em>before<\/em> a product expires<\/li>\n<li>\u2709\ufe0f Fully customizable <strong>email subject and body<\/strong><\/li>\n<li>\ud83d\udccb <strong>Premium dashboard<\/strong> to manage every expiring product from one screen<\/li>\n<li>\ud83d\udd04 <strong>Inline plugin updates<\/strong> directly from your WordPress admin<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/webcodingplace.com\/product-expiry-for-woocommerce\/?utm_source=wporg&amp;utm_medium=readme&amp;utm_campaign=pro\">See all Pro features \u2192<\/a><\/p>\n\n<h3>\ud83d\udc9a Built Right<\/h3>\n\n<ul>\n<li>Works with any well-coded WooCommerce theme : no template overrides needed<\/li>\n<li>Translation-ready; <strong>WPML<\/strong> and <strong>Polylang<\/strong> supported<\/li>\n<li>Clean uninstall : no orphaned options or cron jobs<\/li>\n<li>Lightweight: no external API calls on frontend, no tracking<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/<\/code> directory or install through the WordPress plugin dashboard.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Edit a product in WooCommerce, and you\u2019ll see a new <strong>\"Product Expiry\"<\/strong> panel.<\/li>\n<li>Set your desired expiry date and choose the action on expiry (e.g., draft or out-of-stock).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20set%20expiry%20dates%20for%20individual%20variations%3F\"><h3>Can I set expiry dates for individual variations?<\/h3><\/dt>\n<dd><p>Yes, the plugin supports setting expiration dates at the variation level.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20product%20expires%3F\"><h3>What happens when a product expires?<\/h3><\/dt>\n<dd><p>Depending on your settings, it will either be moved to Draft status or marked as Out of Stock automatically.<\/p><\/dd>\n<dt id=\"can%20i%20display%20the%20expiry%20date%20on%20the%20product%20page%3F\"><h3>Can I display the expiry date on the product page?<\/h3><\/dt>\n<dd><p>Yes. You can choose to show or hide the expiry date on the front end and even control where it appears and how it looks.<\/p><\/dd>\n<dt id=\"will%20i%20be%20notified%20when%20a%20product%20expires%3F\"><h3>Will I be notified when a product expires?<\/h3><\/dt>\n<dd><p>Yes, the plugin can send an email notification when a product expires. You can also specify a custom recipient email address.<\/p><\/dd>\n<dt id=\"can%20i%20edit%20expiry%20dates%20in%20bulk%3F\"><h3>Can I edit expiry dates in bulk?<\/h3><\/dt>\n<dd><p>Yes. You can bulk-edit or quick-edit expiry dates from the product listing page in your admin dashboard.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.2<\/h4>\n\n<ul>\n<li>Bug Fixed: Variable products not displaying expiry note when display is outside of form<\/li>\n<li>Notice: POT Updated<\/li>\n<\/ul>\n\n<h4>3.1<\/h4>\n\n<ul>\n<li>Feature Added: Enhanced Hook Selection UI! You can now choose display positions for Single Product and Archive pages via a user-friendly dropdown<\/li>\n<li>Feature Added: Added support for \"Custom Hooks.\" If your theme uses non-standard hooks, you can still enter them manually.<\/li>\n<li>Feature Added: Modernized Admin experience with SweetAlert2 integration for smoother, real-time settings saving.<\/li>\n<li>Feature Added: Optimized AJAX saving logic to provide better feedback when \"no changes\" are detected.<\/li>\n<li>Bug Fixed: Email notification is not working when no action is selected.<\/li>\n<\/ul>\n\n<h4>3.0<\/h4>\n\n<ul>\n<li>Feature Added: New UI with more control<\/li>\n<li>Feature Added: Email Subject and Markup options<\/li>\n<li>Bug Fixed: Expiry date for variations does not show in order summary<\/li>\n<\/ul>\n\n<h4>2.9<\/h4>\n\n<ul>\n<li>Bug Fixed: WPML breaks %date% placeholder in emails and frontend<\/li>\n<\/ul>\n\n<h4>2.8<\/h4>\n\n<ul>\n<li>Bug Fixed: Date is not respecting the site's timezone settings. (credits: @akukameda)<\/li>\n<\/ul>\n\n<h4>2.7<\/h4>\n\n<ul>\n<li>Feature Added: Sorting by expiry date<\/li>\n<li>Feature Added: 6 Months filter<\/li>\n<li>Feature Added: Filter variable products<\/li>\n<li>Feature Added: Variable products expiry date in admin column<\/li>\n<li>Feature Added: Support with WooCommerce 9.8.5<\/li>\n<li>Bug Fixed: Uncaught Error: Call to a member function get_meta()<\/li>\n<li>Bug Fixed: Date is not displaying for variable products<\/li>\n<\/ul>\n\n<h4>2.6<\/h4>\n\n<ul>\n<li>Vulnerability Fixed: issue identified by Wordfence team is fixed<\/li>\n<\/ul>\n\n<h4>2.5<\/h4>\n\n<ul>\n<li>Bug Fixed: Cron event does not get cleared when date is deleted<\/li>\n<\/ul>\n\n<h4>2.4<\/h4>\n\n<ul>\n<li>Feature Added: Provide custom expiry note to display<\/li>\n<li>Feature Added: Shortcode added [expiry_date before=\"\" after=\"\"]<\/li>\n<li>Bug Fixed: Quick edit date is always empty<\/li>\n<\/ul>\n\n<h4>2.3<\/h4>\n\n<ul>\n<li>Feature Added: Variations support<\/li>\n<li>Feature Added: WPML Support<\/li>\n<li>Feature Added: Make products out of stock<\/li>\n<li>Feature Added: Quick settings button<\/li>\n<\/ul>\n\n<h4>2.2<\/h4>\n\n<ul>\n<li>Feature Added: Product becomes draft when the date pass (+1 Day)<\/li>\n<li>Feature Added: Option to display date in order details (Admin + Front)<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>Feature Added: Option to display expiry date in order emails<\/li>\n<li>Bug Fixed: Display on frontend not saving settings<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Feature Added: Admin filtering by expiry status<\/li>\n<li>Feature Added: Custom text markup<\/li>\n<li>Feature Added: Custom date format<\/li>\n<li>Feature Added: Email notification on expiry<\/li>\n<\/ul>\n\n<h4>1.5<\/h4>\n\n<ul>\n<li>Feature Added: Russian Translation Added<\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li>Feature Added: Bulk edit expiration date<\/li>\n<li>Feature Added: Admin column added to display dates<\/li>\n<li>Notice: POT updated<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>Bug Fixed: Warning Use of undefined constant<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Ability to enable\/disable display of expire date on the product page<\/li>\n<li>POT file updated<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Expiry date added in the single product page<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial Release<\/li>\n<\/ul>","raw_excerpt":"Set expiration dates for WooCommerce products and variations. Automatically change their status or send notifications when they expire.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/142431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=142431"}],"author":[{"embeddable":true,"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/webcodingplace"}],"wp:attachment":[{"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=142431"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=142431"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=142431"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=142431"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=142431"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=142431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}