Overview
Delivery Date & Time Slots tells shoppers when their order arrives before they buy, and lets them choose the delivery day and time at checkout. Dates come from your own working week, order cut-off, processing and transit times and closed days, so the promise is one you can keep.
- "Get it tomorrow" on product pages. A delivery estimate with a live countdown to the cut-off ("Order within 2 h 13 min to ship today"). The page carries the next order windows, so cached pages stay right.
- Day and time slot picker at checkout. Per shipping method: off, estimate only, a delivery day, or a day and a time slot. The picker appears right under the shipping method on OpenCart 4 and in the Delivery Method step on OpenCart 3.
- Capacity you can handle. A limit per slot or per day. Booked-out slots are shown as full, the last places as "2 left". Cancelled orders free their place again.
- Slot fees. Evening or same-day slots can carry a fee, added as an order total line and taxed like the shipping method.
- On the order everywhere. The day and time are added to the shipping method of the order, so they appear on the admin and customer order pages, the invoice and the order e-mail. Staff can move a delivery from the order page.
- Slot board. The next 14 days with bookings against capacity per slot, and a printable list of each day's deliveries.
No OCMOD, no core file edits. One licence covers OpenCart 4 and 3. Tested on OpenCart 4.1.0.4 and 3.0.5.1; other 4.0.2.x to 4.1.x and 3.0.3.8 to 3.0.5.x versions are expected to work but are not tested.
Installation
Requirements
- OpenCart 4.0.2.0 to 4.1.x, or 3.0.3.8 to 3.0.5.x
- PHP 7.4 or newer
- At least one shipping method installed (Extensions > Extensions > Shipping)
Install on OpenCart 4
- Go to Extensions > Installer and upload
kv_delivery_slots.ocmod.zip. - Press the install button next to Delivery Date & Time Slots.
- Go to Extensions > Extensions, choose Modules and install Delivery Date & Time Slots. The order total line "Delivery slot fee" is installed with it (Extensions > Extensions > Order Totals).
Install on OpenCart 3
- Go to Extensions > Installer and upload
kv_delivery_slots-oc3.ocmod.zip. - Go to Extensions > Modifications and press Refresh.
- Go to Extensions > Extensions, choose Modules and install Delivery Date & Time Slots.
First steps
- Open Sales > Delivery Slots > Calendar. Tick your shipping days and delivery days, set the order cut-off, the processing time and the transit time. Add closed days such as public holidays.
- Open Shipping methods. Every installed shipping method starts as "Estimate only". Switch a method to Delivery day or Day and time slot.
- For time slots press Add a typical day (4 slots) or add your own: weekdays, start, end, capacity and an optional fee.
- Open a product page: the delivery estimate sits above the add to cart button. Place a test order and choose a slot.
Updating
Upload the new package the same way. Slots, closed days, bookings and settings stay; tables and settings are brought up to date the next time you open the extension.
Removing
Uninstalling removes the slots, closed days, bookings, product processing times, the settings, the events and the "Delivery slot fee" total line. Orders keep the delivery day and time in their shipping method text.
Configuration
Calendar
| Setting | Default | Meaning |
|---|
| Shipping days | Mon-Fri | Days orders are packed and dispatched |
| Delivery days | Mon-Sat | Days parcels arrive; a shipping method can narrow them |
| Order cut-off | 2 PM | Orders after this time ship on the next shipping day (store time zone) |
| Processing time | 0 | Shipping days of handling before dispatch. A product can have its own value in the product form (Data tab, "Processing time (days)"); the longest value in the cart counts |
| Transit time | 1 to 3 | Delivery days on the road; 0 = same day |
| Delivery estimate on product pages | on | "Get it ..." with a live countdown to the cut-off |
| Based on | calendar | Which shipping method's transit time the product page estimate uses |
Closed days have a date, a name and what they close: everything, only shipping or only deliveries. Tick "Every year" for days such as Christmas.
The time zone is the one of your store (OpenCart 4: System > Settings > Local > Time Zone; OpenCart 3: the PHP time zone of the server).
Shipping methods
Each installed shipping method has its own mode:
| Mode | At checkout | On the order |
|---|
| Off | nothing | nothing |
| Estimate only | "Estimated delivery Thu, Nov 5 - Mon, Nov 9" | the estimate |
| Delivery day | a row of days to choose from | the day |
| Day and time slot | days, then the time slots of that day | the day and time |
| Setting | Meaning |
|---|
| Fastest / slowest transit | Overrides the calendar for this method (empty = calendar) |
| Extra processing | Days added for this method, e.g. a carrier that collects only every other day |
| Days offered | How many delivery days the picker shows (1-60) |
| Booking closes before a slot | Minutes before a slot starts when it can no longer be booked |
| Deliveries per day | Day mode capacity (0 = no limit) |
| Delivery days | Narrows the calendar's delivery days for this method |
| Required to order | Without a choice the confirm step shows a note instead of the payment button. Off: the choice is optional |
Time slots
Each slot has weekdays, a start and end time, a capacity (0 = no limit), a fee in the store currency and an on/off switch. A slot counts an order once it is placed; orders that move to a status listed under Settings > "Free the place when the order becomes" (Canceled, Denied, Failed, Expired, Voided by default) free their place again, and a deleted order frees it too.
Fees
Slot fees appear as an order total line "Delivery slot (Thu, Nov 5, 6 PM - 8 PM)" and are taxed with the tax class of the shipping method. Rename the line under Settings; change its position or switch it off under Extensions > Extensions > Order Totals > Delivery slot fee.
Usage
Slot board
The next 14 days: deliveries today, tomorrow and in the next 7 days, the slot fees charged, and booked-out slots. Each day lists its slots with bookings against capacity; full slots are marked red. Orders opens the day: every delivery with time, order, customer, phone, address, shipping method, status and fee, ready for Print packing list.
Order page
Orders with a booking show a delivery card on the admin order page: day, time, booking state and fee. Choose another day and slot and press Move delivery; the order's shipping method text follows. Staff moves are not limited by capacity.
What shoppers see
- Product page: "Get it tomorrow. Order within 5 h 12 min to ship today." When the cut-off is more than a day away: "Order by 2 PM on Mon, Nov 9."
- Checkout: the days as cards (Today / Tomorrow / weekday, date, slots left or the lowest fee), then the time slots of the chosen day with fee and places left. Full slots are crossed out. The choice is saved at once; on OpenCart 4 the order summary reloads with the fee line.
- Confirmation e-mail, order history and invoice: the shipping method reads "Flat Shipping Rate (Delivery Thu, Nov 5, 6 PM - 8 PM)".
Licence
Without a valid licence (after the 14-day trial) the storefront shows no estimate and no picker and checkout works as without the extension. The admin pages and existing bookings keep working.
FAQ
Does it work with my shipping methods?
Yes, with every installed shipping method (Flat Rate, Weight Based, Pickup From Store, carrier extensions). Rules are set per method.
Can pickup have days but no time slots?
Yes. Set the method to "Delivery day", optionally with a limit per day.
What happens when two shoppers want the last place?
Places are checked when the slot is chosen and again on the confirm step. The order that is placed first takes the place; the other shopper is asked to choose again.
Do cancelled orders free their slot?
Yes, when the order moves to one of the statuses listed in Settings (Canceled, Denied, Failed, Expired and Voided by default), or when it is deleted.
Where does the customer see the chosen time?
In the order confirmation e-mail, the order history in the account and on the invoice, as part of the shipping method.
Is the product page estimate right on cached pages?
Yes. The page carries the next order windows and the countdown picks the current one in the browser.
Can a product take longer to prepare?
Yes. Set "Processing time (days)" in the product form (Data tab). The longest value in the cart counts.
Does it use OCMOD?
No. Events only, no core file edits.
What does the licence check do?
Without a valid licence (after the 14-day trial) the estimate and the picker are hidden and checkout works as usual; the admin pages keep working.