Email & checkout

Show the date in your confirmation email

Paste one snippet into your order confirmation email and it shows the date the customer picked.

How it works

When a customer picks a date, Blackout Dates saves it on the order as an attribute: Collection Date, Delivery Date, or Dispatch Date, depending on how they're getting the order. Shopify's order confirmation email can show that attribute once you paste in a short snippet.

You'll do this in Shopify Admin → Settings → Notifications. No coding needed, and you only do it once.

Order confirmation email

Go to Settings → Notifications → Customer notifications → Order confirmation and click Edit code. Paste the snippet below into the email body. Just above the order summary works well:

liquid · paste in Order confirmation{% liquid %}
{%- comment -%}
  Order Confirmation Snippet. Added by the Blackout Dates app.
  Renders the customer's chosen pickup / delivery / dispatch date.
{%- endcomment -%}
{%- assign bd_keys = "Collection Date|Delivery Date|Dispatch Date" | split: "|" -%}
{%- assign bd_verbs = "pickup|delivery|dispatch" | split: "|" -%}
{%- assign bd_subscription = false -%}
{%- for line in line_items -%}
  {%- if line.selling_plan_allocation != blank -%}{%- assign bd_subscription = true -%}{%- endif -%}
{%- endfor -%}
{%- assign bd_created = created_at | date: "%Y-%m-%d" -%}
{%- capture bd_lines -%}
{%- for bd_key in bd_keys -%}
  {%- assign bd_date = attributes[bd_key] -%}
  {%- if bd_date != blank -%}
    {%- assign bd_verb = bd_verbs[forloop.index0] -%}
    {%- assign bd_where = "" -%}
    {%- if bd_verb == "pickup" and attributes["Location"] != blank and attributes["_Location ID"] != blank -%}
      {%- capture bd_where %} at {{ attributes["Location"] | escape }}{% endcapture -%}
    {%- endif -%}
    {%- assign bd_stale = false -%}
    {%- if bd_subscription and bd_created != blank -%}
      {%- assign bd_iso_key = "_" | append: bd_key | append: " ISO" -%}
      {%- assign bd_iso = attributes[bd_iso_key] | split: "," | first -%}
      {%- if bd_iso != blank and bd_iso < bd_created -%}{%- assign bd_stale = true -%}{%- endif -%}
    {%- endif -%}
    {%- if bd_stale -%}
      <br>Your {{ bd_verb }} date{{ bd_where }} will be on your <a href="{{ order_status_url }}">order status page</a>.
    {%- elsif bd_date contains "see order details" -%}
      {%- assign bd_prop = "_" | append: bd_key -%}
      {%- capture bd_items -%}
        {%- for line in line_items -%}
          {%- for bd_p in line.properties -%}
            {%- if bd_p.first == bd_prop and bd_p.last != blank -%}<br>{{ line.quantity }} &times; {{ line.title | escape }}: {{ bd_p.last | escape }}{%- endif -%}
          {%- endfor -%}
        {%- endfor -%}
      {%- endcapture -%}
      {%- if bd_items != blank -%}
        <br>Your {{ bd_verb }} dates{{ bd_where }}:{{ bd_items }}
      {%- else -%}
        <br>Your {{ bd_verb }} dates{{ bd_where }} are in your order details.
      {%- endif -%}
    {%- else -%}
      <br>You picked {{ bd_date | escape }} for {{ bd_verb }}{{ bd_where }}.
    {%- endif -%}
  {%- endif -%}
{%- endfor -%}
{%- endcapture -%}
{%- if bd_lines != blank -%}
<p style="margin: 16px 0; padding: 12px 16px; background: #f4f6f8; border-radius: 6px; font-size: 14px; line-height: 1.5; color: #1a1a1a;">
  {{ bd_lines | remove_first: "<br>" }}
</p>
{%- endif -%}

Hit Save, then use Preview to check it before it goes to customers. The snippet hides itself on orders without a date, so anything undated looks exactly as it does today. It's the same snippet you'll find on the app's Order Confirmation Snippet page, so copy it from either place.

On the Pro plan, once you've turned on customer rescheduling in the app (Settings → Timing & hours → Customer rescheduling), every dated order gets a secure link the customer can use to pick a new date themselves, without emailing you. Add this second snippet just below the date line to show a “Change your date” button in the same email:

liquid · paste below the date line{% liquid %}
{%- comment -%}
  Reschedule link. Added by the Blackout Dates app.
  Shows a "Change your date" button on dated orders. Remove it if you
  turn customer rescheduling off or leave the Pro plan.
{%- endcomment -%}
{%- assign bd_movable = false -%}
{%- assign bd_keys = "Collection Date|Delivery Date|Dispatch Date" | split: "|" -%}
{%- for bd_key in bd_keys -%}
  {%- assign bd_date = attributes[bd_key] -%}
  {%- unless bd_date == blank or bd_date contains "see order details" -%}{%- assign bd_movable = true -%}{%- endunless -%}
{%- endfor -%}
{%- assign bd_reschedule = attributes["Reschedule link"] -%}
{%- if bd_reschedule == blank and bd_movable -%}
  {%- capture bd_reschedule -%}{{ shop.url }}/apps/blackout-dates/reschedule?order={{ id }}&status={{ order_status_url | url_encode }}{%- endcapture -%}
{%- endif -%}
{%- if bd_reschedule != blank and bd_movable -%}
<table role="presentation" align="center" border="0" cellpadding="0" cellspacing="0" style="margin: 16px auto; border-collapse: separate;">
  <tr>
    <td align="center" bgcolor="#1a1a1a" style="border-radius: 8px;">
      <a href="{{ bd_reschedule }}" target="_blank" style="display: inline-block; padding: 12px 22px; color: #ffffff; text-decoration: none; border-radius: 8px; font-size: 14px; font-weight: 600;">Change your date</a>
    </td>
  </tr>
</table>
{%- endif -%}

Note: every dated order gets the link, but customers only see it once you paste this snippet. The button hides itself on orders without a date; if you turn customer rescheduling off or leave the Pro plan, take the snippet out too.

Thank-you and order status pages

Customers can also see the date they chose on the thank-you page right after paying, and again on their order status page. With customer rescheduling on, a “Change your date” button sits under it. Shopify doesn't show it until you add the block to each page:

  1. In Shopify admin, open Settings → Checkout and click Customize to open the checkout and accounts editor.
  2. From the page menu at the top, choose Thank you. Add the Blackout Dates. Order Date app block where you'd like it, then Save.
  3. Choose Order status from the same menu and add the block there too.

Works on every plan; only the button needs Pro. Orders without a date show nothing. Subscription renewal emails send customers to their order status page for the renewal's date, so add the block there if you sell subscriptions. The app's Order Confirmation Snippet page has a button that opens the editor for you.

On the order's page in Shopify

Each order's page in Shopify admin shows the date the customer chose in a Blackout Dates. Order Date block. On Pro, its Change date button moves the order under your closed days, cut-offs and limits, without telling the customer. If you don't see it, open any order and add it from the apps section.

Checkout delivery filtering

Plus / Pro

Blackout Dates installs a Shopify delivery customisation that shows only the delivery options matching what the customer chose with their date: pickup, local delivery, or postal. It's installed automatically the first time you open the app's Delivery page; nothing to set up in Shopify admin. If it ever drifts out of sync (say, after an app upgrade), re-opening the Delivery page clears the old one and puts a working one back.

Works on every Shopify plan. You don't need Shopify Plus for checkout filtering or date surcharges.

Customers who land on the wrong checkout tab can also see a banner pointing them to the right one, with a link back to change their choice. Edit its wording on the app's Delivery page: open What customers see at checkout and find The banner's wording. The banner needs Shopify Plus and Shopify's current checkout; the Delivery page tells you if your store is still on the old one.

How options are matched

The filter identifies each checkout option by its Shopify delivery type. It does not guess from keywords in the title:

Checkout optionShown when the customer picked
Shopify pickup optionsPickup
Shopify Local deliveryLocal delivery
App-recognised postal rates (by exact title)Postal
Any other shipping rateHidden by default

Pickup and local delivery are recognised automatically from Shopify's own delivery types, so you don't have to name them a particular way. Postal rates are matched on their exact title: out of the box the app recognises Standard Postage, Reduced Postage, Free Postage and Next-day Dispatch, plus any surcharge rates the app creates for you (see below).

A shipping rate the app doesn't recognise by name (a custom courier, say) is hidden from customers who chose pickup or local delivery. Customers who chose Postal see it if you installed the app from 23 October 2026 or your store uses Shopify's market-based shipping, and don't on other shops, unless you chose otherwise. To place a rate yourself, open the app's Delivery page and, under Your shipping rates, choose Postage, Pickup or Local delivery next to that rate, or Never show at checkout. In the same section you choose whether Postal customers see unrecognised rates.

Matching is on the exact rate title, so rename a rate in Shopify and it counts as unrecognised until you choose its method again under Your shipping rates.

Free or reduced postage above a spend threshold

Base postage, and any free- or reduced-postage-over-a-spend rule, stay in Shopify's own shipping settings, using rate price conditions. Shopify shows the right rate for the cart total, and the app's filter puts whichever rate is showing under Postal.

Example in Shopify Admin → Settings → Shipping and delivery:

Rate titlePriceMinimum order
Standard Postage£4.99None
Reduced Postage£1.99£30.00
Free Postage£0.00£60.00

These titles are ones the app recognises as postage. For any other postage rate, check Your shipping rates on the Delivery page: if unrecognised rates are hidden there, choose Postage for it.

Date-driven surcharges

To charge extra for the dates that cost you more to fulfil, which is the one thing Shopify can't do on its own, use the surcharges in the app's Delivery settings. There are two kinds:

  1. A rush / next-day surcharge that kicks in automatically when the customer picks a date within a few days of today.
  2. Peak-date surcharges for fixed windows, like the week before Christmas or Valentine's.

You give each surcharge a rate name and a price; the app creates the matching shipping rate in Shopify for you when you save, so there's no two-rate setup to wire up by hand. When the customer picks a date that falls in a surcharge window, Blackout Dates shows that surcharge rate and hides base postage, so the surcharge applies for that date with no double-charging. On any other date the surcharge rate stays hidden.

Surcharges apply to postal orders, so switch Postal on first. Carts containing a subscription always pay normal postage. Before uninstalling the app, switch surcharges off and save, or delete the surcharge rates afterwards in Settings → Shipping and delivery.

Pickup and local delivery at checkout

For Shopify's native pickup and local delivery options to appear at checkout, your cart items must be marked as physical products and either have stock at the pickup or local-delivery location or have inventory tracking turned off. If not, Shopify won't offer the option regardless of what the customer chose, and the filter has nothing to show.

The app's Delivery page explains this and tells you whether pickup is switched on for your locations in Shopify.

Troubleshooting

If checkout shows the wrong delivery options, open the app's Delivery page. The filter reinstalls when the page loads, which usually fixes it. If a red banner appears, it names the cause (a missing permission or Shopify not accepting the change) and what to do.

Need a hand?

We reply within one business day, Monday to Friday.

Email us