Free cookie consent management tool by TermsFeedAktualizacja preferencji plików cookie

Estimated Delivery Date for Magento 2

€71.52 €58.15
COMPOSER Installation
M2-ESTIMATED-DELIVERY-DATE
PayPal PayPal
Przelew Przelew

Estimated Delivery Date is a Magento 2 module that shows the customer the estimated shipping and delivery date before the order is placed. The information appears on the product page, in the cart, in email communication, and in the admin panel for the order.

The solution helps turn delivery uncertainty into a clear purchase promise. The customer sees when the store plans to ship the product and when delivery can be expected, while the store team gets tools to keep this information up to date after the purchase as well.

Customer needs

Customers of online stores increasingly make purchase decisions not only based on price, but also based on fulfillment time. A lack of clear delivery information leads to cart abandonment, customer service inquiries, and unnecessary tension after purchase.

The module addresses the most important buyer needs:

  • clear information about when the order can be shipped,
  • a readable delivery date before adding the product to the cart,
  • a message that takes weekends, holidays, and processing time into account,
  • information on whether the order still has a chance to be shipped the same day,
  • a consistent message in the cart and in email messages,
  • a notification when the order fulfillment date is manually changed by the store team.

As a result, the customer does not need to look for information in the terms and conditions, FAQ, or contact customer service to confirm the estimated delivery date.

Business value

The module supports sales and order handling at several stages of the purchase journey. On the product page, it strengthens the buying decision; in the cart, it reduces uncertainty before completing the transaction; and after purchase, it helps maintain consistent communication with the customer.

Key benefits for the store:

  • higher trust in the information presented before purchase,
  • fewer customer service questions about fulfillment time,
  • lower risk of disappointment after purchase,
  • the ability to promote fast shipping before the cut-off time,
  • better control of communication during periods of increased sales,
  • preserving the delivery date on the order regardless of later configuration changes,
  • more efficient delay management thanks to change history and email notifications.

Module capabilities

Estimated Delivery Date calculates the estimated date based on processing time, transit time, cut-off time, holidays, weekends, rules, and settings assigned directly to the product. The module can display either a single date or a date range, depending on the configuration and calculation result.

The administrator can manage messages globally for a store view and override them at the product level when needed. This makes it possible to handle both ready-to-ship products and made-to-order assortments, products requiring longer processing, or goods with a non-standard transit time.

Key features

Estimated date on the product page

On the product page, the module displays a message with the estimated delivery date. The information can be based on global settings, rules, or attributes of a specific product. For products whose date should not be displayed, the message can be disabled directly in the product data.

Delivery information in the cart

In the cart, the module displays the estimated date for the order. This means the customer sees delivery information even at the final stage before proceeding to checkout.

Cut-off countdown widget

The module supports a widget that counts down to the same-day shipping cut-off time. It can inform the customer how much time is left to place the order so the store can still ship it today.

The widget can work as an inline element next to the delivery message or as a fixed element attached to a selected corner of the screen. After the cut-off time passes, it can be hidden or replaced with an after cut-off message.

Calculation with business days taken into account

The algorithm takes into account non-working days defined in the configuration and holidays saved in the module. As a result, the estimated date is not based only on simply adding a number of calendar days.

Supported are:

  • weekends or other weekdays marked as non-working,
  • single holidays,
  • holiday ranges,
  • recurring holidays, for example those falling on the same day every year.

Import of holidays and non-working days

The administrator can import holidays and non-working days from a CSV file. This makes it easier to prepare the delivery calendar before holiday seasons, long weekends, or warehouse shutdowns.

The import supports single days, date ranges, and recurring dates. Records can be narrowed down, among other things, to a store view, country, region, shipping method, or MSI source.

Delivery date rules

The module includes a rules table that can define processing time, transit time, customer message, confidence level, and priority. Rules can be linked to a product, category, store view, or shipping method.

This allows the store to differentiate dates for selected product groups or shipping methods without changing the global configuration.

Product attributes

The module adds a product attribute group called Estimated Delivery Date. From the product edit screen, the administrator can set individual processing time, transit time, a custom message, a confidence level for the date, or completely disable date presentation for a given product.

This is useful for made-to-order products, heavy products, non-standard products, personalized products, or items available under a different logistics model than the rest of the catalog.

Order date snapshot

After the order is placed, the module saves the calculated date as a snapshot on the order and order items. This means that a later change in configuration, calendar, or product attributes does not change the historical information saved with the order.

The snapshot includes, among other things, the estimated shipping date, estimated delivery date, customer message, code of the rule used, confidence level, and calculation time.

View and edit the date in the admin panel

In the order view, the administrator sees an Estimated Delivery Date section. They can manually change the shipping date, delivery date, and customer message, provide a reason for the delay, and send the customer a message with an apology and the new date.

The module saves a change history, allowing the store team to check the previous and new date, the reason for the change, and whether the email was sent.

Email communication

The module adds a block with the estimated delivery to order, invoice, and shipment emails. It can also send a separate email after the order is paid and a message after a manual change of the delivery date.

Communication after the date change may include the previous date, the new date, a default apology message, and the reason for the delay entered by the administrator.

REST API

The module provides REST endpoints for retrieving estimates for a product, customer cart, guest cart, and order. This makes it possible to use estimated delivery data in frontend integrations, external systems, or mobile applications.

Where the module displays the date

The date can be visible in the following places:

  • product page,
  • cart,
  • admin panel in the order view,
  • order confirmation email,
  • invoice email,
  • shipment email,
  • separate email after the order is paid,
  • separate email after the fulfillment date is changed.

Use cases

The module works especially well in stores where fulfillment time depends on product availability, warehouse operations, shipping method, or the holiday calendar.

Example use cases:

  • the store wants to show the customer that an order placed before 2:00 PM can be shipped the same day,
  • some products require longer processing time than the standard assortment,
  • the store wants to take holidays and long weekends into account in the delivery promise,
  • customer service needs a tool to change the date on the order and send an apology,
  • an external frontend or integration needs to retrieve the estimate via API.

Summary

Estimated Delivery Date organizes delivery date communication in Magento 2. It combines date calculation, customer-facing messages, product-level configuration, holiday handling, order snapshots, emails, and API in a single module.

For the customer, this means greater transparency before purchase. For the store, it means fewer questions, better expectation management, and more professional communication after the order is placed.

Installation, configuration, and product attributes

Document scope

This document describes installation of the Estimated Delivery Date module, configuration in the Magento 2 admin panel, and management of the attributes added to the product. Field descriptions are based on the current implementation of the module.

Installation

The package is intended for installation via Composer.

Example installation from a VCS repository:

composer config repositories.kowal.estimated.delivery.date vcs https://github.com/kowalco/estimated-delivery-datecomposer require kowal/module-estimated-delivery-datebin/magento module:enable Kowal_EstimatedDeliveryDatebin/magento setup:upgradebin/magento cache:flush

After production deployment, you should run the standard compilation and static asset deployment process used in the Magento project:

bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento cache:flush

Configuration location

Module configuration is available in the admin panel:

Stores > Configuration > Sales > Estimated Delivery Date

Settings are available at the default, website, and store view levels, according to the Magento configuration mechanism.

General

Enabled

Enables or disables the module for the given configuration scope. When the field is disabled, frontend messages should not be displayed.

Default value: Yes.

Calculation Timezone

The time zone used for date calculation and cut-off time. If the field is left empty, the module uses the store time zone configured in Magento.

Example value:

Europe/Warsaw

Use case: useful when the store operates in multiple store views or when the warehouse handling shipments works in a different time zone than the store default configuration.

Fallback Message

Fallback message used as emergency text when the store wants to show general information instead of a specific date.

Default value:

We will confirm the delivery date after the order is placed.

Date Format

The date format used when rendering messages for the customer. The field uses the ICU pattern supported by Magento date formatting.

Default value:

EEEE, d MMMM

Example output:

Monday, 18 May

Date Calculation

Processing Days Min

Minimum number of business days needed to process the order before shipping.

Default value: 1.

Use case: defines the earliest possible shipping date.

Processing Days Max

Maximum number of business days needed to process the order.

Default value: 1.

Use case: allows you to create a shipping date range when processing may take longer than the minimum time.

Transport Days Min

Minimum number of business days in transit from shipping to delivery.

Default value: 1.

Use case: defines the earliest possible delivery date after shipping.

Transport Days Max

Maximum number of business days in transit.

Default value: 2.

Use case: allows you to show a delivery range, for example when the carrier usually delivers in 1-2 business days.

Same-day Shipping Cut-off Time

The cut-off time for same-day shipping. The value should be entered in the HH:MM format.

Default value:

14:00

If the current time is later than the cut-off, the module moves the start of the calculation to the next business day.

Non-working Weekdays

List of weekdays treated as non-working. Values should be provided as comma-separated ISO numbers:

  • 1 - Monday,
  • 2 - Tuesday,
  • 3 - Wednesday,
  • 4 - Thursday,
  • 5 - Friday,
  • 6 - Saturday,
  • 7 - Sunday.

Default value:

6,7

Use case: by default, skips Saturdays and Sundays when counting business days.

Safety Buffer Days

Additional safety buffer added to transit time.

Default value: 0.

Use case: useful during periods of increased order volume, unstable carrier performance, or for products that require a more cautious delivery promise.

Display Settings

Show on Product Page

Enables display of the estimated date on the product page.

Default value: Yes.

Show in Cart

Enables display of the estimated date in the cart.

Default value: Yes.

Show in Admin Order

Enables the Estimated Delivery Date section in the order view in the admin panel.

Default value: Yes.

Show Cut-off Widget on Product Page

Enables the cut-off countdown widget on the product page.

Default value: Yes.

Show Cut-off Widget in Cart

Enables the cut-off widget in the cart.

Default value: No.

Cut-off Widget Mode

Defines how the cut-off widget is displayed.

Available values:

  • Inline - the widget is displayed where the block is embedded,
  • Fixed - the widget is attached to a selected corner of the screen,
  • Inline + Fixed - the widget works at the same time as both an inline and fixed element.

Default value: Inline.

Fixed Widget Position

Defines the position of the fixed widget.

Available values:

  • Bottom Right - bottom right corner,
  • Bottom Left - bottom left corner,
  • Top Right - top right corner,
  • Top Left - top left corner.

Default value: Bottom Right.

Fixed Widget Devices

Defines the device types on which the fixed widget should be visible.

Available values:

  • Desktop,
  • Mobile,
  • Desktop + Mobile.

Default value: Desktop + Mobile.

After Cut-off Behavior

Defines the widget behavior after the cut-off time has passed.

Available values:

  • Hide Widget - the widget will be hidden,
  • Show After Cut-off Message - the widget will show an after cut-off message.

Default value: Show After Cut-off Message.

Customer Messages

Messages support simple variables in the {{nazwa_zmiennej}} format.

Available variables for delivery messages:

  • {{ship_date}},
  • {{ship_date_from}},
  • {{ship_date_to}},
  • {{delivery_date}},
  • {{delivery_date_from}},
  • {{delivery_date_to}}.

Available variables for cut-off messages:

  • {{cutoff_time}},
  • {{cutoff_countdown}}.

Delivery Range Message

Message template used when the calculation returns a delivery date range.

Default value:

Estimated delivery: {{delivery_date_from}} - {{delivery_date_to}}

Single Delivery Date Message

Message template used when the earliest and latest delivery dates are the same.

Default value:

Estimated delivery: {{delivery_date}}

Cut-off Countdown Message

Message displayed before the cut-off time is reached.

Default value:

Order within {{cutoff_countdown}} and we will ship it today.

After Cut-off Message

Message displayed after the cut-off time has passed if the After Cut-off Behavior field is set to show a message.

Default value:

Today shipping window is already closed. We will ship on the next business day.

Emails

Send Separate Email After Payment

Enables a separate email sent after the order is paid.

Default value: No.

Use case: allows you to confirm to the customer that the payment has been accepted and the order has entered fulfillment.

Payment Confirmation Template

Email template sent after payment.

Default value:

estimated_delivery_date_emails_payment_template

Payment Confirmation Sender

Sender of the post-payment message. The field uses email identities configured in Magento.

Default value:

sales

Allow Email After Delivery Date Change

Allows sending the customer a message after a manual change of the delivery date in the admin panel.

Default value: Yes.

Delivery Date Change Template

Email template sent after the delivery date is changed.

Default value:

estimated_delivery_date_emails_date_change_template

Delivery Date Change Sender

Sender of the delivery date change message.

Default value:

sales

Default Apology Message

Default apology text used in the delivery date change message.

Default value:

We apologize, the fulfillment date of your order has changed.

Require Delay Reason

Requires providing a delay reason when manually changing the date in the order view.

Default value: No.

Use case: enforces better operational discipline and makes it easier to explain date changes later.

Send Automatically After Manual Date Change

Automatically sends a message to the customer after a manual change of the delivery date.

Default value: No.

If the field is disabled, the administrator can decide to send the message by selecting the checkbox in the order view.

Product attribute management

The module adds an Estimated Delivery Date attribute group to the product. The attributes are optional and have store view scope. If they are not filled in, the module uses rules or global configuration.

Product attributes take precedence over rules calculated for the product. This allows you to quickly override the date for a specific SKU without changing global settings.

Where to edit attributes

The attributes are available in the Magento admin panel:

Catalog > Products > Edit Product > Estimated Delivery Date

If the group is not visible in a given attribute set, you should check the product attribute set configuration in Magento.

EDD Processing Days Min

Attribute code:

edd_processing_days_min

Minimum number of business days needed to process a specific product.

Use case: a ready-to-ship product can have a value of 0, while a product sourced from a supplier may have a value such as 3.

EDD Processing Days Max

Attribute code:

edd_processing_days_max

Maximum number of business days needed to process a specific product.

Use case: if processing time varies, you can set for example a minimum of 2 and a maximum of 5 so that the message shows a safer range.

EDD Transport Days Min

Attribute code:

edd_transport_days_min

Minimum number of business days in transit for a specific product.

Use case: for products shipped with a different carrier or from a different warehouse.

EDD Transport Days Max

Attribute code:

edd_transport_days_max

Maximum number of business days in transit for a specific product.

Use case: for oversized, palletized, or specially handled logistics products.

EDD Static Customer Message

Attribute code:

edd_static_text

Custom customer message displayed instead of the message from the global configuration.

Examples:

Made-to-order product. We will confirm the delivery date after purchase.
Estimated delivery: {{delivery_date_from}} - {{delivery_date_to}}

The attribute can use the same date variables that are available in global delivery messages.

EDD Confidence

Attribute code:

edd_confidence

Confidence level of the date saved with the delivery promise.

Recommended values:

  • guaranteed - guaranteed date,
  • likely - likely date,
  • estimated - estimated date,
  • unknown - no reliable estimate.

The current implementation saves this value in the calculation result and snapshots. It can be used by templates, integrations, or further message personalization.

Disable Estimated Delivery Date

Attribute code:

edd_disable

Disables display of the estimated delivery for a specific product on the product page and also disables the cut-off widget for it.

Use case: unavailable products, products requiring an individual delivery quote, services, pre-order products, or goods for which the store does not want to make a delivery promise.

Best practices for filling in attributes

For most products, the attributes can be left empty and the global configuration can be used. It is worth filling them in only when a specific product genuinely differs from the standard logistics process.

Example approach:

  • ready-to-ship products: leave empty or set a shorter processing time,
  • products sourced from a supplier: set a longer processing range,
  • oversized products: set longer transit time,
  • personalized products: use a custom static message,
  • products without a reliable date: enable Disable Estimated Delivery Date or set an explanatory message.

After changing product attributes, you should refresh the Magento cache if the store uses full page cache or additional theme cache mechanisms.

Import of holidays and non-working days

The import is available in the admin panel:

Sales > Estimated Delivery Date > Import Holidays

The CSV file must contain the columns:

code,name,type

Optional columns:

date_from,date_to,month,day,country,region,postcode_pattern,shipping_method,source_code,store_id,scope,is_active

Supported types in the type column:

  • single - single date, requires date_from,
  • range - date range, requires date_from and date_to,
  • recurring - recurring date, requires month and day.

Description of selected import fields:

  • code - unique code of the holiday or non-working day,
  • name - name visible in the admin area,
  • type - entry type: single day, range, or recurring date,
  • date_from - start date in YYYY-MM-DD format,
  • date_to - end date in YYYY-MM-DD format,
  • month - month for a recurring entry,
  • day - day of the month for a recurring entry,
  • country - country code,
  • region - region,
  • postcode_pattern - postal code pattern,
  • shipping_method - shipping method,
  • source_code - MSI source code,
  • store_id - store view ID,
  • scope - application scope, default shipping_delivery,
  • is_active - entry activity status.

Example:

code,name,type,date_from,date_to,month,day,country,store_id,is_activechristmas_2026,Christmas Break,range,2026-12-24,2026-12-26,,,,,1new_year,New Year,recurring,,,1,1,,,1

Managing the date on the order

The Estimated Delivery Date section is available in the order view if the Show in Admin Order field is enabled.

The administrator can edit:

  • shipping date from,
  • shipping date to,
  • delivery date from,
  • delivery date to,
  • customer message,
  • delay reason.

If email after a date change is enabled, the administrator can select sending a message with an apology and the new date. The module saves change history with the previous and new date, the reason, and information about whether the email was sent.

REST API

The module provides the endpoints:

GET /rest/V1/estimated-delivery/product/:skuGET /rest/V1/estimated-delivery/cart/:cartIdGET /rest/V1/estimated-delivery/guest-cart/:cartIdGET /rest/V1/estimated-delivery/order/:orderId

The API returns, among other things, the shipping date, delivery date, message, confidence level, rule code, calculation date, and data source. For an order, the module returns the saved snapshot if it exists.

Write Your Own Review
You're reviewing:Estimated Delivery Date for Magento 2
Your Rating
Products