How to Add a Delivery Date Picker to Shopify Cart Page

2026-10-18 · shipping fulfillment

A delivery date picker on the Shopify cart page lets customers choose when they want their order to arrive before they check out. That matters most for florists, bakeries, meal-kit sellers, and any store where "when it arrives" is part of the purchase decision. This guide covers two ways to add one — a theme code edit and a lightweight app — plus how to save the date to the order, style it, and test it before launch.

Why Add a Delivery Date Picker to the Shopify Cart Page

The cart page is the last point where a customer can change their mind about the whole order without re-entering shipping details. Asking for a delivery date there does three things:

A date picker is not right for every store. If you sell digital goods or long-tail inventory with unpredictable lead times, a simpler "delivery notes" field may serve you better. But for scheduled delivery, it's worth the setup.

Option 1: Add a Delivery Date Picker With a Theme Code Edit

This is the free route. You edit your theme's cart template and add a native HTML date input plus a small script that carries the value into cart attributes. Shopify's cart attributes are the mechanism that saves custom fields to an order — no app required.

Steps:

  1. In your Shopify admin, go to Online Store → Themes → Edit code.
  2. Duplicate your theme first (Actions → Duplicate) so you have a rollback point.
  3. Open sections/main-cart-items.liquid (Dawn and most OS 2.0 themes) or templates/cart.liquid (older themes).
  4. Inside the cart <form> — the one that posts to /cart — add a labelled date field:
<div class="cart-delivery-date">
  <label for="delivery-date">Preferred delivery date</label>
  <input
    type="date"
    id="delivery-date"
    name="attributes[Delivery date]"
    min="{{ 'now' | date: '%Y-%m-%d' }}"
    required
  >
</div>
  1. Save. The name="attributes[Delivery date]" attribute is what makes Shopify store the value on the order — the key becomes the attribute name shown in the admin.
  2. If your theme's cart updates via AJAX (Dawn does), confirm the field sits inside the form that submits on the cart page, not inside a separate quantity form that refreshes independently.

When to choose this option: you're comfortable editing Liquid, you want zero recurring cost, and you only need a single date field. When not to: you need blackout dates, per-product lead times, or capacity limits per day — the native input can't enforce those on its own.

Option 2: Use a Lightweight App to Add a Delivery Date Picker

Apps exist for exactly this job, and they handle the logic a code snippet can't: blocking holidays, limiting orders per day, and hiding dates that fall inside a product's lead time.

Realistic candidates to evaluate (check current pricing and reviews in the Shopify App Store before committing — plans change):

Evaluation criteria that actually matter:

Install the app, follow its setup wizard to place the widget on the cart page, and configure your date rules in the app dashboard. Most take under 20 minutes to configure. The trade-off is a monthly fee and one more dependency in your stack.

Capturing and Saving the Chosen Date on the Order

Whichever route you take, the date must end up somewhere your fulfilment team will see it. There are two storage patterns:

Method How it works Where it shows Best for
Cart attributes name="attributes[Delivery date]" on a cart form field Order detail page under "Additional details"; included in order exports Code edits, simple single-date needs
Order metafields App writes a metafield to the order after checkout Order page (if the metafield definition is visible), Flow automations, ERP sync Apps, multi-field data, automation

Cart attributes are the simplest and survive checkout automatically. Metafields are better when you want to trigger Shopify Flow automations — for example, tagging orders that need next-day dispatch. Confirm with any app vendor that the date is written to a field you can export; a picker that only displays in the app's own dashboard creates re-keying work.

Styling the Picker and Setting Available Date Rules

A native <input type="date"> looks different on every browser. To match your brand, style the wrapper and let the browser handle the calendar popup — fighting the native picker with custom JS is rarely worth it. Set a width, padding, border radius, and font to match your cart's other inputs, and add a short helper line ("We deliver Tuesday–Saturday").

Rules to set, whether in code or in an app:

Testing the Delivery Date Picker Before You Launch

Run this checklist on a duplicate theme before publishing:

Common Issues and Fixes for Cart Page Date Pickers

Conclusion

Adding a delivery date picker to your Shopify cart page is a small change with an outsized effect on scheduled-delivery stores: fewer missed deliveries, fewer support emails, and a clearer promise at the moment of purchase. Start with the free Liquid approach if you need one date field; move to an app when you need blackout dates and capacity limits. Either way, test the full order flow before you publish.

FAQ

Will the delivery date show up in Shopify's order notifications and exports? Cart attributes appear on the order's detail page and are included in order CSV exports. Whether they appear in customer emails depends on your notification templates — you may need to add the attribute to the order confirmation template manually.

Can I add a delivery date picker without editing code? Yes. Delivery-date apps install a widget through their own setup wizard and don't require theme edits, though you should still test that the widget renders correctly in your theme's cart.

Does this work if my store uses a cart drawer instead of a cart page? It can, but the drawer re-renders more aggressively and often drops custom fields. Either disable the drawer on the cart page or use an app that explicitly supports drawer carts — check that before installing.