Estimated Delivery Date — Complete Guide
Install and configure the Estimated Delivery Date module: cut-off, preparation times, carriers and public holidays.
Overview
DataFirefly Delivery Date displays an estimated delivery date on the product page, cart and checkout of your PrestaShop 8 or 9 store. The calculation combines four factors: each product’s own preparation time, the carrier’s delivery range (min/max business days), weekends and public holidays, and your daily cut-off time. Before the cut-off, a live countdown shows the customer how long they have left for same-day shipping.
Installation
- In your PrestaShop back office, open Modules → Module Manager → Upload a module.
- Upload the
dfdeliverydate.zipfile. - Click Install, then Configure.
Installation creates three tables (ps_dfdeliverydate_product, ps_dfdeliverydate_carrier, ps_dfdeliverydate_holiday), registers the required hooks, adds an admin tab for holidays and pre-seeds the eight French national holidays as yearly recurring entries.
General configuration
From Modules → Module Manager → DataFirefly Delivery Date → Configure, the first panel groups the global settings:
- Cut-off hour and minute — the order deadline for same-day shipping (default 14:00).
- Shipping timezone — PHP timezone string, default
Europe/Paris. All date calculations run in this timezone, regardless of the server’s timezone. - Default preparation days — applied to every product with no specific value.
- Default carrier min/max days — used when a carrier has no range of its own.
- Weekend exclusion — excludes Saturday and Sunday from the calculation. If disabled, you can exclude Sunday only (next option) if you ship on Saturdays.
- Display mode — range (between min and max), latest date only, or range plus ship date.
- Display zones — three independent switches: product page, cart, checkout.
- Live countdown — toggles the HH:MM:SS counter to the cut-off.
Per-product preparation time
Every product page in the back office shows a “Delivery date — preparation time” panel. Enter the number of business days needed before this product can ship:
0— in-stock product, ships immediately (eligible for same-day shipping before the cut-off);2— product requiring two business days of preparation;14— made-to-order or customised product.
The value is saved when the product is saved. In the cart, the product with the longest preparation time determines the ship date of the whole order.
Carrier configuration
The second panel of the configuration page lists every active carrier. For each, set the minimum and maximum delivery business days. Common examples: express carriers 1–2, standard postal 3–5, pickup networks 4–7. On the product page and cart, the store’s default carrier range is used; at checkout, the module switches to the carrier the customer actually selected.
When PrestaShop versions a carrier (a new ID is created automatically after editing), the module copies the configuration to the new ID — no settings are lost.
Public holidays
Holidays are managed from Improve → Shipping → Holidays (Delivery Date). Each entry has a date, a name, a recurring flag and an active/inactive status:
- Recurring — only the month and day matter; the holiday is automatically projected onto the current and next year (e.g. Christmas every 25 December).
- One-off — a single specific date, ideal for a bridge day or exceptional closure.
The eight French national holidays come pre-installed as recurring: 1 January, 1 May, 8 May, 14 July, 15 August, All Saints, 11 November, 25 December. You can deactivate them individually and add your own regional or foreign holidays.
Calculation algorithm
The calculation follows these steps, all expressed in business days in the configured timezone:
- The ship date starts at today. If the current time is past the cut-off, it moves to tomorrow.
- The product’s preparation time (or the cart maximum) is added in business days, skipping weekends and holidays.
- If the resulting ship date lands on a non-business day, it is pushed to the next business day.
- The delivery range is obtained by adding the carrier’s min and max, still in business days.
The “ships today” message and the countdown only appear when three conditions are met: the current time is before the cut-off, today is a business day, and the preparation time is zero.
Template customisation
The three frontend widgets are rendered by overridable Smarty templates. Copy the relevant file(s) from modules/dfdeliverydate/views/templates/hook/ to themes/your-theme/modules/dfdeliverydate/views/templates/hook/:
product-delivery-date.tpl— product page;cart-delivery-date.tpl— cart;checkout-delivery-date.tpl— checkout and order confirmation.
Each template receives a $dfdd array containing among others ships_today, min_date_label, max_date_label, ship_date_label, cutoff_ts and display_mode. The CSS lives in views/css/front.css (classes prefixed dfdd-).
Troubleshooting
- The widget doesn’t show on the product page — check the zone is enabled in the configuration and that your theme implements the
displayProductAdditionalInfohook (the Classic theme and most marketplace themes do). - The countdown shows 00:00:00 — today’s cut-off has passed; the counter only displays while same-day shipping is still possible.
- Dates look shifted by one day — check the timezone configured in the module: the calculation uses this timezone, not the server’s or the browser’s.
- A holiday isn’t taken into account — check it is active, and for a one-off holiday that its year matches the current year.
Uninstall
Uninstalling removes the module’s three tables, all configuration entries (DFDD_ prefix), the holidays admin tab and the hook registrations. Per-product preparation times are therefore permanently lost — export them beforehand if needed.