Merchants who deliver on scheduled days and must not overbook.
What changes
Slots are held before checkout and re-checked under a lock when the order is placed.
Capacity re-checked under a lock at order placement
30-minute sliding holds with a lifetime cap
Slots freed on cancellation or full refund
Delivery Slots for Magento 2 & Mage-OS with live capacity control, safe booking reservations, Hyvä Checkout support, REST & GraphQL APIs, postcode rules, delivery pricing and rescheduling built for real-world delivery operations.
v 1.0.4 — RELEASED 26 days ago composer require qoliber/delivery-slots
Product details
Magento 2 & Mage-OS Delivery Slots Extension
Delivery Slots for Magento 2 & Mage-OS That Never Overbook.
A Magento 2 delivery date extension should do far more than put a calendar on the checkout. qoliber Delivery Slots runs delivery capacity like inventory — reserving slots before checkout, re-validating availability under a database lock when the order is placed, and automatically returning capacity when an order is canceled or fully refunded.
The result is a delivery scheduling system designed for stores where the date and time shown to the customer must remain operationally true — even when multiple customers race for the same slot, a checkout fails halfway through, or an existing delivery is rescheduled.
The “2 left” is the line to look at: it counts confirmed orders plus every live 30-minute hold except your own. Capacity is then re-checked under a lock when the order is placed, so the slot count cannot silently drop below zero. The green pill represents the customer's active hold, prolonged while they continue shopping.
Magento delivery scheduling in the real world
Where Magento 2 Delivery Slots Usually Fail
Almost every Magento delivery date extension can display a calendar and save a delivery date on the order. The architectural differences appear when real-world events collide: two checkouts racing for the final slot, an order placement crashing midway, or a canceled order continuing to consume delivery capacity.
01
Two checkouts, one slot left
Without it: the last slot sells twice.
The booking is recorded under a per-method-and-date database lock, with capacity re-validated inside it. An over-capacity slot aborts order placement instead of silently overbooking — and the lock fails closed.
02
A crash mid-placement
Without it: ghost bookings eat real capacity.
A failure observer releases the booking unless the order actually committed, and an hourly reconciliation removes booking rows that no order accounts for — batched and split-database safe.
03
The idle tab
Without it: an abandoned browser holds a slot all day.
Holds slide — 30 minutes, prolonged on activity — but carry an absolute lifetime cap of 4× the window. Expired holds are purged by cron, while a customer's own hold never blocks their own checkout.
04
Cancelations and refunds
Without it: canceled orders still consume slots.
Canceling an order or fully refunding it frees the delivery slot immediately. Capacity goes straight back on sale, while partial refunds correctly leave the delivery booking in place.
05
Midnight, somewhere else
Without it: “today” drifts in non-UTC stores.
Availability, delivery cut-offs, change policies and reminders all resolve in the store's own timezone and scope. No availability flicker around midnight and no delivery reminder sent on the wrong day.
06
The moved delivery
Without it: a reschedule overbooks the target slot.
Customer and admin reschedules run in one transaction under the same lock, judged on net effect for same-day moves and gated by your cut-off policy. The delivery reminder automatically re-arms for the new date.
The pattern is the same everywhere: the calendar is the easy part. The real engineering is building a Magento delivery scheduling system whose slot count is still correct after concurrency, checkout failures, cancelations and rescheduling.
Magento delivery date extension comparison
qoliber vs Typical Magento Delivery Extensions
There are solid Magento delivery date and delivery scheduler extensions available. A checkout calendar, cut-off times, holiday lists and order-grid columns are now table stakes. The meaningful difference is what happens after the customer selects a date: capacity control, concurrent bookings, cancellation recovery, rescheduling and operational reliability.
qoliber Delivery Slots compared with typical Magento 2 delivery date extensions
What can go wrong
qoliber
Competing modules
Two checkouts race for the last slot
Lock at placement per method + date, capacity re-checked inside, fail-closed
Not published
Booking before checkout
30-minute sliding hold header widget; live holds count against capacity
Checkout-only
Capacity limits
Per slot, per date, per day peak-date overrides, e.g. Christmas Eve = 2
The “Competing modules” column reflects what nine competing Magento delivery extensions publish on their public feature pages, reviewed August 2026. “Not published” means it isn't advertised — not that it is absent. The qoliber column describes what the shipped code does, and every row is verifiable in the repository.
Already running another Magento delivery-date extension?
Switching doesn't reset your delivery calendar. We help you map existing schedule rules onto delivery methods and carry upcoming deliveries across, so no booked delivery is lost during migration.
Architecture & compatibility
Magento 2 Delivery Slots: Platform & Stack
Built for agencies and technical teams delivering Magento and Mage-OS projects, qoliber Delivery Slots combines native storefront integrations with API access, cache-safe frontend behaviour and operational tooling for real delivery workflows.
Platform
Magento Open Source 2.4.x and Mage-OS.
PHP
8.1 – 8.5, PHPStan level 8, zero findings.
Storefront
Luma, and Hyvä with Hyvä Checkout — Alpine.js and Magewire companions, verified end-to-end on Hyvä 1.5.
Headless
Typed REST availability endpoint, slot data on the order REST API, and GraphQL support.
In the box
Header booking widget with a 30-minute sliding hold
Inline delivery slot picker on the checkout shipping step
Per-slot capacity, per-date overrides and daily caps
Lead times, same-day cut-offs and per-weekday overrides
Weekday slot plans and a slot generator (10:00-18:00/2h)
Blackout dates + computed public holidays for 11 countries
Per-km pricing, base fee, minimum charge, free-above and slot surcharges
Postcode zones, weight, size and cart-value limits, plus product opt-out
Bookings grid as the driver's daily manifest, with CSV/Excel export
Capacity overview: booked vs available, two weeks ahead
Reschedule/cancel: customer self-service and admin delivery slot manager
Magento Delivery Slots FAQ
Questions
Can two customers book the last delivery slot at the same time?
No. The booking is recorded under a per-method-and-date database lock with capacity re-validated inside it, so the second order aborts with a clear message instead of overbooking. If the lock itself cannot be acquired, the system fails closed — a “try again in a moment”, never a double-booked van.
What happens when a customer books a slot and walks away?
The hold slides — 30 minutes by default, prolonged while they keep shopping — but has an absolute lifetime cap of four times the window. Expired holds are purged by cron every 15 minutes, so nobody can park on a slot indefinitely, while a customer's own hold never blocks their own checkout.
Does the Magento delivery scheduler work with Hyvä?
Yes, natively and at no extra charge: an Alpine.js header widget for the Hyvä theme and a Magewire delivery slot picker for Hyvä Checkout, including the required-slot step gate. Both are companions to the same booking engine, so Luma and Hyvä storefronts cannot drift apart.
Can customers change or cancel a delivery themselves?
If you allow it. Reschedule and cancel are available from My Account while the order hasn't shipped, gated by a merchant-defined cut-off such as “no changes closer than N hours to the slot”. Every move re-checks capacity under the same lock, and the reminder re-arms for the new date. Admins get the same controls on the order view.
Does it work with headless Magento storefronts?
Yes. Availability is exposed through a typed REST endpoint described in the generated Swagger schema, the booked slot travels as checkout extension attributes validated server-side, and delivery information is exposed on the order REST API and GraphQL for ERPs, PWAs and custom storefronts.
Will delivery slots slow down a cached Magento storefront?
No. The widget markup contains no session data, so pages remain fully cacheable. Reservation state hydrates client-side from a customer-data section, allowing full-page cache and the delivery booking widget to coexist by design.
Can delivery availability be restricted by postcode?
Yes. The extension includes postcode zones alongside weight, size, cart-value and product-level eligibility controls, allowing delivery methods and slot availability to reflect the operational limits of your delivery service.
What happens if the distance API is unavailable?
Distance-based pricing is optional. Without a Google key, methods price flat. With a key, a failed lookup fails closed for methods enforcing a maximum distance — the method hides rather than guessing — and degrades to flat pricing where no distance limit is configured.
Almost any delivery date extension can show a calendar. qoliber Delivery Slots runs delivery capacity like inventory: it holds a slot before checkout, re-validates availability under a database lock when the order is placed and returns capacity when an order is canceled or fully refunded.
Capacity re-checked under a lock at order placement● no overbooking
30-minute sliding holds with a lifetime cap● holds
Slots freed on cancellation or full refund● automatic
Per-slot, per-date and daily capacity limits● capacity
Postcode zones, distance pricing and slot surcharges● rules
Hyvä theme and Hyvä Checkout companions included● Hyvä
INSTALL · COMPOSER
One composer line.
Your license adds the package to your private qoliber repository. Add the repository once, then require the package like any other dependency — no ZIP files, no copying folders into app/code.
# Once per project: add your private qoliber repository# (the exact command is in your account → Composer & keys)composer require qoliber/delivery-slotsphp bin/magento setup:upgrade✓ Installed. Updates arrive with composer update.
FROM THE COMMUNITY
Customer reviews
Write a review+
Write Your Own Review
THE NEWSLETTER
One newsletter, monthly. For builders only.
Release notes, war-stories from the field, the occasional benchmark. No marketing fluff, no merchant content, no growth-hacks. Unsubscribe button works.