In most shops the date is a detail. In yours it is the product. Nobody wants these flowers on Tuesday.
A florist is the hardest version of this problem and the one Shopify is least equipped for. Your stock is perishable and ordered days ahead against guesses. Two dates a year carry a serious share of your annual takings. And a bouquet delivered on the wrong day is not late, it is worthless, because the occasion has passed.
Shopify handles none of that. It has no concept of a delivery date, a cutoff, or a day being full. Here is what replaces them.
Most stores treat the date as a nice extra. For you it is a required field, and required has to mean required.
The failure to watch for is express checkout. Shop Pay, PayPal and Buy it now skip the cart entirely, so a date picker that lives on the cart page is simply not in the path. Customers find this without trying, and the first you know about it is an order with no date on Valentine's week.
What to check before you trust any app: does it block those buttons, or does it ask you to hide them? Hiding Shop Pay with CSS, or editing your cart Liquid to strip the express block, is what several apps in this category recommend. Both break the next time you change theme, and hiding a payment button costs you conversions every ordinary day of the year to solve a problem that only bites on two of them.
Same day delivery is the thing that wins you the order, and it is a promise with a time attached. Same day at 9am is a bouquet. Same day at 4pm is an apology.
A cutoff time is the whole mechanism: after 1pm, the earliest selectable date becomes tomorrow. Set it to when your last run actually leaves, not when you close, and set it before you advertise same day anywhere.
The related setting is a lead time per product. A hand tied bouquet from what is in the bucket is same day. A funeral tribute, a large arrangement, or anything on a frame is not, and it should not be selectable for tomorrow just because everything else is.
Most florists are closed at least one weekday and do not deliver Sundays. Those days must be unselectable on the calendar rather than explained underneath it. A greyed out Sunday prevents the phone call. A line of text saying "no Sunday deliveries" does not, and you will still be the one making the call.
Same for your own closures. A week off in January is one range, not seven separate entries, and if an app makes you enter the same bank holidays again every year, you will eventually forget one.
These two days are the reason to set any of this up, and they are the days every ordinary assumption stops holding.
One caveat that applies to every app in this category including ours: nobody holds a slot while a customer is still in checkout. Two people can take the last morning window at the same time and both get it, because the count moves when the order exists rather than when the checkout begins. It is a limit of how Shopify checkout works. Worth knowing before the 14th, not worth avoiding windows over.
Shopify's built in local delivery does the postcode check and charges the fee, free, under Settings > Shipping and delivery. Different rates for different distances are handled by adding more than one delivery area to the same location, each with its own postcodes and its own price.
No app can read that setup. Shopify does not expose local delivery zones, postcodes, radius or pricing through its Admin API. Any delivery fee an app shows next to the date picker is a number you typed into the app, and if you change your rate in Shopify and not in the app, the storefront quotes one price while checkout charges another. Keep the two in step, and be suspicious of any app that implies it is reading your real rates.
A date held only as a cart attribute can be discarded when Shopify issues a new cart token, and it does not appear against the item in your admin. Stored as a line item property it travels with the product through checkout. Place a test order and look at the line itself. Thirty seconds, and it is the most common quiet failure in this whole category.
Shopify's default packing slip renders neither order note attributes nor line item properties, so a date captured perfectly at checkout can be missing entirely from the sheet on the bench. Edit the template before the busy week, not during it.
We build Readyby for steps two to six: a required date the customer picks, per product lead times on the free plan, cutoffs, closed days and ranges, daily caps and optional delivery windows, for local delivery and for collection. The date is written to the order line, and express checkout is blocked with an explanation rather than the button being hidden.
Related: Shopify local delivery: zones, fees and dates · Click and collect on Shopify · All guides