{"id":366505,"date":"2026-09-24T02:23:48","date_gmt":"2026-09-24T02:23:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/devmerx-estimated-delivery-date-for-woocommerce\/"},"modified":"2026-09-24T02:23:36","modified_gmt":"2026-09-24T02:23:36","slug":"devmerx-delivery-date-estimator","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/devmerx-delivery-date-estimator\/","author":23563356,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.0","stable_tag":"0.3.0","tested":"7.1.2","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"DevMerx Delivery Date Estimator","header_author":"DevMerx","header_description":"Accurate estimated delivery dates using processing time, transit time, business days, holidays and cutoff times.","assets_banners_color":"0b3433","last_updated":"2026-09-24 02:23:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/devmerx.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.0":{"tag":"0.3.0","author":"devmerx","date":"2026-09-24 02:23:36","revision":3710398}},"upgrade_notice":{"0.3.0":"<p>Breaking: the shortcode is now <code>[devmerx_delivery_estimate]<\/code> and hooks are <code>devmerx_dde_*<\/code> \u2014 update any page or custom code using the old names. The default message template also changed, so uncustomised storefront wording will change. Settings and past order estimates carry over.<\/p>","0.2.1":"<p>Responsive settings screens, colour pickers for the styling options, and a fix to the Cart\/Checkout block script dependencies. No breaking changes; safe to update.<\/p>","0.2.0":"<p>Adds the admin settings UI, per-product overrides, all storefront display surfaces, the shortcode, Blocks\/Store API support, and permanent per-order estimate snapshots. No breaking changes; safe to update.<\/p>","0.1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3710397,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3710397,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3710397,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3710397,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3710397,"resolution":"1","location":"assets","locale":"","width":1118,"height":597},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3710397,"resolution":"2","location":"assets","locale":"","width":1118,"height":1163},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3710397,"resolution":"3","location":"assets","locale":"","width":1118,"height":437},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3710397,"resolution":"4","location":"assets","locale":"","width":1320,"height":700},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3710397,"resolution":"5","location":"assets","locale":"","width":1320,"height":1130},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3710397,"resolution":"6","location":"assets","locale":"","width":1320,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3710397,"resolution":"7","location":"assets","locale":"","width":1180,"height":644}},"screenshots":{"1":"The WooCommerce \u2192 Estimated Delivery \"General\" settings tab: processing time, transit time, business days, and the cutoff-time checkbox.","2":"The \"Display\" settings tab: display mode, date format, message template, countdown toggle, per-location visibility checkboxes, and basic styling controls.","3":"The \"Holidays\" settings tab, showing the repeater with a couple of example holiday rows (single date, date range, and a recurring yearly holiday).","4":"The estimated delivery message rendered on a single product page.","5":"The estimated delivery message rendered in the classic WooCommerce cart.","6":"The estimated delivery message rendered in the WooCommerce Checkout block.","7":"The \"Delivery\" tab inside the WooCommerce product editor, showing the per-product override fields."}},"plugin_section":[],"plugin_tags":[282383,23288,130435,13422,5141],"plugin_category":[],"plugin_contributors":[282384],"plugin_business_model":[],"class_list":["post-366505","plugin","type-plugin","status-publish","hentry","plugin_tags-cutoff-time","plugin_tags-delivery-date","plugin_tags-estimated-delivery","plugin_tags-holidays","plugin_tags-shipping-estimate","plugin_contributors-devmerx","plugin_committers-devmerx"],"banners":{"banner":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/banner-772x250.png?rev=3710397","banner_2x":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/banner-1544x500.png?rev=3710397","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/icon-128x128.png?rev=3710397","icon_2x":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/icon-256x256.png?rev=3710397","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/screenshot-1.png?rev=3710397","caption":"The WooCommerce \u2192 Estimated Delivery \"General\" settings tab: processing time, transit time, business days, and the cutoff-time checkbox."},{"src":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/screenshot-2.png?rev=3710397","caption":"The \"Display\" settings tab: display mode, date format, message template, countdown toggle, per-location visibility checkboxes, and basic styling controls."},{"src":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/screenshot-3.png?rev=3710397","caption":"The \"Holidays\" settings tab, showing the repeater with a couple of example holiday rows (single date, date range, and a recurring yearly holiday)."},{"src":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/screenshot-4.png?rev=3710397","caption":"The estimated delivery message rendered on a single product page."},{"src":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/screenshot-5.png?rev=3710397","caption":"The estimated delivery message rendered in the classic WooCommerce cart."},{"src":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/screenshot-6.png?rev=3710397","caption":"The estimated delivery message rendered in the WooCommerce Checkout block."},{"src":"https:\/\/ps.w.org\/devmerx-delivery-date-estimator\/assets\/screenshot-7.png?rev=3710397","caption":"The \"Delivery\" tab inside the WooCommerce product editor, showing the per-product override fields."}],"raw_content":"<!--section=description-->\n<p>Help shoppers answer \"When will my order arrive?\" before they buy.\nDevMerx Delivery Date Estimator calculates estimated delivery dates from\nyour processing time, transit time, working days, holidays, and order cutoff.<\/p>\n\n<p>Show estimates across the shopping journey, from product pages to checkout\nand order emails. A shared calculation engine applies your settings, while\neach order saves the estimate given at purchase for later reference.<\/p>\n\n<p><strong>Free features:<\/strong><\/p>\n\n<ul>\n<li>Global processing time and transit time (minimum\/maximum days)<\/li>\n<li>Business-day or calendar-day mode, with configurable working days<\/li>\n<li>Unlimited holidays: single dates, date ranges, and yearly-recurring dates<\/li>\n<li>A daily order cutoff time, with an optional live countdown on the storefront<\/li>\n<li>Per-product overrides: use the global settings, customise processing\/transit\/cutoff\/message for one product, or disable the estimate entirely<\/li>\n<li>Six display modes for the <code>{date}<\/code> token in your message: date range (\"Sep 14 - Sep 16\"), exact date, earliest date, latest date, duration (\"3-5 days\"), or relative (\"in 3-5 days\")<\/li>\n<li>Configurable date formats, message templates, and basic styling (colour, border, icon, alignment)<\/li>\n<li>Displays on the product page, shop\/category archives, cart, checkout, thank-you page, My Account order details, and WooCommerce order emails \u2014 each independently toggled on or off<\/li>\n<li><code>[devmerx_delivery_estimate]<\/code> shortcode for placing the estimate anywhere, including <code>[devmerx_delivery_estimate product_id=\"123\"]<\/code><\/li>\n<li>Full WooCommerce Blocks support: the same estimate appears in the Cart and Checkout blocks via the Store API, not just the classic shortcode-based Cart\/Checkout<\/li>\n<li>Every order permanently records the estimate it was given at the time of purchase, so changing your settings later never rewrites what a past order promised a customer<\/li>\n<li>Full support for WooCommerce's High-Performance Order Storage (HPOS)<\/li>\n<li>Translation-ready<\/li>\n<\/ul>\n\n<p>This plugin performs every calculation locally, inside WordPress. No external\nAPI calls, no per-request costs, and no customer data leaves your site to\ncompute a delivery date.<\/p>\n\n<h4>A note on cutoff times<\/h4>\n\n<p>Unchecking \"Enable a daily cutoff time\" does not erase the time you already\nentered \u2014 it is only greyed out. Re-enable the checkbox at any time and your\npreviously configured cutoff time is still there, ready to use again.<\/p>\n\n<h4>More delivery control with DevMerx Pro \u2014 in development<\/h4>\n\n<p>Does Express need a different delivery estimate from Standard shipping? Do\nmade-to-order products, backorders, or different variations need more time?\nDevMerx Delivery Date Estimator Pro is being developed as a separate add-on\nfor these delivery scenarios.<\/p>\n\n<p><strong>Development status:<\/strong> The capabilities below describe the Pro roadmap,\nnot the features included in this free download or a completed Pro release.\nPro is not available for purchase yet. Get in touch if you would like to\ntell us which of these matters most for your store, or to hear when it is\nready.<\/p>\n\n<p><strong>Planned Pro capabilities:<\/strong><\/p>\n\n<ul>\n<li><strong>Different estimates for different shipping options:<\/strong> Set minimum and maximum processing and transit days by shipping method, shipping class, zone, product, or variation. Choose between adding extra days and setting a specific range. For each duration, a matching Set rule takes precedence over Add rules. Shipping-method conditions apply from the cart onward, once the method is known.<\/li>\n<li><strong>Restock-aware delivery dates:<\/strong> Set restock dates for products and variations, with variation dates taking priority over product dates. Keep estimates from starting before stock is expected. Configure separate backorder lead times and extra time for larger quantities.<\/li>\n<li><strong>Cutoffs that match your fulfilment schedule:<\/strong> Set cutoffs by zone, class, or shipping method; exclude dispatch blackout dates; and choose a timezone independent of the site setting.<\/li>\n<li><strong>Targeted rules and messages:<\/strong> Combine category, tag, stock status, product, variation, attribute, customer role\/group, cart value\/quantity, country\/state\/postcode, seasonal date-range, and day-of-week conditions. Show custom messages or hide estimates for matching items.<\/li>\n<li><strong>Clearer cart and checkout estimates:<\/strong> Show a date beside each shipping option in classic checkout and the Checkout block, plus per-item and split-shipment estimates.<\/li>\n<li><strong>Manage rules without rebuilding them:<\/strong> Name, reorder, enable\/disable, and duplicate rules. Export and import rules between stores with validation and a preview before applying changes. Rule limits for the commercial release are still being decided.<\/li>\n<li><strong>Practical rule editing:<\/strong> Choose shipping classes and methods, select a variation, and switch processing\/transit actions between Add and Set, with readable summaries of each adjustment or range.<\/li>\n<li><strong>Order fulfilment tools:<\/strong> View dispatch\/delivery dates in the orders list, sort and filter orders by date, and make manual date adjustments. Support for both HPOS and legacy order storage is planned. The Free\/Pro placement of the basic date column is still being decided.<\/li>\n<li><strong>Preview and explain estimates:<\/strong> Simulate a product, destination zone, shipping method, and order time; inspect why an estimate was calculated; and retain the calculation explanation with an order.<\/li>\n<li><strong>Delivery insights:<\/strong> Capture actual fulfilment\/delivery dates, compare promised and actual dates, review accuracy by product\/category\/zone, and identify orders at risk of missing their estimate. This depends on a reliable actual-delivery data source; reporting remains a longer-term development item.<\/li>\n<li><strong>Compatibility roadmap:<\/strong> Dokan vendor-level settings, WCFM, WC Vendors, WooCommerce Subscriptions, WPML, Polylang, and multiple warehouses\/dispatch origins are planned investigation and testing targets, not currently verified compatibility claims.<\/li>\n<\/ul>\n\n<p><strong>Further improvements under consideration:<\/strong> Separate store and carrier\nworking calendars, bulk restock-date editing, and ready-made rule templates.\nThese are research priorities, not confirmed release commitments.<\/p>\n\n<p><a href=\"https:\/\/devmerx.com\/apps\/devmerx-delivery-date-estimator\/\">Explore DevMerx Pro and discuss your delivery requirements<\/a>.<\/p>\n\n<p>All features listed under <strong>Free features<\/strong> are included in this free plugin.\nThey are not time-limited and do not require a Pro purchase.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/devmerx-delivery-date-estimator<\/code> directory, or install the plugin through the WordPress Plugins screen directly.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen in WordPress.<\/li>\n<li>Make sure WooCommerce is installed and active \u2014 this plugin requires it.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Estimated Delivery<\/strong> to configure processing time, transit time, business days, holidays, cutoff time, and display settings.<\/li>\n<li>Optionally, open any product in the WooCommerce product editor and use the \"Delivery\" tab to override the global settings for that product.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20woocommerce%3F\"><h3>Does this plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. DevMerx Delivery Date Estimator is a WooCommerce extension and\ndoes nothing without WooCommerce installed and active.<\/p><\/dd>\n<dt id=\"why%20did%20my%20cutoff%20time%20disappear%20when%20i%20unchecked%20%22enable%20a%20daily%20cutoff%20time%22%3F\"><h3>Why did my cutoff time disappear when I unchecked \"Enable a daily cutoff time\"?<\/h3><\/dt>\n<dd><p>It didn't \u2014 it's only hidden from the form while the checkbox is unchecked.\nThe time you entered is kept in storage exactly as you typed it, and it\nreappears the moment you check the box again. You never need to retype it.<\/p><\/dd>\n<dt id=\"will%20changing%20my%20settings%20affect%20orders%20that%20were%20already%20placed%3F\"><h3>Will changing my settings affect orders that were already placed?<\/h3><\/dt>\n<dd><p>No. The moment an order is created, the estimate it was shown is saved\npermanently with that order. Changing your global settings, holidays, or\nproduct overrides afterward only affects new orders and never rewrites what\nan existing order already promised a customer.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20the%20woocommerce%20cart%20and%20checkout%20blocks%3F\"><h3>Does this work with the WooCommerce Cart and Checkout blocks?<\/h3><\/dt>\n<dd><p>Yes. The same delivery estimate shown on the classic (shortcode-based) Cart\nand Checkout pages is also shown on the block-based Cart and Checkout, using\nWooCommerce's Store API.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20support%20hpos%20%28high-performance%20order%20storage%29%3F\"><h3>Does this plugin support HPOS (High-Performance Order Storage)?<\/h3><\/dt>\n<dd><p>Yes, full support is included and declared via WooCommerce's compatibility\nAPI.<\/p><\/dd>\n<dt id=\"can%20i%20show%20the%20estimate%20somewhere%20other%20than%20the%20built-in%20locations%3F\"><h3>Can I show the estimate somewhere other than the built-in locations?<\/h3><\/dt>\n<dd><p>Yes, use the <code>[devmerx_delivery_estimate]<\/code> shortcode, optionally with a specific\nproduct: <code>[devmerx_delivery_estimate product_id=\"123\"]<\/code>.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20any%20data%20outside%20my%20site%3F\"><h3>Does this plugin send any data outside my site?<\/h3><\/dt>\n<dd><p>No. Every delivery-date calculation happens locally on your own server. This\nplugin contacts no external service, makes no outbound network request of any\nkind, and sends no data \u2014 about you, your store, or your customers \u2014\nanywhere.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Renamed the <code>[estimated_delivery]<\/code> shortcode to <code>[devmerx_delivery_estimate]<\/code>. If you placed the old shortcode in a page, update it \u2014 the old tag no longer renders anything.<\/li>\n<li>Every stored setting, per-product override and saved order estimate moved to a longer, collision-proof storage prefix. Existing data is read automatically; nothing needs re-entering.<\/li>\n<li>All hooks and filters were renamed from <code>dde_*<\/code> to <code>devmerx_dde_*<\/code>. Custom code hooking into this plugin must be updated.<\/li>\n<li>Changed: the default message template is now <code>Estimated delivery: {date}<\/code> instead of <code>Estimated delivery: {min_date} - {max_date}<\/code>, so the \"Display mode\" setting governs the default wording out of the box. If you never saved your own message template, the wording shown on your storefront will change when you update.<\/li>\n<li>Fixed: the \"Display mode\" setting had no effect on what shoppers saw. All six modes \u2014 date range, exact date, earliest date, latest date, duration, and relative \u2014 now genuinely change how the <code>{date}<\/code> token renders.<\/li>\n<li>Fixed: the estimate did not appear in the Cart and Checkout blocks. The bundled block script was out of date and requested the estimate from WooCommerce under a name the plugin no longer published.<\/li>\n<li>Hardened: storefront output now passes through a strict allowlist, so a filter or a tampered stored value cannot inject scripts into a product, cart, checkout or order page.<\/li>\n<li>Fixed: a settings tab added by an add-on can no longer take down the whole settings screen.<\/li>\n<li>Removed the Freemius integration entirely. This plugin now contacts no external service and makes no outbound network request of any kind.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>The settings screens are now fully responsive: every tab, including the holidays repeater, is usable on phones and tablets instead of forcing horizontal scrolling.<\/li>\n<li>Text colour, background colour and border colour are now WordPress colour pickers rather than plain text fields, with a Clear button that restores the theme's own colour.<\/li>\n<li>Fixed: the WooCommerce Blocks script now declares its <code>wc-blocks-checkout<\/code> and <code>wc-blocks-data-store<\/code> dependencies, so the Cart and Checkout block estimate no longer relies on WooCommerce happening to load first.<\/li>\n<li>Fixed: scripts on the settings screen were only ever loaded on the Holidays tab, so no other tab could load one.<\/li>\n<li>Hardened: the two remaining top-level PHP files now block direct HTTP access.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added a dedicated WooCommerce \u2192 Estimated Delivery admin settings screen (General, Display, and Holidays tabs) for configuring processing time, transit time, business days, holidays, cutoff time, and display options without touching code.<\/li>\n<li>Added the \"Delivery\" tab in the WooCommerce product editor for per-product overrides.<\/li>\n<li>Added display of the estimated delivery message across seven storefront surfaces: product page, shop\/category archives, cart, checkout, thank-you page, My Account order details, and WooCommerce order emails, each independently toggled on or off.<\/li>\n<li>Added the <code>[estimated_delivery]<\/code> shortcode, including a <code>product_id<\/code> attribute for showing a specific product's estimate anywhere.<\/li>\n<li>Added full WooCommerce Blocks support: the estimate now appears in the Cart and Checkout blocks via the Store API, not just the classic shortcode-based Cart\/Checkout.<\/li>\n<li>Added immutable per-order estimate snapshots: every order now permanently records the estimate it was given at the time of purchase.<\/li>\n<li>Added full support for WooCommerce's High-Performance Order Storage (HPOS).<\/li>\n<li>Added a Freemius licensing\/update bootstrap, inert unless credentials were configured. Removed again in 0.3.0.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: the delivery-date calculation engine, global settings, business-day\/calendar-day modes, holidays, a daily order cutoff, and the public <code>dde_get_delivery_estimate()<\/code> API and hooks. No admin UI or storefront display yet in this release \u2014 those shipped in 0.2.0.<\/li>\n<\/ul>","raw_excerpt":"Show shoppers an accurate estimated delivery date using processing time, transit time, business days, holidays, and a daily order cutoff.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/366505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=366505"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/devmerx"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=366505"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=366505"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=366505"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=366505"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=366505"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=366505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}