Tom Sailors
· Refreshed
Brief · Anonymized case study

Carrier-Specific Cutoff Ship Promises

Build a system that locks carrier cutoff times (e.g., 2pm CT for UPS Ground same-day) into the storefront. The merchant runs a backend service that calculates ship and arrival dates in real time, passing those promises to the product page, cart, and checkout. As the cutoff approaches, alert customers in the cart that ordering now ships today; after cutoff, the promise updates to tomorrow. Store cutoff logic in shop metafields for easy adjustment without code redeploy.

A mid-market DTC merchant offering next-day and same-day shipping options needs to surface accurate carrier-specific cutoff times to customers at point of sale. Without clear cutoff transparency, customers place orders expecting same-day shipment only to receive next-day promises, creating fulfillment pressure and support friction.
Four pieces
Shipping

Cutoff Time Calculator

Checks the current time against carrier cutoff times in a specified timezone, then calculates which day an order will ship and when it will arrive.

Backend service + Liquid snippet
theme/snippets/shipping-cutoff.liquid liquid
{% assign cutoff_hour = 14 %}
{% assign cutoff_minute = 0 %}
{% assign cutoff_tz = 'America/Chicago' %}

{%- capture now_iso -%}
  {{ 'now' | date: '%s' }}
{%- endcapture -%}

{% assign hours_until_cutoff = cutoff_hour | minus: now_iso %}

{% if hours_until_cutoff > 0 %}
  {% assign ship_day = 'today' %}
  {% assign arrive_day = 'tomorrow' %}
{% else %}
  {% assign ship_day = 'tomorrow' %}
  {% assign arrive_day = 'in 2 days' %}
{% endif %}

<div class="shipping-promise">
  <p>UPS Ground: Ships {{ ship_day }}, arrives {{ arrive_day }}</p>
  <p class="cutoff-notice">Order by {{ cutoff_hour }}:{{ cutoff_minute | append: '0' | last: 2 }} CT to ship today.</p>
</div>
This snippet compares current time to 2pm CT; adapt cutoff_hour and cutoff_tz for other carriers or time zones.
Storefront

PDP Ship Promise

Displays the calculated ship-by date prominently on the product page so customers know exactly when they will receive the item.

Theme section + Liquid
theme/sections/product-template.liquid or theme/snippets/product-shipping-badge.liquid liquid
{% if product.available %}
  {% assign cutoff_hour = 14 %}
  {% assign now_seconds = 'now' | date: '%H' | times: 3600 %}
  {% assign cutoff_seconds = cutoff_hour | times: 3600 %}
  
  {% if now_seconds < cutoff_seconds %}
    {% assign ship_label = 'Ships today' %}
    {% assign delivery_label = 'Arrives tomorrow' %}
  {% else %}
    {% assign ship_label = 'Ships tomorrow' %}
    {% assign delivery_label = 'Arrives in 2 days' %}
  {% endif %}
  
  <div class="product-shipping-badge">
    <strong>{{ ship_label }}</strong> with UPS Ground
    <span class="delivery-window">{{ delivery_label }}</span>
  </div>
{% endif %}
Place this near the price and 'Add to cart' button for maximum visibility.
Checkout

Cart Cutoff Alert

When a customer's cart is nearing the cutoff, shows an inline warning: order now or the ship date moves to the next day.

Cart drawer / Liquid
theme/snippets/cart-cutoff-warning.liquid (render in cart drawer or cart page) liquid
{% assign cutoff_hour = 14 %}
{% assign buffer_minutes = 15 %}
{% assign now_hour = 'now' | date: '%H' | plus: 0 %}
{% assign now_minute = 'now' | date: '%M' | plus: 0 %}
{% assign cutoff_total_minutes = cutoff_hour | times: 60 %}
{% assign now_total_minutes = now_hour | times: 60 | plus: now_minute %}
{% assign minutes_remaining = cutoff_total_minutes | minus: now_total_minutes %}

{% if minutes_remaining > 0 and minutes_remaining <= buffer_minutes %}
  <div class="cart-cutoff-warning" style="background: #fff3cd; padding: 12px; border-radius: 4px; margin-bottom: 16px;">
    <strong>⏰ Order in next {{ minutes_remaining }} minutes</strong>
    <p>to ship today. Otherwise, ships tomorrow.</p>
  </div>
{% endif %}
Set buffer_minutes to when you need orders locked in (e.g., 15 min before 2pm CT to give you processing time).
Operations

Cutoff Configuration & Monitoring

Backend dashboard and metafield storage where cutoff times per carrier are set, fulfillment speed is tracked, and sales can be paused if falling behind.

Custom Shopify app + Heroku backend
Admin GraphQL explorer graphql
# Admin GraphQL – set and retrieve carrier cutoff metafields
query GetCarrierSettings {
  shop {
    metafield(namespace: "shipping_cutoffs", key: "ups_ground_cutoff_hour") {
      value
    }
  }
}

mutation SetCarrierCutoff($metafields: [MetafieldsSetInput!]!) {
  metafieldsSet(metafields: $metafields) {
    metafields {
      id
      namespace
      key
      value
    }
    userErrors {
      field
      message
    }
  }
}
Use the metafield namespace 'shipping_cutoffs' with keys like 'ups_ground_cutoff_hour' (value: '14'). Store per-carrier cutoff logic in your backend service, poll it from Liquid.

Got a similar problem?

Sketch your build in 30 seconds — voice, type, or attach a screenshot.

Sketch the build →