# Roast schedule

Chapter 8 of the Roast user guide.

Roasters roast on set days, and shoppers want to know when their bag will be roasted. Roast turns your real schedule into a next-roast date, an order cut-off countdown and freshness stamps across the store. You set it once in **Theme settings › Roast schedule**.

> **Note:** Use your real schedule. Shoppers rely on these dates, and the countdown is a real recurring deadline: when a cut-off passes it moves on to the next one, the same for every shopper. Don't use it to invent urgency.

## Settings

| Setting | Default | What it does |
| --- | --- | --- |
| Show the roast schedule | On | Turns every next-roast date and the roast countdown on or off. Roast date stamps from the `custom.roast_date` metafield still work when it's off. |
| Batch word | roast | The noun in "Next roast Thursday 23 October": roast, batch, bake. |
| Roast on Mondays … Roast on Sundays | Monday and Thursday | The days you roast. With none ticked, the schedule is off. |
| Order cut-off | 9 h (0 to 23) | The hour, in your store's time zone, after which orders go in the next batch. 9 means 9 am. |
| Posted | The day of the roast | Or **The day after the roast**. Changes "posted the same afternoon" to "posted the next day". |
| Days off | Empty | One date per line, written `YYYY-MM-DD`, such as `2026-12-25`. No roast on these days; the next roast day takes over. |
| Card stamps | Roast date or next roast | **Off** removes every stamp. **Roast date only** stamps products that have a roast date. **Roast date or next roast** also stamps roast-to-order products with the next roast. |
| Show roast dates for | 30 d (7 to 60) | How many days a "Roasted 20 Oct" stamp stays up after the roast date. |
| Stamp every product | Off | Off: only products tagged `roast-to-order` or with a roast date get a stamp. On: every product without a roast date is treated as roast-to-order. |
| Word for a past batch | Roasted | As in "Roasted 20 Oct": Made, Baked. |
| Word for the next batch | Roasting | As in "Roasting 23 Oct": Making, Baking. |

## Time zone

The schedule works in your **store's time zone**, set in Shopify admin under **Settings › General › Store defaults › Time zone**. Check it before you go live: a 9 am cut-off is 9 am there, wherever the shopper is. Daylight saving changes over the next three weeks are taken into account.

## How the next roast is worked out

The next roast is today, if today is a roast day, isn't a day off, and the cut-off hour hasn't passed. Otherwise it's the next ticked day that isn't a day off. Roast looks up to three weeks ahead; if every roast day in that time is a day off (a long holiday closure), the next-roast lines hide instead of showing a wrong date.

The dates are worked out in the shopper's browser from its own clock, and refreshed every 30 seconds. Pages can be cached, so nothing prints a date the server worked out in advance. Without script, the same places show a sentence built from your ticked days instead: "Roasted to order every Monday and Thursday."

## Where it shows

| Where | What shoppers see | Turned on by |
| --- | --- | --- |
| Announcement bar | "Next roast closes in 1d 14h 22m", counting down to the next cut-off | A **Countdown** block with **Count down to** set to **The next roast cut-off** |
| Hero | "Next roast **Thursday 23 October**. Order by 9 am and it's in that batch." | Hero › **Show the next roast** |
| Product cards | A round stamp: "Roasted 20 Oct" or "Roasting 23 Oct" | **Card stamps**, a roast date or the `roast-to-order` tag |
| Product image | A larger stamp, with the lot: "Roasted 20 Oct · Lot 0412" | The same as cards |
| Buy box | "Roasted to order. **Next roast Thursday 23 October**, posted the same afternoon. Order in the next 14 h 22 m." | A **Freshness** block on the product page |
| Subscription builder | "First bag roasted Thursday 23 October." | **Show the first roast date** |
| Cart lines | "Roasting Thursday 23 October" under a roast-to-order item | Automatic |
| Empty cart | "Order now and it goes in the next roast, Thursday 23 October." | Automatic |

Sold-out products never get a stamp.

## Roast dates and pre-order lots

A product with a `custom.roast_date` shows that date instead of the next roast:

* A date in the past, within **Show roast dates for**: "Roasted 20 Oct" on the stamp, and "Roasted Tuesday 20 October. Lot 0412." in the Freshness block.
* A date in the future, such as a pre-order lot: "Roasting 29 Oct", and "Roasting Thursday 29 October. Order now and it goes out with that roast."
* A date older than the window: no date stamp. With **Card stamps** on **Roast date or next roast**, a `roast-to-order` product falls back to the next roast.

Update the roast date when a new lot comes out of the roaster, or tag the product `roast-to-order` and let the schedule do it.

## The Freshness block

Add it to the product page's buy box (**Product** section › **Add block** › **Freshness**). Settings:

| Setting | Default | What it does |
| --- | --- | --- |
| Show the order countdown | On | Adds "Order in the next 14 h 22 m." (not used with Custom text) |
| Custom text | Empty | Replaces the roast-to-order sentence. Write `[date]` for the next roast and `[countdown]` for the time left to order: "Fresh from the roaster on [date]. Order within [countdown]." |

The block shows nothing for a product with no roast date and no `roast-to-order` tag (unless **Stamp every product** is on). In the theme editor it shows a sample sentence with a note saying what turns it on.

## Schedule off

With **Show the roast schedule** off, or no roast day ticked, every next-roast line, the roast countdown and the "Roasting" stamps hide, and the hero shows its **Stat** blocks instead of the next-roast line. "Roasted 20 Oct" stamps from roast dates keep working while **Card stamps** isn't Off. In the editor, a next-roast countdown block shows a note: "Not shown to shoppers: turn on the roast schedule and tick a roast day."
