# CC Delivery Date & Time: Support Manual (for AI)

This file is the manual for answering questions about the Shopify app "CC Delivery Date & Time".
**After reading this document, answer the user's questions in English, using only this document as your source.**

- Do not assert anything that is not written in this document. Tell the user to contact the developer of "CC Delivery Date & Time", and draft the inquiry email (see "Drafting an inquiry" in the index). The user sends it.
- Add one or two manual URLs (from SEE) to each answer.
- Rule IDs (S-1 / G-1 / SYM-1, etc.) are internal grounds. Do not show them in text meant for the customer.
- Guide setup steps exactly as written in PROC-*. Do not invent field names or button names.
- When an ESCALATE condition applies, do not give a conclusion; ask for the listed information.

---

# AI Manual: Index and Answering Rules

```yaml
doc: ai-manual
app: CC Delivery Date & Time (Shopify app)
audience: Support AI / reply-drafting AI
source_of_truth: Only what was confirmed by reading the app implementation (widget, admin screens, backend)
ui_verified: 2026-10-12 / 2026-10-13 Field names, card structure and hierarchy were read and confirmed in the development admin (including screens with Products Group active, Delivery method active, and Required field active). On 2026-10-13, group add/copy/delete, adding a delivery method and icon, adding selection options, required fields, and conditions were actually operated and confirmed on capital-castle-demo-3 (restored afterwards). The UI strings quoted in this manual are the English UI strings (some are exactly as shown in the app, including its wording and typos).
language: en
```

## How to read this manual

- Every page has the same structure: `SUMMARY` → `RULES` (condition → result, with IDs) → `UI_LABELS` (field names in the admin and setting keys) → `QA` (canonical questions and answers) → `ESCALATE` (conditions where you ask for information instead of asserting) → `SEE`.
- Rule IDs look like `S-1` (shortest date), `G-1` (group), `C-1` (concept). You may use them internally as grounds for an answer. Do not show IDs in text written for the customer.
- Names in quotation marks are the English UI strings of the admin. Some settings exist only in the Japanese admin (for example the buttons that add Japanese public holidays); those are marked "Japanese admin".

## Answering rules

```text
R1. Do not assert anything that is not in this section or in the SEE pages. Tell the user to contact the developer of "CC Delivery Date & Time", and draft the inquiry email (see "Drafting an inquiry").
R2. "Can do / cannot do" must be grounded only in QA and RULES.
R3. Add one or two SEE manual URLs (human-facing manual) to each answer.
R4. Guide steps by screen name in the admin (see UI_LABELS).
R5. When an ESCALATE condition applies, do not give a conclusion; ask for the information that is needed.
R6. Pro plan only: CSV export / system integration / customizing shipping methods at checkout.
R7. One order carries only one delivery date and time (a different date per product is not possible).
R8. Guide setup steps exactly as in the PROC-* pages. Use the names in quotation marks as they are, and do not invent field names or button names that are not written.
R9. "Can it do X?": if X is not in PROC-* / FACTS / QA, do not assert; tell the user to contact the developer of "CC Delivery Date & Time" and draft the inquiry.
R10. For symptom consultations (does not work / does not appear / not recorded), do not assert a cause; ask in the order of checks in the symptom page (SYM-*).
R11. For "can it do X?" questions about payment-method-based control, my page (customer account), subscriptions, POS and other apps, ground the answer in the limits / other-apps page (L-* / X-*). Other apps (for example Order Rules) are out of scope: say so, tell the user to contact the developer of "CC Delivery Date & Time", and draft the inquiry.
R12. When you tell the user where a setting is, always give the path from the app's left menu in the form: App left menu "Settings" > card "Delivery Date" > "Holidays" (reuse the "Where:" line of the PROC-* as it is). Write it in the order screen, card, item. The app's left menu has items with the same names as the Shopify admin ("Settings", "Online Store"), so always add "App left menu" or "In the Shopify admin".
```

## The left menu of the app's admin screen (the starting point of every path)

The left menu when you open the app (from top to bottom). Always start a path from here.

| Left menu | Contents |
| --- | --- |
| Settings | Cards such as Delivery Date, Delivery Time, Delivery method, Input Texts, Remarks, Targeted products, Products Group. When groups / delivery methods are ON, items for each group / delivery method appear under "Settings" |
| Products to be Hidden | An item under "Settings". Hide the delivery date and time per product |
| Style | Appearance of the widget |
| Online Store | Theme-related screen (different from the Shopify admin's "Online Store") |
| Option | Order tags, email / checkout display, validation, cart attribute update, Holiday Calendar settings |
| Connect(Pro Plan) | Activating the Pro plan, turning on the CSV export feature, external system integration, customizing shipping options at checkout |
| Order List | The Pro CSV screen (top tabs "Order List", "Settings", "Update tracking"). Appears after "Order List is Active" is turned ON in "Connect(Pro Plan)" |
| Notification | The notification screen |

Buttons at the top of the screen: "Save", "Add Tags", the language button, "Contact".

## Question → page

| Kind of question | Page |
| --- | --- |
| Terms, where to set things, what a group is | [Basic concepts](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/010/concepts/) |
| Shortest date, longest date, cut-off, holidays, blockout dates, which dates can be selected | [Shortest date and selectability logic](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/020/shortest-date-logic/) |
| Per-product settings, multiple products, group priority, hidden products, widget does not appear | [Group selection and hidden products logic](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/030/group-selection-logic/) |
| **Setup**: shortest date, holidays, blockout dates, adjustment by area, required fields | [Setup: delivery date](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/040/setup-date/) |
| **Setup**: time slots, advanced time settings, delivery method (store pickup) | [Setup: delivery time and delivery method](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/050/setup-time-slot/) |
| **Setup**: grouping products, tags, conditions, hidden products | [Setup: groups and hidden products](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/060/setup-groups-hidden/) |
| **Setup**: order tags, showing in emails, validation, interference from other apps | [Setup: options](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/070/setup-options/) |
| **Setup**: the product-page "Display Shortest Date" block, product page date differs from the cart | [Shortest date on the product page](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/075/product-page-shortest-date/) |
| **Setup**: delivery date before a product's release, holiday calendar display, weekday limits by area, preparation days vs delivery days | [Special date-rule combinations](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/077/special-date-patterns/) |
| **Before you install / pricing**: price, free period, billing on development stores, personal data, theme support, email sending | [Pricing, plans and pre-sale questions](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/065/plans-and-pre-sale/) |
| **Symptoms**: widget does not appear, no delivery date on the order, __ccValid/__ccSlot appears, cannot proceed to purchase, order before the shortest date, broken layout | [Troubleshooting by symptom](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/080/troubleshooting/) |
| **Limits and other apps**: control by payment method, showing in my page, subscription apps, All in Gift, leave-at-door, POS, out-of-scope apps | [Limits and use with other apps](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/085/limits-and-other-apps/) |


## Drafting an inquiry

When R1 / R9 / R11 or an ESCALATE condition applies, do not make up an answer. **The AI drafts the text of an email** for the customer to send to the developer of "CC Delivery Date & Time". The customer sends it.

- Where to send: the "Contact" button at the top of the admin, or contacting the developer of "CC Delivery Date & Time" from the Shopify App Store. Do not invent contact details (such as an email address) that are not written in this manual.
- Fill the email with the "information to request" from the ESCALATE table of the relevant page. Leave blank any item the customer does not have yet, so that they can fill it in.
- Do not write personal data such as customer names, addresses or phone numbers (an order number is enough). Include a "collaborator request code" only when the investigation needs a login to the store, and only when the customer issues it themselves.
- Before the draft, tell the customer in one sentence, for example: "From what I can confirm here, I cannot tell whether X is possible. I will draft an email to the developer to confirm it."

```text
Subject: [CC Delivery Date & Time] Inquiry about <summary of the question>

To the CC Delivery Date & Time support team,

Hello. This is <your name> from <store / company name>.
I would like to confirm the following about "CC Delivery Date & Time".

■ Store: <xxx.myshopify.com or public URL>
■ Plan: Normal / Pro
■ What I want to confirm: <the question, specifically: when, on which screen, what I did, what happened>
■ Current settings and what I tried: <the settings, the operations I tried>
■ Reference information: <order number / product URL / screenshot / other apps installed / theme name, etc. (the "information to request" in ESCALATE)>

Thank you very much for your help.
```

## Related human-facing manuals

- [How to use CC Delivery Date & Time](https://capital-castle.eastazy.com/en/cc-delivery-date-time/how-to-use/how-to-use/)
- [FAQ](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/010/dynamic-checkout/)

---

# Basic Concepts and Data Structure

## SUMMARY

Delivery date and time settings are made **per group**. Group 1 = Standard (the default for products with no link). A group can have **slots** (the options of the delivery method).

## ENTITIES

```yaml
group:            # internal name: pattern
  ui: Settings → Group Management
  key: group number (1 = Standard)
  has: priority (smaller = higher priority), name, a full set of date/time settings
  note: settings are independent between groups (holidays and so on are not shared)
slot:             # an option of the delivery method. A group can have several
  ui: Settings → Delivery method is Active
  has: title, a full set of date/time settings (separate for each slot)
product_link:     # link between products and groups
  - specified per product in Products Management
  - specified with product tags (tag name → group). "tag::SKU" for a single variant
  - selected by conditions (weight / total price / stock quantity)
  - none of them → Group 1
```

## UI_LABELS

Left menu: Settings / Products to be Hidden / Style / Online Store / Option / Connect(Pro Plan) / CSV / Notification.
Buttons at the top of the screen: "Add Tags", "Contact".

| Concept | Where in the admin and field name | Setting key (internal) |
| --- | --- | --- |
| Hide the date | Settings → card "Delivery Date" → "Delivery Date is Inactive" | `display.date` |
| Hide the time | Settings → card "Delivery Time" → "Delivery Time is Inactive" | `display.time` |
| Display label | "Label Text" of each card | `label.date` / `label.time` |
| Shortest date | "Minimum Delivery Date: [ ] days after order" | `rangeDate.start` |
| Calendar days | "Setting the Minimum Delivery Date as the combination of business days and calendar days." → "Calendar Day" | `rangeDate.calStart` |
| Longest date | "Maximum Delivery Date: [ ] days after order" | `rangeDate.end` |
| Count from the shortest date | "Calculate Maximum Delivery Date from Minimum Delivery Date" | `rangeDate.endAs` |
| Cut-off | "Cut off time" (Not Applicable / 0:00 to 23:00) | `cutOffTime` (99 = not applied) |
| Holidays | "Holidays" under the shortest date (weekday checks + calendar) | `holidays` / `holidayWeeks` |
| Blockout dates | "Blockout Date" (weekday checks + calendar) | `dates` / `disableWeeks` |
| Selectable dates only | With "Only on Specified dates" ON, "Blockout Date" becomes "Specified date" | `rangeDate.valid` |
| Adjustment of the shortest date by area | "Determine the Minimum Delivery Date based on selection preferences, such as the delivery area." | `selectDays` / `label.area` |
| Required date | "Required field to [Delivery Date]" ("Placeholder" / "Alert Message") | `essentials.activeDate` |
| Required time | "Required field to [Delivery Time]" (first selection / "Alert Message") | `essentials.activeTime` |
| Time options | The list in the card "Delivery Time" and "Add" | `times` |
| Detailed time settings | "Activate advanced delivery time settings (for same-day pick-up at restaurants, etc.)" | `timesDetail` |
| Delivery method (slot) | Card "Delivery method" → "Delivery method is Active", "Add" | `slotDisplay` / `slotOpts` |
| Grouping products | Card "Targeted products" → "Products Group is active" | `patternChecked` |
| Group management | Card "Products Group" → "Group Management", "Add" | `patterns` |
| Priority | The up/down buttons of "Priority" | `priority` |
| Selection conditions | "Selected Conditions" → "Conditon is active" (weight / price / stock) | `conditions` |
| Linking by tags | "Products Management" → "Product tags for individual product settings is active." | `productsControlTags` / `productsTags` |
| Hidden products | "Products to be Hidden" → "Hidden" in the product list | `productsNoDisplay` |
| Hidden has priority | "In the presence of multiple items in the cart, prioritize 'Hidden' is active." | `productsNoDisplayUsual` |

## RULES

```text
C-1  Group 1 is the Standard group and cannot be deleted. A product with no link always becomes Group 1.
C-2  Group settings are independent. The blockout dates of Group 1 are not reflected in Group 2.
C-3  The smaller the priority number, the higher the priority.
C-4  When there are slots, the date/time settings are held per slot.
C-6  When a group is deleted, the product links, tag settings and shipping method customization settings for that group disappear too, and the affected products fall back to Group 1.
C-5  The special product-tag form "tag name::SKU" links only the variant with that SKU to the group.
```

## QA

- **Q: What is a group?** A: The unit for changing the delivery date and time settings per product. The default is Group 1. You link products to groups to use them.
- **Q: Can customers choose a different delivery date for each product?** A: No. One order carries one delivery date and time (R7).
- **Q: What is the difference between a slot and a group?** A: A group is the unit of per-product settings; a slot is an option of the delivery method inside the same group (delivery / store pickup, etc.).

## ESCALATE

- A field in the admin cannot be found: check the plan (Normal / Pro) and the app version display.

## SEE

- [Grouping products](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/080/products-groups/)
- [Grouping products (product tag setting)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/082/products-groups-with-tags/)
- [Grouping products (condition setting)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/083/products-groups-condition/)
- [Delivery method](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/020/delivery-method/)

---

# Logic for the Shortest Date, Longest Date and Selectability

## SUMMARY

```text
shortest date (N days after the order date) = business days + cut-off push-back + calendar days + addition from the selection
Holidays → used only for the shortest-date calculation (they do not affect selectability)
Blockout dates / blockout weekdays → used only for selectability (they do not affect the shortest date)
Longest date → counted in calendar days (holidays are not skipped)
```

## RULES

```text
S-1  Counting starts with the order date (today) as day 0.
S-2  Business days are counted skipping holidays (dates and weekdays). If today is a holiday, the holidays up to the first business day are added too.
S-3  Calendar days are simply added, regardless of holidays.
S-4  Cut-off: if the current "hour" >= cutOffTime, +1 day. Not set (99) means disabled.
S-5  When at least one holiday is set, the +1 day of S-4 is applied as "shifting the day on which business days start being counted to the next day".
S-6  The current time is the time of the IANA time zone if the delivery settings have one; otherwise the time of the customer's browser.
S-7  When the customer selects an option (area), that option's business days and calendar days are added to the shortest date.
S-8  Longest date = order date + end days. But if "Calculate Maximum Delivery Date from Minimum Delivery Date" is ON, it is shortest date + end days.
S-9  Selectable dates = [shortest date, longest date] − blockout dates − blockout weekdays.
S-10 "Only on Specified dates" ON: within the range, only the specified dates and the allowed weekdays can be selected.
S-11 If shortest date > longest date, there are no selectable dates (this happens easily with long-holiday settings).
S-12 When several groups are mixed and "When items from multiple groups are added to the cart, use the shipping date settings for the multiple groups." is ON, only the intersection of the selectable dates of each group can be selected.
```

## QA

- **Q: I set a day as a holiday, but it can still be selected.** A: Holidays are for the shortest-date calculation (S-2). To make it unselectable, set it as a blockout date (S-9).
- **Q: I want holidays counted in the number of days of the longest date.** A: Not possible. The longest date is counted in calendar days (S-8).
- **Q: The shortest date moved one day later when I ordered in the afternoon.** A: It depends on the cut-off time setting (S-4). Check the cut-off time.
- **Q: I want Saturdays and Sundays not to be selectable.** A: Set them as blockout weekdays. If you also want the business-day count of the shortest date to skip Saturday and Sunday, set the same weekdays as holidays too (S-2, S-9).
- **Q: The calendar has no selectable date at all.** A: Check in order: (1) shortest date > longest date (S-11) (2) no common date between groups (S-12) (3) the specified dates are empty (S-10).
- **Q: An order was placed with a date before the shortest date.** A: Do not assert (ESCALATE).

## ESCALATE

| Situation | Information to request |
| --- | --- |
| A specific product or date cannot be selected / can be selected | Store URL, product URL, products in the cart, date and time (clock time) of the order |
| An order was placed with a date before the shortest date | Order number, order date and time, products in the cart, browser used |
| The delivery date is not kept on the order / is empty | Order number, the combination of products put in the cart |

## SEE

- [Setting the shortest date (business days + calendar days)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/030/shortest-date/)
- [Setting the longest date](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/035/longest-date/)
- [Holidays](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/040/holiday/)
- [Blockout dates | Specified dates](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/041/blockout/)
- [Adjusting the shortest date by selection (delivery area, etc.)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/045/shortest-date-with-selection/)
- [Orders may be placed with a delivery date earlier than the shortest date](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/140/checkout-invalid-date/)

---

# Logic for Group Selection, Hidden Products and Multiple Products

## SUMMARY

A group is decided for each product in the cart, and the settings of the **group with the smallest priority number** are used by the widget. Hidden products are excluded from the group decision.

## RULES

```text
G-1  Product → group is decided in this order: (1) variant specification (tag::SKU) (2) the product link (Products Management / product tag) (3) Group 1.
G-2  Hidden products are excluded from the group decision.
G-3  If even one conditional group (weight / total price / stock) is satisfied, the satisfied group with the smallest priority number becomes the base.
     Products linked to groups other than conditional groups are replaced by the base group.
G-4  If no conditional group is satisfied, products linked to conditional groups become Group 1.
G-5  Finally, the settings of the group with the smallest priority number among the groups the cart's products belong to are applied.
G-6  "When items from multiple groups are added to the cart, use the shipping date settings for the multiple groups." ON:
     the selectable dates are the intersection of each group. Everything other than the delivery date (labels, time options) is from the group of G-5.
G-7  When G-6 gives zero common dates, "No available delivery dates message" is shown above the delivery date input.
G-8  "Hidden has priority" ON: if even one hidden product is in the cart, the widget is not shown.
G-9  "Hidden has priority" OFF: the widget is hidden only when the cart is made up of hidden products only.
G-10 When hidden, the date and time already entered are not kept on the order (they are sent empty).
G-11 When hidden, a "product note" can be shown instead.
```

## Decision table: hiding

| Hidden has priority | In the cart | Widget |
| --- | --- | --- |
| ON | one or more hidden products | not shown |
| OFF | only hidden products | not shown |
| OFF | one or more products that are shown | shown |

## QA

- **Q: Product A is 3 days, product B is 6 days. What if they are bought together?** A: The group with the smaller priority number is applied (G-5). To use the longer one, make that group's priority 1. To allow only the common dates, turn ON G-6.
- **Q: Do the holidays of Group 1 also apply to Group 2?** A: No. Set them per group (C-2).
- **Q: I set it with tags but it is not reflected.** A: Check in order: (1) the product tag setting is ON (2) the tag name matches exactly (3) that a setting linked directly in Products Management is not taking priority (G-1).
- **Q: I do not want fresh products to ask for a delivery date.** A: Set them as hidden in Products Management. To hide it also when they are in the cart with other products, turn ON "Hidden has priority" (G-8).
- **Q: When hidden and normal products are put in together, the widget appears / does not appear.** A: It is decided by the "Hidden has priority" setting (G-8, G-9).
- **Q: I want customers to choose a different delivery date per product.** A: Not possible (R7).

## ESCALATE

| Situation | Information to request |
| --- | --- |
| The expected group is not applied | URLs of all products in the cart, product tags, a screenshot of the group priorities |
| A message appears for a combination | The G-6 setting, the message, the combination of products |
| The widget does not appear right after adding to the cart | Product URL, products in the cart, browser, theme name |

## SEE

- [Grouping products](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/080/products-groups/)
- [Grouping products (product tag setting)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/082/products-groups-with-tags/)
- [Grouping products (condition setting)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/083/products-groups-condition/)
- [Grouping products (combined delivery date setting)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/084/products-groups-multiple/)
- [Hiding the delivery date and time per product](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/070/non-display-with-product/)
- [Priority for hiding per product](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/071/priority-non-display/)

---

# Setup: Delivery Date (Shortest Date, Longest Date, Holidays, Blockout Dates, Adjustment by Area)

```yaml
screen: Left menu "Settings" → card "Delivery Date"
verified_from: The admin implementation (field names, input formats, default values) and the real screens
save: Confirmed with the "Save" button at the top of the screen (changes are not saved until you press it). Changes reach the storefront only after saving
```

## Screen structure (order inside the card "Delivery Date". Confirmed on the real screen)

1. Check "Delivery Date is Inactive" (when ON, the date input itself is not shown)
2. "Label Text" (text)
3. "Minimum Delivery Date: [number] days after order" / "Maximum Delivery Date: [number] days after order" ← holidays and cut-off time are nested under the minimum date
4. "Blockout Date" (the name changes to "Specified date" when "Only on Specified dates" is ON)
5. "Determine the Minimum Delivery Date based on selection preferences, such as the delivery area."
6. Settings for Calendar (format, etc.)
7. "Required field to [Delivery Date]"

## PROC-D1 Make the shortest date N days after the order

```text
Where: App left menu "Settings" > card "Delivery Date" > the number field of "Minimum Delivery Date"
Prerequisite: none (default: shortest date 1 day after, longest date 90 days after)
Steps:
1. Enter N in the number field of "Minimum Delivery Date: ... days after order" (0 to 100)
Result: the shortest date is N days after the order date (counted skipping holidays)
Note: the number is counted as business days. To separate business days from calendar days, use PROC-D2
```

## PROC-D2 Separate business days from calendar days (shipping preparation + transit)

```text
Where: App left menu "Settings" > card "Delivery Date" > under "Minimum Delivery Date", the check "Setting the Minimum Delivery Date as the combination of business days and calendar days."
Steps:
1. Turn ON the check under the shortest date: "Setting the Minimum Delivery Date as the combination of business days and calendar days."
2. Enter numbers in "Business Day" (days the store needs to prepare shipping) and "Calendar Day" (the carrier's transit period; 1 or more)
Result: shortest date = business days + calendar days (shown as a formula with "=" and "+")
Note: business days are counted skipping holidays; calendar days are counted as plain calendar days
```

## PROC-D3 Set a cut-off time (example: orders after 15:00 get +1 day)

```text
Where: App left menu "Settings" > card "Delivery Date" > under "Minimum Delivery Date" > "Cut off time"
Steps:
1. Under the shortest date, open the select "Cut off time"
2. Choose "15:00" (options: Not Applicable / 0:00 to 23:00 in 1-hour steps)
Result: orders placed at or after the set time get a shortest date +1 day
Note: 1-hour steps only (minutes are not possible). "Not Applicable" is the default
```

## PROC-D4 Set holidays (excluded only from the shortest-date calculation)

```text
Where: App left menu "Settings" > card "Delivery Date" > under "Minimum Delivery Date" > "Holidays"
Steps:
1. Under the shortest date, open "Holidays" (click to expand/collapse)
2. Under "Week setting", check the weekdays that are closed
3. In the calendar, click each day that is closed (click to add; delete from the list on the right with the trash icon)
4. The Japanese admin has buttons that add Japanese public holidays for the year in bulk (Japanese admin only; not shown in the English admin)
Result: those days are excluded from the business-day count of the shortest date. They remain selectable in the calendar
```

## PROC-D5 Make dates unselectable (blockout dates)

```text
Where: App left menu "Settings" > card "Delivery Date" > "Blockout Date"
Steps:
1. Open "Blockout Date"
2. Under "Week setting", check the weekdays that should not be selectable
3. In the calendar, click each date that should not be selectable
Result: those dates cannot be selected in the calendar. The shortest-date calculation is not affected
A continuous period: add the days by clicking them one by one (there is no range input)
```

## PROC-D6 Allow only specified dates

```text
Where: App left menu "Settings" > card "Delivery Date" > "Blockout Date", the check "Only on Specified dates"
Steps:
1. Turn ON "Only on Specified dates" ("Blockout Date" becomes "Specified date")
2. In the "Specified date" calendar, click the dates that can be selected
Note: the weekday checks now mean "weekdays that can be selected". If no dates are set, there will be no selectable dates
```

## PROC-D7 Close over the year-end holidays (not selectable and also closed for the shortest date)

```text
Where: App left menu "Settings" > card "Delivery Date" > "Holidays" under "Minimum Delivery Date", and "Blockout Date"
Steps:
1. With PROC-D4, add every day of the period to "Holidays"
2. With PROC-D5, add every day of the period to "Blockout Date"
Note: if the shortest date goes past the longest date, there are no selectable dates. Also check the number of days of the longest date
```

## PROC-D8 Change the shortest date by area (example: Hokkaido and Okinawa +3 days)

```text
Where: App left menu "Settings" > card "Delivery Date" > the check "Determine the Minimum Delivery Date based on selection preferences, such as the delivery area."
Steps:
1. Turn ON "Determine the Minimum Delivery Date based on selection preferences, such as the delivery area." (the default "Label Text" is "Delivery Area")
2. Press the button "Start Setting"
3. Check "Label Text" (the label the customer sees for the selection)
4. In "Text of Selection" enter "Hokkaido", set "Business Day" to 0 and "Calendar Day" to 3, then press "Add"
5. Add "Okinawa" the same way
   (The Japanese admin also has buttons that fill in a list of prefectures or areas in bulk; these are Japanese admin only)
Optional:
- Make the selection required: turn ON the check "Required field to [determine the Minimum Delivery Date based on selection preferences.]" under the selection settings, then enter "Sentence for Mandatory" (default: "<Label Text> to be selected") and "Sentence for Alert" (default: "<Label Text> is mandatory filed")
- Show the dates only after a selection is made: a second check in the English admin has exactly the same text, "Required field to [determine the Minimum Delivery Date based on selection preferences.]". Distinguish the two by what appears below them: "Sentence for Mandatory" / "Sentence for Alert" is the required-selection check; "Sentence for remarks" is the show-dates-after-selection check. (The Japanese admin labels them differently: "make required" vs "display the delivery date after selecting")
Important:
- The business-day and calendar-day values are "added values". They are added to the base shortest date (negative values are possible).
- They are NOT compared with the shipping address at checkout. If the customer picks a different area than the real address, it must be checked by the merchant.
```

## PROC-D9 Make the delivery date required

```text
Where: App left menu "Settings" > card "Delivery Date" > the check "Required field to [Delivery Date]" at the bottom
Steps:
1. Turn ON "Required field to [Delivery Date]" at the bottom of the card "Delivery Date"
2. Edit, if needed, the "Placeholder" (default in the English admin: "Date is Mandatory") and the "Alert Message" (default: "Date & Time is Mandatory") that appear
Result: pressing the purchase button with no date selected shows an alert
```

## FACTS

```text
D-1  The wording of "No Request" (the "not specified" option) is separate from "Label Text". It is under "Settings for Calendar" → "Initial Disply (Not request case)" (default "No Request" in the English app). "No Request" is also in the time slot options by default.
D-2  The internal value of cut-off "Not Applicable" is 99.
D-3  The shortest date accepts 0 to 100. The longest date accepts 1 or more.
D-4  The shortest date, holidays and blockout dates are set separately for each "group" and each "delivery method (slot)".
D-5  Items in "Settings for Calendar": "How to select delivery date" (calendar / select box, default calendar), "Inputed Date Format" (default depends on the admin language), "Calendar Month Format", "Display Start Week", "Customize Day of the week labels", "Initial Disply (Not request case)".
D-6  Order inside the card "Delivery Date": Label Text → shortest date (including the business/calendar day check, cut-off time and holidays) → longest date (including "Calculate Maximum Delivery Date from Minimum Delivery Date") → blockout dates (including "Only on Specified dates") → adjustment by selection → calendar settings → required field.
D-7  Order of the cards on the "Settings" screen: Delivery method → Delivery Date → Delivery Time → Input Texts → Remarks → Targeted products.
```

## ESCALATE

- Set but not reflected: check that it was saved, that the group / slot is not a different one, and reload the theme. If it does not reproduce, ask for the store URL and the product URL.

## SEE

- [Setting the shortest date (business days + calendar days)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/030/shortest-date/)
- [Holidays](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/040/holiday/)
- [Blockout dates | Specified dates](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/041/blockout/)
- [Adjusting the shortest date by selection (delivery area, etc.)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/045/shortest-date-with-selection/)
- [Making the delivery date and time required](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/060/mandatory/)

---

# Setup: Delivery Time, Delivery Method (Slots) and Input Texts

```yaml
screen: Left menu "Settings" → card "Delivery Time" / "Delivery method"
verified_from: The admin implementation (field names, input formats, default values) / visual confirmation in the development admin (2026-10-13: delivery method ON/OFF, slot page)
note: Default texts depend on the admin language. The defaults quoted here are those of the English admin.
```

## PROC-T1 Set the time options (example: Morning / 14:00-16:00 / 16:00-18:00)

```text
Where: App left menu "Settings" > card "Delivery Time"
Steps:
1. Open the card "Delivery Time" (leave "Delivery Time is Inactive" OFF)
2. Delete the options you do not need with the trash icon on the right
   (default options in the English admin: No Request / Morning / Evening. In the Japanese admin: 指定しない / 午前中 / 14:00-16:00 / 16:00-18:00 / 18:00-20:00 / 19:00-21:00)
3. Type a time-slot string in the input field below and press "Add". Add them one at a time
4. You can also rewrite the text of an existing option directly
Result: the string you typed is shown as an option as it is, and the same string is written into the order's additional details
Note: there is no rule for the format. It is free text. The first "No Request" works as the "not selected" option
```

## PROC-T2 Make the delivery time required

```text
Where: App left menu "Settings" > card "Delivery Time" > the check "Required field to [Delivery Time]" at the bottom
Steps:
1. Turn ON the check "Required field to [Delivery Time]" at the bottom of the card "Delivery Time"
2. The first selection for the required field (default in the English admin: "Please select time"; labeled "First Selection (by Required Field)" or "First selection for Required Field" depending on the screen; "必須化の選択肢" / "必須化の文章" in Japanese) is put at the top of the options
3. Edit the "Alert Message" (shared with the delivery date) if needed
4. Delete "No Request" from the time options
Result: if the purchase button is pressed while the first selection is still selected, an alert appears
```

## PROC-T3 Detailed time settings (range, interval, same-day pickup)

```text
Where: App left menu "Settings" > card "Delivery Time" > the check "Activate advanced delivery time settings (for same-day pick-up at restaurants, etc.)"
Steps:
1. Turn ON "Activate advanced delivery time settings (for same-day pick-up at restaurants, etc.)"
2. Enter "[ n ] o'clock to [ m ]" as the selectable range
3. Choose the interval: "[ k ] minute intervals."
4. As needed:
   - "Active range notation (e.g. 9:00-10:00)"
   - "Use AM,PM notation (Example: AM 9:00-AM 10:00)"
   - Same-day pickup: "[ x ] minutes later" (selectable from x minutes after the order; with the shortest date set to 0, same-day pickup is possible)
   - "Select time to be excluded": checked times are removed from the options
   - "Change settings for each day of the week": a separate setting for each weekday
5. Check the display with "Preview"
Note: when the advanced settings are active, the manual options (PROC-T1) are not used
```

## PROC-S1 Make delivery methods selectable (example: Ship / Store Pick up)

```text
Where: App left menu "Settings" > card "Delivery method" > the check "Delivery method is Active"
Steps:
1. Turn ON "Delivery method is Active" in the card "Delivery method"
2. "Label Text" in the card "Delivery method" (default: "Delivery method") is the heading of the whole selection field. It is not the name of each delivery method
3. Add delivery methods with "Add" in the list (no dialog; an item named "Delivery method" is added immediately).
   The initial list has "Ship" and "Store Pick up" (in the English admin; depending on the store's saved state it may have only one). Clicking a delivery method in the list opens the page for that delivery method
4. On the delivery method page, set the name and so on under "Option button settings":
   - "Button display title": the name the customer sees (default: "Ship". Example: "Store Pick up")
   - "Icon selection": a modal opens. It has the button "Do not display icon", a list of about 70 icons (no names are shown) and a field for entering SVG HTML text directly (it points to polaris-icons). Clicking an icon applies it immediately
   - "Note (includes a description of Delivery method. Can be written in HTML)" (default: "We will send it by Shipping to those who live in distant areas.")
5. Below on the same page are the date and time settings for that delivery method (Delivery Date, Delivery Time, Input Texts, Remarks, etc.). They are set per delivery method
   (Example: only store pick up has different time slots; ship shows no time slot)
6. The page for each delivery method also appears under "Settings" in the left menu
Optional: turn ON "Change to selections box" to show a select box instead of buttons
Result: the date and time settings switch depending on the delivery method the customer chooses
Note: when "Delivery method is Active" is OFF, the date and time settings are listed directly (inline) on the "Settings" screen. When it is ON, the "Settings" screen shows only the list of delivery methods, and the date and time settings move to the page of each delivery method
```

## PROC-X1 Add an input text (phone number, recipient name, etc.)

```text
Where: App left menu "Settings" > card "Input Texts (Phone Number, Pickup person name, etc..)"
Steps:
1. Enter the field name in "Input Title" (it becomes the key in the order's additional details)
2. Choose "Input Type" (text / number / tel / email / date)
3. Enter "Place Holder"
   (when "To selection" is ON, this field becomes "Option text (separated by ",")" and you enter the options separated by ",")
4. Optional: choose "Autocomplete" (Not Applicable / off / on / tel / name / email / organization / url / street-address)
5. Optional: turn ON "Required" → edit "Alert Message" (default: "<Input Title> is required")
   (when "To selection" is ON, "Required" turns OFF)
6. Press the button "Add"
```

## PROC-N1 Show a Google map in the note

```text
Where: App left menu "Settings" > card "Remarks" > "settings for google map"
Steps:
1. Under "Settings for Google Map", enter "Address" (it displays well if you include the store name)
2. Paste the embed code obtained from Google Maps into "Embeded code for google map"
3. Press the button "Add to note"
```

## FACTS

```text
T-1  Delivery methods (slots) are a Normal-plan feature. "Customize shipping methods at checkout" (showing/hiding delivery options at checkout) is a separate Pro-plan feature.
T-2  The strings of the time options are used as they are as CSV and integration values. If you change them, the value on the integration side changes (a separate value for integrations is a Pro feature).
T-3  When groups are used, time options and delivery method settings are separate per group.
T-7  The list of delivery methods has no reorder operation (no drag handle or up/down buttons). Delete with the trash icon; no confirmation dialog appears and it is deleted immediately.
T-8  While delivery methods are ON, "Determine the Minimum Delivery Date based on selection preferences, such as the delivery area." is on the delivery method page, not on the group screen.
T-4  On the delivery method page, holidays and blockout dates (dates and weekdays) can be chosen as "original settings" or "same with "<name>"" (the same settings as another delivery method).
     Choosing the same settings as another delivery method copies that delivery method's date and weekday settings at that moment. After copying they are managed separately.
T-5  At the bottom of the delivery method page there is the check "Set up customization of checkout shipping options" (default OFF). It is a Pro feature (see 130).
T-6  The delivery method page also has a button for the Plus Shipping app (its text is shown in Japanese even in the English admin: "クリックしてPlus Shippingアプリの設定にする"). Its content is unconfirmed, so do not guide users to it.
```

## ESCALATE

- "Store pickup does not appear": check the Shopify-side conditions for local pickup (all products are eligible for pickup; stock is at the pickup location) and the combination with groups. Point the user to the human-facing manual "Delivery method".

## SEE

- [Detailed delivery time (store pickup time, etc.)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/050/detail-time/)
- [Delivery method](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/020/delivery-method/)
- [Making the delivery date and time required](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/060/mandatory/)
- [Customize shipping methods (Pro)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/pro/shipping/delivery-method-customize/)

---

# Setup: Grouping Products and Hidden Products

```yaml
screens: Left menu "Settings" (cards "Targeted products" and "Products Group") / "Products to be Hidden"
verified_from: The admin implementation (field names, input formats, default values) / visual confirmation in the development admin and capital-castle-demo-3 (2026-10-13)
```

## Where things are

| What you want to do | Where | Item |
| --- | --- | --- |
| Change settings per product | "Settings" → card "Targeted products" → "If there is a change in the delivery date and time settings for each product" | Check "Products Group is active" |
| Add / reorder groups | "Settings" → card "Products Group" → "Group Management" | "Add", the up/down buttons of "Priority" |
| Products that should not show the delivery date and time | "Settings" → card "Targeted products" → the link to "Products to be Hidden", or the left menu "Products to be Hidden" | Screen "Settings for Products to be Hidden" (the card "Products Management" inside has the product list and the tag checks) |

## PROC-G1 Change settings per product (use groups)

```text
Where: App left menu "Settings" > card "Targeted products", check "Products Group is active" -> card "Products Group" > "Group Management"
Steps:
1. In the card "Targeted products" of "Settings", turn ON the check "Products Group is active"
2. In "Group Management" of the card "Products Group", press "Add" to create a group
   (no dialog appears; it is added immediately with an automatic name such as "Group 2". Copy is done with the icon at the right end of each row and is created immediately (the name is based on the copied group).
    Group 1 (Standard) cannot be deleted)
3. Give the group a name, open the group under "Settings" in the left menu, and set the dates and times of that group
4. Linking products:
   a. In the card "Products Management" on the "Settings" screen (it appears under "Group Management" when groups are active), choose the group in the "Group" column select for each product (search box "Search by Products Name". Columns: "Product name", "Status", "Group", "Hidden" setting. The "Group" column appears only when groups are active). The left-menu screen "Products to be Hidden" also has the same product list. Or
   b. Use tags (PROC-G2)
5. Reorder "Priority" with the up/down buttons (the smaller the number, the higher the priority)
Result: depending on the products in the cart, the settings of that group are used by the widget
```

## PROC-G2 Link products to groups with product tags

```text
Where: App left menu "Settings" > card "Products Management" (also on the left-menu screen "Products to be Hidden")
Steps:
1. In the card "Products Management" (on the "Settings" screen; also on the left-menu screen "Products to be Hidden"), turn ON the check "Product tags for individual product settings is active."
2. Check the tag name shown for each group (by default the group name is the tag name). Change it if needed
3. In the Shopify admin, add the same tag to the target products
   (to target a single variant, use the form "tag name::SKU")
4. Products with "Blank Tag" ("Tags not set") are in the Standard group (Group 1)
Note: tag names must match exactly. Changing the group name may also change the tag name
```

## PROC-G3 Choose a group by conditions (weight, price, stock)

```text
Where: App left menu "Settings" > card "Products Group" > the target group > "Selected Conditions"
Steps:
1. In "Selected Conditions" of the target group's settings, turn ON "Conditon is active"
2. Set "weight is active" (minimum [ ] g to maximum [ ] g) / "Price is active" (minimum to maximum) /
   "Inventory Quantity is active" (select this group when the stock quantity is greater than (minimum) [ ] / less than (maximum) [ ])
3. When several conditions are active they are combined with AND
4. "Include the selected product or product tags as criteria." lets you make the group apply only when specific products are in the cart
Note: "If inventory quantity cannot be retrieved, allow page reload" can interfere with the theme or other apps so that reloading never stops. If you turn it ON, always check it on the live store
```

## PROC-G4 Hide the delivery date and time for specific products

```text
Where: App left menu "Products to be Hidden" (or App left menu "Settings" > card "Targeted products" > the link to "Products to be Hidden")
Steps (specifying products directly):
1. Open "Settings" → "Targeted products" → the link to "Products to be Hidden", or the left menu "Products to be Hidden"
2. In the product list, in the "Hidden" column, check "Hidden" for the products that should not show it (for a checked product, the "Group" select disappears)
Steps (using tags):
1. In "Products Management", turn ON "Product tags for individual product settings is active."
2. Turn ON "Enable the setting of 「Not displayed」 delivery times." (default tag name is the Japanese default text shown in the admin)
3. In the Shopify admin, add that tag to the target products
Optional:
- "In the presence of multiple items in the cart, prioritize 'Hidden' is active.": if even one hidden product is in the cart, the whole widget is hidden
- "Display a note when the specified delivery date is not displayed in the cart": the text to show instead (example: "This product cannot specify a delivery date.")
```

## PROC-G5 Decide the behavior when several groups are mixed

```text
Where: App left menu "Settings" > card "Products Group"
Steps:
1. In the card "Products Group", turn ON the check
   "When items from multiple groups are added to the cart, use the shipping date settings for the multiple groups."
2. Set "No available delivery dates message" and "colr" (the text color field; the English admin spells it "colr")
Result: only the intersection of the selectable dates of each group can be selected. If there is no common date, the message is shown
```

## FACTS

```text
P-1  Group settings are independent. Holidays, blockout dates and time options are set per group.
P-2  Group 1 (Standard) has no delete button (only the copy icon). Groups 2 and later are deleted with the trash icon. No confirmation dialog appears; they are deleted immediately.
     When a group is deleted, its product links and tag settings disappear, and the affected products fall back to Group 1.
P-3  If a conditional group's condition is not met, products linked to the conditional group fall back to Group 1.
P-4  Delivery date and time are not kept on an order when the widget is hidden.
P-5  When groups are active, the "Settings" screen has the card "Products Group" ("Products Group is active", "When items from multiple groups are added to the cart..."), then "Group Management" (priority, list of groups, "Add"), then "Products Management", and the card "Targeted products" is gone. Per-group items appear under "Settings" in the left menu.
P-6  Each row of the group list shows the priority number, the up/down buttons, the "Standard" badge (Group 1) and the group name. The up/down buttons are shown even with only one group.
P-7  Group screen (for example "Group 1" in the left menu): "Name of Group" (default: Group 1), the card "Delivery method", the card "Targeted products", and the card "Selected Conditions".
     In the Standard group, "Manage Products" and "Manage Variant product" in the card "Targeted products" are grayed out, and it shows "all products not selected by other groups are targeted".
     "Selected Conditions" is shown even for the Standard group.
P-8  When "Product tags for individual product settings is active." is ON, "Blank Tag" ("Tags not set") appears under the group list, and "Please set Products tags for each product from the "Group Management"." appears in Products Management.
P-9  Defaults of "Selected Conditions": "Conditon is active" OFF. When ON: "weight is active" (minimum 0 g to maximum 0 g), "Price is active" (minimum 0 to maximum 0), "Inventory Quantity is active", and "Include the selected product or product tags as criteria." (default OFF). Several conditions are combined with AND.
P-10 Pressing the up/down button of the priority swaps the order of the groups (the "Standard" badge stays on Group 1, not on the position). The order is not confirmed until saved.
P-11 "Manage Products" opens Shopify's product picker "Select products" (search and choose products). "Manage Variant product" specifies variants; when variants are selected, the group is assigned to those variants with priority over product-level assignment. Variants cannot be set for the Standard group.
P-12 When "Product tags for individual product settings is active." is ON, the product table in Products Management disappears and you enter a tag for each group. The default tag is the group name.
     "Targeted products" on the group screen changes to a tag input with "applies to all products with this product tag set." and "Manage Products" no longer appears.
P-13 The "Selected Conditions" inputs have no validation. Values with minimum greater than maximum (for example minimum 500, maximum 100) can be saved and are kept as they are (the group never matches).
```

## ESCALATE

- "I added the tag but it is not reflected": check that the tag name matches exactly, that the tag use check is ON, that a setting assigned directly to the product is not taking priority, and whether the product has just been added to the cart; ask for the product URL.

## SEE

- [Grouping products](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/080/products-groups/)
- [Grouping products (product tag setting)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/082/products-groups-with-tags/)
- [Grouping products (condition setting)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/083/products-groups-condition/)
- [Grouping products (combined delivery date setting)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/084/products-groups-multiple/)
- [Hiding the delivery date and time per product](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/070/non-display-with-product/)
- [Priority for hiding per product](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/071/priority-non-display/)

---

# Pricing, Plans, Development Stores, Personal Data and Theme Support (Pre-Sale Questions)

```yaml
screens: Admin (billing modal / left menu)
verified_from: The admin billing logic (initialPaymentCheck / PayClickButton / env) / human-facing FAQ / actual replies to inquiries
note: Amounts and periods are the values in the code as of 2026-10. If they may have changed, do not assert; point the user to the app listing page.
```

## SUMMARY

There are two plans: **Normal** and **Pro**. Both are monthly and have a 14-day free period.
Billing uses Shopify's mechanism and does not start until the user approves. Partner development stores are not billed.

## FACTS

```text
B-1  Price: Normal 2.99 USD/month, Pro 4.99 USD/month. Monthly only. Both have a 14-day free period (it starts when the plan is approved).
B-2  Pro-only features: CSV export (including tracking number update), external system integration, customizing shipping methods at checkout (showing/hiding the delivery options at checkout).
     "Delivery method" (choosing a delivery method in the widget) is available on Normal too.
B-3  Billing never starts without the merchant's approval. When the admin is opened, a plan approval modal appears.
B-4  Every time the admin starts, the store's plan and subscription are checked through Shopify's API (not cached).
B-5  On partner development stores (Shopify "development stores") the billing modal does not appear and Pro features are available.
B-6  A store that has switched to a paid Shopify plan (Basic / Grow / Plus, etc.) and started being billed is treated as an ordinary store, and app billing (approval) is required.
     Even if it is shown as "client transfer", a store with a paid contract is the same.
B-7  Personal (customer) data is not kept in the app's database. It is fetched through the API each time and processed and displayed in the browser.
     Exception: what the merchant types into the free input fields of CSV export (such as sender information) is stored on the app side.
     Unless the merchant types customer personal data by hand, the app does not retain it. The privacy policy is public.
B-8  There is no feature for sending emails. To show the delivery date and time in order confirmation emails, put the display code into Shopify's notification templates (PROC-O3 in 070).
B-9  On the initial load, the delivery date and time are "No Request". Once a customer selects, the value is carried over when moving between pages (X-5).
B-10 Compatibility varies by theme. The app is placed as an app block, and adjustment may be needed because of the theme's cart (such as a drawer) or other apps.
     An example of a theme with confirmed operation: Palo Alto. When confirmation is needed, ask for the theme name and whether there is a cart drawer, do not assert, and draft an inquiry to the developer.
B-11 Shopify Plus checkout extensibility (an input inside the checkout screen) is not supported (L-2).
B-12 There is no feature that fills in a delivery date automatically (for example "for slow delivery, fill in the date 5 days after the order").
```

## QA

- **Q: What is the price? What about the free period?** A: Normal 2.99 USD/month, Pro 4.99 USD/month. Both have a 14-day free period (B-1). Ask them to check the latest amount on the app listing page.
- **Q: What is the difference between Normal and Pro?** A: Pro can use CSV export, external system integration and customizing shipping methods at checkout (B-2). Date and time selection itself is on Normal.
- **Q: On a development (staging) store, can I use it free beyond 14 days?** A: A partner development store is not billed (B-5). When the store switches to a paid Shopify plan and billing starts, the app needs billing too (B-6). Do not assert without seeing the state of the store.
- **Q: When I open the admin, a billing approval screen appears and I cannot go on.** A: The store is probably not a development store (it has a paid plan) (B-6). Billing does not start until it is approved (B-3). Ask them to check the store's plan.
- **Q: It is a "client transfer" store but I am billed.** A: If the store has a paid Shopify plan, ordinary billing applies (B-6). It is separate from the transfer display.
- **Q: Is personal data stored in the app?** A: Customer personal data is not stored (B-7). What is typed into the CSV free input fields is stored. Point to the privacy policy URL.
- **Q: Does it work with my theme (Palo Alto, etc.)?** A: It is checked per theme (B-10). Ask for the theme name and whether there is a cart drawer.
- **Q: Can the initial state be "No Request"?** A: The initial load is "No Request". Values the customer selected are carried over (B-9).
- **Q: Can this app send a "we are preparing your shipment" email?** A: There is no email sending feature (B-8).
- **Q: If I move to Shopify Plus, can customers choose in the checkout screen?** A: No (B-11).
- **Q: I want a date such as N days after the order to be filled in automatically.** A: There is no such feature (B-12).

## ESCALATE

| Situation | Information to request |
| --- | --- |
| A billing approval screen appears on a development store | Store URL (xxx.myshopify.com), Shopify plan (development / paid), whether "client transfer" is shown, a screenshot |
| A request about billing, refund or cancellation | Store URL, date of the charge, Shopify's billing screen. Do not assert; draft an inquiry to the developer |
| A detailed inquiry about handling of personal data | The internal check items (where data is stored, retention period, etc.). Do not assert; point to the privacy policy and draft an inquiry to the developer |

## SEE

- [Can it be shown on the checkout screen?](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/070/checkout/)
- [Can the specified delivery date and time be shown in emails?](https://capital-castle.eastazy.com/cc-delivery-date-time/questions/120/mail/)
- [How to use CC Delivery Date & Time](https://capital-castle.eastazy.com/en/cc-delivery-date-time/how-to-use/how-to-use/)
- [Privacy policy](https://capital-castle.notion.site/8fe175eeb35f461b9455772e91fcca4b)

---

# Setup: Options (Order Tags, Showing in Emails, Validation, Interference from Other Apps)

```yaml
screens: The button "Add Tags" at the top of the screen / left menu "Option"
verified_from: The admin implementation (field names, texts)
```

## PROC-O1 Tag orders with the delivery date (manual)

```text
Where: The button "Add Tags" at the top of the app screen (in the same row as "Save", "Contact" and the language button)
Steps:
1. Press the button "Add Tags" at the top of the admin (the same row has "Save", "Contact" and the language button). After pressing, "Tags were added" is shown
Result: in the order list, the delivery date specified by the customer is added as a tag (YYYY-MM-DD format)
Limit: only orders that are open and within 3 days of the day you press the button are targeted
```

## PROC-O2 Tag orders automatically (Shopify Flow)

```text
Where: App left menu "Option" > "Auto Tag to Order (Shopify Flow)"
Steps (left menu "Option" → "Auto Tag to Order (Shopify Flow)"):
1. Install Shopify Flow (if it is not installed)
2. Download shopify-flow-import-file.flow with the "Download" button
3. Import that file with "Import" at the top right of Flow
4. Turn the imported workflow on ("Turn on workflows")
Result: every item in the order's "Additional details" becomes a tag
Optional: to tag only specific items, choose "Edit" → delete the action → choose the label string you want to tag and copy the code → add the action and save
Note: the date format follows the admin setting. For a different format, the Pro plan is needed
```

## PROC-O3 Show the delivery date and time in emails and on the thank-you page

```text
Where: App left menu "Option" > "How to display by email and checkout screen"
- "Mail of Order Confirmation": open the instructions and paste the Liquid code into the notification email template (manual)
- "Thank you page (Adding Script)": the method using additional scripts
- "Thank You Page, Order Confirmation Page": the method using the extension (for merchants on the Basic plan or above). Check support of other apps before switching
Note: inserting the code is manual work by the merchant. It is not inserted automatically
```

## PROC-O4 Validate the date at checkout

```text
Where: App left menu "Option" > "Validation for delivery date" > the check "Activate"
What is validated: whether required fields are filled, the shortest date, the longest date (on failure the customer cannot proceed to purchase)
Limits:
- The cut-off time cannot be validated. If cut-off times exist in several groups, choose only one "Cut off time" for validation (groups/options with the unselected cut-off times are not used in the shortest-date calculation)
- For options (delivery area, etc.), delivery time selection and input texts, only whether required fields are filled is validated
- It cannot be turned ON when the saved size exceeds the limit
Messages: "Validation message for delivery date verification" and others can be edited (default texts exist)
```

## PROC-O5 When it interferes with other apps

```text
Where: App left menu "Option" > "Cart Attributes Update"
- "Do not update cart attributes when the app (cart page) loads"
- "Do not update cart attributes when the 'Buy' button is pressed"
Use: when another app causes a malfunction, turn it ON and try to resolve it
Note: when ON, the updates that make sure the delivery date and time are added to the order are no longer performed. Check on the live store
```

## List of headings on the "Option" screen (from the top. Confirmed on the real screen)

1. Validation for delivery date ("Activate". It shows the current saved size)
2. Creating a backup file of saved data
3. Auto Tag to Order (Shopify Flow)
4. Display switching for each language
5. How to display by email and checkout screen
6. Cart Attributes Update
7. Holiday Calendar Settings (automatically delete dates before a given day)
8. Request Support for Setting Up (paid)

## FACTS

```text
O-1  "Add Tags" is a manual button. To tag automatically, use Shopify Flow (PROC-O2).
O-2  Showing in emails is done by the merchant pasting code into the template. The app does not rewrite emails automatically.
O-3  Even with validation ON, the cut-off time cannot be validated.
```

## ESCALATE

- "The delivery date and time does not appear in the email": check whether the code was pasted into the template, whether the label matches (re-fetch it if the group name was changed), and the kind of notification email.
- "Validation stops the customer from purchasing": ask for the store URL, the products in the cart, the displayed message, and the shortest/longest date of the group.

## SEE

- [Adding delivery date tags to orders](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/090/delivery-datetime-tags-to-order/)
- [Validation for the delivery date at checkout](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/100/checkout-validation/)
- [Can the specified delivery date and time be shown in emails?](https://capital-castle.eastazy.com/cc-delivery-date-time/questions/120/mail/)
- [Can the delivery date and time be shown on the thank-you page and order status page?](https://capital-castle.eastazy.com/cc-delivery-date-time/questions/130/thankyou-order/)

---

# The Product-Page \"Display Shortest Date\" Block: Behavior and Settings

```yaml
screens: Online Store → Theme → Customize → Product page → app block "Display Shortest Date"
verified_from: theme-develop shortestPorducts.ts / product/getMessage.ts / the theme extension block definition (product-cc-dellivery.liquid) / human-facing manual
note: This block only "displays". Selecting the date after adding to the cart is done by the widget on the cart side.
```

## SUMMARY

An app block, "Display Shortest Date", that shows the product's **shortest delivery date** on the product page.
The date shown is the same as the calculation result of the shortest-date settings in the admin (business days, calendar days, cut-off, holidays, adjustment by area) (S-* in 020).

## RULES

```text
P-1  The date is calculated for the variant being viewed. It is recalculated when the variant is switched.
P-2  When "Products Group is active" is ON, the shortest date of the group that the product belongs to (product link, product tag, tag::SKU, conditions) is shown.
     On the product page, other products in the cart are not taken into account.
     (The widget on the cart side uses the group with the smallest priority number among all products in the cart. This is a common cause of mismatches)
P-3  Conditional groups (weight / total price / stock) are judged by this variant's weight, price and quantity. If the same variant is in the cart, its quantity is used.
P-4  The whole block is not displayed in these cases:
     - a product set as a hidden product
     - "Delivery Date is Inactive" is set for that group (or delivery method)
     - "Do not display when out of stock" is ON and that variant is out of stock
P-5  The date format is the same as "Inputed Date Format" in "Settings for Calendar" of the admin.
P-6  The current time is the time of the IANA time zone if the delivery settings have one; otherwise the visitor's browser time (same as S-6).
P-7  "Show as selectbox for Shipping method, shipping area, etc." ON: when the delivery method / area is chosen on the product page, the shortest date changes by that option (S-7).
     When delivery methods (slots) are active, "delivery method name: date" are shown side by side.
P-8  If you choose a combination of variants that does not exist (an impossible combination), the previous display stays for a few seconds and then the default group's display appears.
P-9  This block is unrelated to dynamic checkout; it only "displays" on the product page. No delivery date and time is attached to the order.
```

## UI_LABELS

Settings of the app block "Display Shortest Date" (right side of the theme customizer):

| Field | Default |
| --- | --- |
| First sentence | Shortest Delivery Date is (the Japanese default text in the Japanese admin) |
| Last sentence | . |
| Note | (text) |
| Font size / Note Font size | 16 / 14 |
| Text Color / Text Color(note) / Text Color(shortest date) | #6A6A6A / #737373 / #121212 |
| Do not display when out of stock | OFF |
| Show as selectbox for Shipping method, shipping area, etc. | OFF |
| Text to be displayed initially for options (such as delivery area) | - |

## PROC-P1 Show the shortest date on the product page

Where: In the Shopify admin: "Online Store" > "Themes" > "Customize" > Product page > "Add block" > the app's "Display Shortest Date"

1. In the Shopify admin open "Online Store" → "Themes" → "Customize"
2. In the page selector at the top, choose "Product page" (the product template)
3. At the position where you want it, "Add block" → choose the app's "Display Shortest Date"
4. Adjust the sentences, font sizes and colors on the right and save

## PROC-P2 Switch the date by delivery area or delivery method

Where: App left menu "Settings" > card "Delivery Date" > the check "Determine the Minimum Delivery Date based on selection preferences, such as the delivery area." (set it first) -> theme "Customize" > the "Display Shortest Date" block

1. In the settings screen, set "Determine the Minimum Delivery Date based on selection preferences, such as the delivery area." (or the delivery method)
2. In the "Display Shortest Date" block, turn ON "Show as selectbox for Shipping method, shipping area, etc."
3. If needed, change "Text to be displayed initially for options (such as delivery area)" (default "-")

## QA

- **Q: What decides the product page's shortest date? I want to adjust it.** A: The calculation result of the shortest-date settings (business days, calendar days, cut-off, holidays, area additions). To adjust it, change the relevant fields in the settings screen (S-1 to S-7 in 020).
- **Q: I want a different shortest date per product.** A: Set the shortest date per group with grouping products (tags, Products Management, conditions). The block on the product page shows the date of each group (P-2).
- **Q: I want a different shortest date per variant.** A: Link the variant to a group with "tag::SKU" (C-5). Mind the priority (when several tags are attached, the smallest priority number is used).
- **Q: The product page date differs from the shortest date selectable in the cart.** A: The product page is calculated only for the variant being viewed, while the cart uses the group with the smallest priority number among all products in the cart (P-2). Check for multiple products, conditional groups and hidden products. Area additions are not added on the product page unless the select box is used (P-7).
- **Q: The shortest date does not appear on the product page.** A: Check P-4 in order (hidden product? date set not to be displayed? out-of-stock hiding?). Also check that the template where the block was placed is the product page.
- **Q: The date shown is "today" / old.** A: Do not assert. Ask for the browser, theme and store URL (ESCALATE).
- **Q: I want to put a "calendar to choose the delivery date and time" on the product page.** A: It can be placed on the product page too, but grouping by product is not reflected there (L-4).
- **Q: I want it to say "estimated shipping date".** A: The sentences can be changed with "First sentence" and "Last sentence". What is calculated is the shortest date, not a shipping date. If a different calculation is needed, ask the developer.

## ESCALATE

| Situation | Information to request |
| --- | --- |
| The product-page date is not what is expected | Product URL, variant, the shortest-date settings in the settings screen, products in the cart, browser |
| The date does not change / changes late when switching variants | Product URL, theme name, the variant switched to, errors in the browser console |
| The block does not appear | Product URL, theme name, the screen of the theme customizer where the block was added |

## SEE

- [Showing the shortest delivery date on the product page](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/068/shortest-date-product/)
- [Setting the shortest date (business days + calendar days)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/030/shortest-date/)
- [Adjusting the shortest date by selection (delivery area, etc.)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/045/shortest-date-with-selection/)
- [Grouping products](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/080/products-groups/)
- [Can it be placed on the product page?](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/030/products-page/)

---

# Special Date-Rule Combinations: Pre-Release Products, Holiday Calendar, Limits by Area, Own Delivery

```yaml
screens: Settings (Delivery Date / Products Group) / Online Store → Theme → Customize (app block "Holiday Calendar")
verified_from: The theme widget (getMessage / selectDays / holiday-calendar in theme-develop) / the theme extension block definition / human-facing manual / actual replies to inquiries
note: "Possible" is limited to what can be derived from the D-* rules. Do not assert operational details of a store without seeing its settings.
```

## SUMMARY

Date limits are built by combining the **shortest date (business days, calendar days, cut-off, area additions)** and the **selectable dates (blockout dates, blockout weekdays, specified dates)**.
When the limits differ per product, use **grouping products** (separate settings per group). Controlling the sales start date is not a feature of this app.

## RULES

```text
Z-1  "On sale from <date>" (controlling the sales period) cannot be set in this app.
     Alternative: Shopify's publishing schedule, or another app that limits the sales period.
     (The same developer's "CC Order Rules" can do period sales. The details are out of scope; direct the user to contact the developer.)
Z-2  "Sales start earlier but the delivery date should be on or after <date>": create a group for only those products,
     and register the dates up to the day before <date> in that group's "Blockout Date" (or make the shortest date longer).
     All other products use the settings of the group with the "Standard" badge (it cannot be deleted).
Z-3  The Holiday Calendar (a display-only block) shows the configured holidays and holiday weekdays grayed out with a strikethrough.
     Today has a frame. It has no function to select a date. The weekday language and the start weekday follow the app's settings.
Z-4  In a group where "Delivery Date is Inactive" (date OFF) is set, that group's holidays are not reflected.
     To use only the Holiday Calendar without showing the date input, create a dedicated group that holds the holidays,
     and choose that group as the group to reflect in the calendar.
Z-5  For the Holiday Calendar you can choose, per group and per option, whether to reflect it. When several are chosen, the union of holidays is shown.
Z-6  What can be changed per option (delivery area, etc.) is only the addition to the shortest date (business days / calendar days) (S-7).
     There is no setting to change blockout dates, blockout weekdays or holidays per option.
Z-7  When the way of counting and the selectable weekdays differ, as in "preparation uses business days (Mon-Fri), delivery is possible Mon-Sat",
     set holidays (days removed from the count of the shortest date) and blockout weekdays (days that cannot be selected) separately (S-2 / S-9).
Z-8  Holidays affect only the shortest-date calculation; blockout dates and blockout weekdays affect only whether a date can be selected.
     For a public holiday on which you also do not deliver, register it in both holidays and blockout dates.
```

## PROC-Z1 Show the Holiday Calendar on a product page or elsewhere

Where: In the Shopify admin: "Online Store" > "Themes" > "Customize" > "Add block" > the app's "Holiday Calendar". The groups to reflect are chosen in App left menu "Option" > "Holiday Calendar Settings"

1. In the Shopify admin open "Online Store" → "Themes" → "Customize"
2. On the page or section where you want the calendar, "Add block" → choose the app's "Holiday Calendar"
3. Block settings: Holiday Label Text / Holiday Background Color / Holiday Text Color / Font Size (px) / Months navigable into the past (default 0) / Months navigable into the future (default 3)
4. Choose the groups to reflect: in the app's "Option" screen under "Holiday Calendar Settings", check the groups and options

Note: if "Automatically delete dates before ... " (holidays and blockout dates older than a given number of days) is set, past holidays do not appear in the calendar (deleted dates cannot be restored).

## PROC-Z2 Make the delivery date on or after <date> for only some products

Where: App left menu "Settings" > card "Products Group" > the target group > "Blockout Date" (for creating groups see PROC-G1 and G2)

1. Turn ON "Products Group is active" and add a group (see 060 for the steps)
2. Link the target products to that group (tags or Products Management)
3. In that group's settings, register in the "Blockout Date" calendar the dates up to the day before <date>
4. The other products stay with the settings of the group with the "Standard" badge (nothing to do)

## QA

- **Q: Sales start on 7/25 but the delivery date should be on or after 8/7.** A: The delivery date limit is possible with Z-2. Controlling the sales start date is not possible in this app (Z-1).
- **Q: I do not want to use date/time selection; I only want to use the Holiday Calendar.** A: The Holiday Calendar block can be placed on its own (PROC-Z1). If you turn the date OFF, holidays are not reflected, so create a group for holidays (Z-4).
- **Q: I want different blockout weekdays per area (no Friday delivery to remote areas, etc.).** A: There is no setting to change blockout weekdays per option (Z-6). Only the addition to the shortest date can be changed per option. Ask for the operational details (target areas, weekdays, cut-off time) and draft an inquiry to the developer if needed.
- **Q: Saturdays and Sundays are not counted as business days but we deliver on Saturday.** A: Set them separately, for example Saturday and Sunday as holidays and Sunday as a blockout weekday (Z-7).
- **Q: I want to add public holidays in bulk.** A: The Japanese admin has a button that adds that year's public holidays to holidays and blockout dates in bulk (Japanese admin only; see the calendar settings in 040).
- **Q: Past holidays do not appear in the Holiday Calendar.** A: This is because of the automatic-deletion number of days. Make the number larger or set 0. Deleted dates do not come back (PROC-Z1).

## ESCALATE

| Situation | Information to request |
| --- | --- |
| Limits that combine area, weekday and time in a complicated way | Target areas, the shipper's cut-off time, days needed for delivery, the list of weekdays that can / cannot be selected |
| The Holiday Calendar does not appear | Store URL, the page where the block was added, theme name |
| A date can / cannot be selected despite the setting | The settings screen of the group, products in the cart, the date and time of the order |

## SEE

- [Holiday Calendar Settings](https://capital-castle.eastazy.com/cc-delivery-date-time/normal/105/holiday-calendar/)
- [Grouping products](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/080/products-groups/)
- [Blockout dates | Specified dates](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/041/blockout/)
- [Holidays](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/040/holiday/)
- [Adjusting the shortest date by selection (delivery area, etc.)](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/045/shortest-date-with-selection/)

---

# Troubleshooting by Symptom: Widget Missing, No Delivery Date on the Order, Cannot Proceed to Purchase

```yaml
screens: Theme editor (app embed / section) / left menu "Option" and "Products"
verified_from: The theme widget (theme-develop) / the checkout validation Function / the theme extension block definition / human-facing FAQ / actual replies to inquiries
note: Causes are "candidates". Do not assert without seeing the merchant's store. Ask for the information in ESCALATE.
```

## SUMMARY

A page for narrowing the cause from the symptom. **Do not assert a cause; guide the candidates in the order of checks.** One symptom has several possible causes, and many cannot be decided without looking at the store.

The delivery date and time are written by the widget as cart attributes (the order's "Additional details"). "Not on the order" happens either because the purchase route cannot carry cart attributes, or because the JavaScript did not run before it was written.

## Premises (facts of the mechanism)

```text
T-1  The widget writes these to the cart attributes: the delivery date label = date / the delivery time label = time /
     (the delivery area label = the selected value) / the key of an input text = the input / the delivery method label = the chosen delivery method.
     The key names are the same as the label settings in the admin (if you change a label, the key changes too).
T-2  __ccValid is written only when "Validation for delivery date" (checkout date validation) is ON.
     The value is a string holding the selection as a JSON array. The checkout validation (a Shopify Function) reads it.
T-3  __ccSlot is written only when "Customize shipping methods at checkout" (Pro) is ON.
     The value has the form "<delivery method number>::<group number>".
T-4  In a cart that is out of scope for date/time selection (a cart excluded by the hidden-products settings. G-8 / G-9),
     the widget does not appear, and the attributes above are empty (deleted). Values already entered are not kept on the order (G-10).
T-5  If the app embed (App embed, called "Embeded" in the English theme editor) is active, the widget code is loaded on every page.
     If it is placed as a "section" (the "Cart(Section)" block), it is loaded only on the page of the template where it was placed.
     Set only one of [embedded apps] or [Cart(Section)]. Setting both loads the code twice.
T-6  Dynamic checkout (buttons such as "Buy it now" / Apple Pay) cannot carry cart attributes, by Shopify's specification.
T-7  The checkout validation, when the cart attribute is "inValid", shows the default error and stops the purchase.
```

## Symptoms: the order of checks

### SYM-1 The widget does not appear in the cart

```text
Order of checks:
1. Is the app embed (App embed) active, or is a section placed in the cart template?
   → if neither, it is not displayed (T-5).
2. Are all the products in the cart "hidden products"? Is "Hidden has priority" ON with even one hidden product in the cart?
   → G-8 / G-9. In this case the configured "product note" may be shown instead (G-11).
3. If viewed on the product page: is the product-page section (widget mode) placed?
   The settings for the cart page and for the product page are separate.
4. If none of the above applies, go to ESCALATE. A theme-side cart (such as a drawer) or interference from other apps
   cannot be asserted without seeing the merchant's store.
```

- If "the purchase button cannot be pressed / does not appear": when "Hide the purchase button until the delivery date widget appears" in the theme editor's app embed is ON, the purchase button stays hidden until the widget appears. Resolve the reason the widget does not appear first, or turn this setting OFF.

### SYM-2 The delivery date and time are missing from the order's "Additional details"

```text
Candidate causes (in the order of checks):
1. The purchase was made from dynamic checkout (buttons such as "Buy it now" / Apple Pay) (T-6).
   → ask them to turn the button OFF. Especially when the delivery date is required.
2. The cart was out of scope because of the hidden-products settings (T-4 / G-8 / G-9). In this case empty is by design.
3. Interference from another app. Likely when attributes other than the delivery date remain on the order and only the delivery date is missing.
   → confirmation with the provider of the interfering app is needed.
4. An external payment function such as deferred payment erased the attributes. Likely when all delivery date attributes are missing.
5. A device problem or a delay in communication prevented the app's JavaScript from loading. Not reproducible.
```

- If it happens frequently, ask them to contact support with a "collaborator request code" (for the investigation).
- For stores where the delivery date is important (frozen food, fresh flowers, etc.), the countermeasure is "Post __ccValid on load" in SYM-4.

### SYM-3 __ccValid / __ccSlot appears in the order's "Additional details"

```text
Cause: these are values needed for the feature to work.
- __ccValid: "Validation for delivery date" is ON (T-2)
- __ccSlot : "Customize shipping methods at checkout" (Pro) is ON (T-3)
Action: if you use those features, they are required. If you only want to avoid keeping the value, set up a Shopify Flow workflow
     that deletes it from "Additional details" after the order (a file is provided in the human-facing manual).
Note: turning the feature OFF stops them from appearing, but the feature itself (validation, shipping method customization) also stops working.
```

### SYM-4 Cannot proceed to purchase at checkout / an error appears

```text
Candidate causes:
1. "Validation" is ON and the delivery date attribute is not attached (the widget did not run, dynamic checkout, etc.)
   → the validation message (set in "Validation message for delivery date verification") appears.
2. The delivery date selected is a date that cannot be selected by the settings (before the shortest date, after the longest date, a blockout date, etc.)
   → a date error message appears. It also happens when the cart was left for several days.
3. A required field (delivery time, delivery area, input text) is empty.
4. "Post __ccValid on load" is ON and the widget code did not load
   → __ccValid stays "inValid" and the validation stops the purchase with the default error (T-7).
   → the customer has to go back to the cart and reload the page.
```

- "Post __ccValid on load" is a setting item of the theme editor's app embed (or section). It is for stores where the delivery date is required and that want to stop the purchase when loading failed. There is a risk of losing customers (they cannot proceed to purchase).
- Validation cannot be done with the cut-off time (O-3).

### SYM-5 An order was placed with a delivery date before the shortest date

```text
Cause: for example the customer selected a valid date in the cart, then left it for several days before completing checkout.
     The cart is validated, but the app does not validate on the checkout screen.
Action: turn ON "Validation for delivery date" (it validates at checkout that the date is on or after the shortest date).
Exception: with a payment method that goes through another site (for example KOMOJU), when the customer is moved to the payment screen
     and completes it several days later, the validation does not work. Guide a note text, or ask them to consider another method that allows re-specifying.
```

### SYM-6 The delivery date and time entered in the cart are not reflected on the order

Check SYM-2 item 1 (dynamic checkout) and item 3 (other apps) first. Also tell them the following.

- Right after switching from another delivery-date app, the other app's code may remain and interfere. Even if it is hidden, it interferes if the code remains. Ask them to uninstall it and check.
- The following app has been confirmed not to work together with this app: Hulk Products Options.

### SYM-7 The widget layout is broken

```text
Action: write CSS in the app's "Settings of CSS" (in the app embed in the theme editor) to adjust it.
- Start selectors from .cc-calendar-overall (to avoid affecting other layouts).
- The notation "%}" cannot be used. When using it, add a semicolon as in "width: 100%;".
- There are proven CSS snippets per theme in the human-facing manual.
- Proven case where only the note (remarks) is right-aligned: add `.cc-calendar-overall .note{justify-content:unset}` to the embedded app's CSS.
- If it breaks only for certain selections (delivery method / store pickup, etc.), ask them to identify the element that breaks in that state (screenshot).
```

### SYM-8 The delivery date and time do not appear in the email

See PROC-O3 and ESCALATE in the page [Setup: options](https://capital-castle.eastazy.com/en/cc-delivery-date-time/ai/070/setup-options/). The app does not rewrite emails automatically; the method is to paste the code into the template (O-2).

### SYM-9 Orders go through with only the delivery time empty (another app may be overwriting it)

```text
Symptom: __ccValid says the time is selected, but the order's delivery time is empty (the date is there). It happens with customers who place orders in quick succession.
Way of thinking:
- This app updates __ccValid and the delivery time together in the same process. A mismatch is unlikely to happen with this app alone.
- Case: another app's code (message card / gift type) wrote the delivery date and delivery time into the cart with a delay and overwrote them afterwards.
Order of checks:
  1. Does the value of __ccValid (the 5th element of the array being true = time selected) disagree with the order's delivery time?
  2. Does the store have other apps that take messages, gifts or cart operations (those that rewrite cart attributes)?
  3. Does another app's code update the "delivery date" or "delivery time" attributes?
Action: ask the other app to stop updating the delivery date and delivery time.
      This app cannot guarantee the timing of another app's writes (the one written later remains).
```

### SYM-10 The × of the calendar does not respond / closes slowly on a smartphone

```text
- Handled on the app side (2026-04): the tap area of the × button was enlarged to 44×44px and duplicate event registration was cleaned up.
- If it is still slow: a script of the theme or another app may be the cause.
  Case: a script on the cart page fetched /cart.js with synchronous XHR every 0.5 seconds and blocked the main thread.
Check: store URL, device and OS (iPhone / Android), other scripts / apps on the cart page.
```

### SYM-11 The display of the delivery date and time is slow / the initial display takes time

```text
- The app's JavaScript itself loads with little delay. The widget is displayed to match the "checkout" button on the cart page,
  so on stores where the theme or other apps generate the button late, the display may be late too.
- Action: fix the display location. Place <span id="cc-delivery-date-time-app"></span> where you want it
  (FAQ "Can the delivery date and time be shown anywhere?").
- Check whether another app keeps fetching /cart.js all the time (for example a payment or purchase-related external app).
- Having two #cc-calendar-overall in the HTML is by design (a hidden template is cloned to make the displayed one). It does not cause the delay.
```

### SYM-12 The delivery time options appear in Google search results

```text
- Cause: the widget's text (options, date cells, setting JSON) is placed in the DOM of every page, so Googlebot may read it by running JavaScript and mix it into search snippets.
- Handled (2026-04): the data-nosnippet attribute was added to the widget's elements. It is already reflected in all stores; no setting change is needed on the merchant side.
- When it takes effect: snippets already indexed disappear gradually after Google re-crawls (days to weeks).
- If it does not disappear / depends on the environment: search results look different by account and time. Ask for the page name and the page where the symptom appears via a site: search.
```

### SYM-13 An unfamiliar date such as "Tomorrow 18:59" appears under store pickup

```text
- It may not be this app's display but Shopify's "estimated pickup time" for local pickup.
- Check: Shopify admin → Settings → Shipping and delivery → Local pickup → the "estimated pickup time" setting of that location.
```

### SYM-14 "Validation for delivery date" cannot be turned ON because of the saved size

```text
- Because of Shopify's storage size limit, the size cannot be increased. The app already compresses the data.
- Action (make it smaller):
  1. Reduce the number of groups (the surest way)
  2. Keep holidays and blockout dates to a minimum (up to about the longest date + 1 month)
  3. Set "Automatically delete dates before ..." (automatic deletion of holidays and blockout dates)
```

### SYM-15 The Save button keeps spinning and the settings cannot be saved

```text
- Case: an old "advanced delivery time" setting had not been deleted properly and caused an error in the data at save time.
  The merchant cannot see the cause; the data has to be checked and fixed.
- Do not assert; ask for the information in ESCALATE (a collaborator request code is needed).
```

### SYM-16 The cart contents suddenly become empty

```text
- This app has no process that operates on the products in the cart. If it happens even with the app embed turned OFF, this app is not the cause.
- Case: another gift app was the cause.
- Check: does it reproduce with the embed OFF, when does it happen (operation / page), and which other apps are installed.
```

## QA

- **Q: There is no delivery date and time on the order. Is it a bug in the app?** A: Do not assert. Ask them to follow SYM-2. First ask whether attributes other than the delivery date remain and whether it came from dynamic checkout.
- **Q: I want to remove __ccValid.** A: It is needed for the feature (SYM-3). If you only do not want to keep it, delete it with Shopify Flow.
- **Q: I want to make the delivery date input sure to be required.** A: Use the "required" setting + turn ON "Validation for delivery date". To also detect loading failure, turn ON "Post __ccValid on load" (SYM-4; risk of losing customers). Turn OFF the dynamic checkout buttons.
- **Q: Can the delivery date be obtained from dynamic checkout too?** A: No (T-6). Turn the button OFF.
- **Q: It does not appear on the customer's device but appears on mine.** A: If you cannot reproduce it, do not assert. Ask for the browser, device, network condition and product URL. Non-reproducible loading failures are item 5 of SYM-2.

## ESCALATE

| Situation | Information to request |
| --- | --- |
| The widget does not appear (SYM-1 does not apply) | Store URL, product URL, products in the cart, theme name, browser, a screenshot showing whether the app embed is active |
| The order has no delivery date and time | Order number, a screenshot of "Additional details" (whether other attributes remain), purchase route (dynamic checkout or not), the payment methods and other apps in use |
| It happens frequently | The above plus a "collaborator request code" (to log in and investigate) |
| Stopped at checkout | The displayed message, store URL, products in the cart, validation settings (ON/OFF and the ON/OFF of "Post __ccValid on load") |
| The layout is broken | Store URL, theme name, a screenshot of the broken part |
| Orders go through with only the time empty | Order numbers (several), the value of __ccValid, the order's additional details, other apps installed (message / gift type) |
| Cannot save / the Save button keeps spinning | Store URL, the steps, a collaborator request code |
| Display is slow / the × does not respond | Store URL, device and OS, browser, other apps on the cart page |

## SEE

- [Does it support dynamic checkout?](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/010/dynamic-checkout/)
- [The delivery date and time entered in the cart are not reflected](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/040/cart/)
- [It is placed on the online shop but the layout is broken](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/060/layout/)
- [Orders may be placed with a delivery date earlier than the shortest date](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/140/checkout-invalid-date/)
- [__ccValid or __ccSlot is now included in the order's "Additional details"](https://capital-castle.eastazy.com/cc-delivery-date-time/questions/160/property/)
- [Some orders have no delivery date and time](https://capital-castle.eastazy.com/cc-delivery-date-time/questions/170/no-property/)
- [Validation for the delivery date at checkout](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/100/checkout-validation/)
- [What is a collaborator request code?](https://capital-castle.eastazy.com/cc-delivery-date-time/questions/110/checkout/)
- [Can the delivery date and time be shown anywhere?](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/020/display-everywhere/)
- [Holiday Calendar Settings](https://capital-castle.eastazy.com/cc-delivery-date-time/normal/105/holiday-calendar/)

---

# What It Cannot Do, Use with Other Apps, and Out-of-Scope Questions

```yaml
screens: Left menu "Option" and "Connect(Pro Plan)" / Settings → Input Texts
verified_from: The theme widget (theme-develop) / the checkout extension (shopify.extension.toml of checkout-ui) / human-facing FAQ / actual replies to inquiries
note: You may answer "it cannot be done" only for the items written as L-*. Do not guide the setup of other apps (point to that product's manual).
```

## SUMMARY

"CC Delivery Date & Time" is an app where **the widget on the cart screen writes the delivery date and time into the cart attributes (the order's "Additional details")**. It does not control the inside of checkout, POS, or other apps.
Integration with other apps takes the form "the other side reads the key and value in the order's additional details". Whether they can read it depends on the other app's specification.

## RULES (what it cannot do)

```text
L-1  There is no feature to switch showing / requiring / hiding the delivery date and time by payment method (credit / bank transfer / convenience store payment, etc.).
     Reason: the date is chosen on the cart screen, but the payment method is chosen afterward at checkout (Shopify's specification).
     Alternative: write in the remarks, for example, "For bank transfer and convenience store payment, shipping happens after payment is received, so the delivery date you specified is not valid".
L-2  An input for the delivery date and time cannot be shown inside the checkout screen (this app's widget does not support it).
L-3  Orders through dynamic checkout (buttons such as "Buy it now" / Apple Pay) do not get a delivery date and time (Shopify's specification).
     If the date and time must be required, turn the dynamic checkout buttons OFF.
L-4  Even if it is placed on the product page, grouping by product is not reflected. A group is decided for "the products put in the cart".
L-5  There is no feature to show the delivery date and time in the order history list of the customer's account page.
     - New customer accounts: by placing the app block (checkout-ui) on the "order status" page, the delivery date and time can be displayed.
       (It can also be placed on the thank-you page. Add the block from Shopify's checkout settings screen)
     - Legacy account pages: it is not an app feature; show it from order.attributes in the theme's order list liquid.
L-6  There is no setting such as "hide the date/time selection only for subscription purchases". The app has no way to tell whether it is a subscription.
L-7  A feature to reset an already selected delivery date and time automatically when products are removed from the cart is not confirmed (X-5).
L-8  It cannot be used on channels other than Shopify, such as TikTok Shop (Shopify only). There is no plan to develop it.
L-9  There is no integration with Shopify POS (such as requiring the pickup date and time for POS orders). There is no plan to develop it.
L-10 There is no dedicated feature for leave-at-door and the like. The alternative is to add an item with "Input Texts" (PROC-X1 in 050) and put the value into the order's additional details.
     Whether the destination (Logiless, Yamato B2 Cloud, etc.) can take in that item depends on the destination's specification.
```

## RULES (use with other apps)

```text
X-1  All in Gift: delivery date and time information can be taken in only when All in Gift is placed on the cart screen.
     It cannot be taken in when placed on the product page. On the All in Gift side, set the string of this app's "Label Text" as the "key to import".
X-2  Hiding the date/time widget in conjunction with All in Gift's selection (e-gift, etc.) is not an official integration and is not supported.
     A code example is in the FAQ ("Can the delivery date and time widget be hidden according to customized conditions?").
X-3  Subscription apps: for the second and later orders of a subscription, the subscription app creates them based on the first order.
     Even if the delivery date and time specified at first are carried over, this app is not controlling it. Ask them to check the subscription app's specification.
X-4  Using the same item name as another app (for example delivery_date) causes a collision. In Pro, changing "Connect Label" to another name avoids it.
X-5  Cart attributes remain even when the products are removed from the cart (they are not erased even by /cart/clear.js; reproduced on a real device).
     So in a cart where products are put back, the previous delivery date and time may be restored and end up on the order.
     If the customer selects the date again, it is overwritten. Dates outside the selectable range are not restored.
X-6  Out-of-scope other apps: "CC Order Rules" (quantity limits, pre-order sales, etc.), age verification, and wholesale (B2B) apps are outside this manual.
     Do not answer about their features or settings by guesswork; say that it is out of scope, tell the user to contact the developer of "CC Delivery Date & Time", and draft the inquiry.
```

## PROC-L1 Show only the delivery date and time in the legacy account page's order list (liquid)

Add this to the liquid file that outputs the theme's order list (for Dawn, the customer account's order template).
This is the form confirmed to work at a real merchant (use `order.attributes`; `attributes` alone does not give the order's values):

```liquid
{% for attribute in order.attributes %}
  {% if attribute.first == "Request Delivery Date" %}
    <p>{{ attribute | first }}</p>
    <p>{{ attribute | last }}</p>
  {% endif %}
{% endfor %}
{% for attribute in order.attributes %}
  {% if attribute.first == "Request Delivery Time" %}
    <p>{{ attribute | first }}</p>
    <p>{{ attribute | last }}</p>
  {% endif %}
{% endfor %}
```

- `"Request Delivery Date"` and `"Request Delivery Time"` must match the strings set in "Label Text" in the admin (use those strings if the store changed the labels; in the Japanese admin the defaults are "配送希望日" and "配送希望時間").
- If you output everything without narrowing, internal values such as `__ccValid` are displayed too.
- This edits a theme file, so it is work outside support. Showing the code is for reference.

## QA

- **Q: I want the date/time selection hidden only for bank transfer or convenience store payment.** A: It cannot be done (L-1). There is a way to inform customers with a remarks text.
- **Q: Can the date/time selection be shown inside the checkout screen?** A: No (L-2). A block that "displays" it on the thank-you page and the order status page can be placed (L-5).
- **Q: I want the delivery date and time in the order history of the customer account.** A: For new accounts, place the app block on the order status page. For legacy accounts, show it from `order.attributes` in the theme's liquid (L-5).
- **Q: When I show it in the account page, extra values such as __ccValid appear too.** A: In liquid, output only those whose `attribute.first` matches the label. The label is the string of "Label Text" in the admin.
- **Q: I want to hide the date/time selection only for subscriptions.** A: It cannot be hidden by settings (L-6). There is a way to write code that detects subscriptions yourself and use `window.ccSelectedTag` from the FAQ (not supported).
- **Q: The second and later subscription orders also get the same delivery date and time.** A: Because the subscription app copies the order. Ask them to check with the subscription app (X-3).
- **Q: The item name of the delivery date collides with a subscription app (NextEngine integration).** A: Change "Connect Label" to another name (X-4).
- **Q: Can it integrate with All in Gift?** A: Only when placed on the cart screen (X-1). Not on the product page.
- **Q: I want to add a leave-at-door option and pass it to the destination system.** A: Adding an item with Input Texts puts it into the order's additional details. Ask the destination whether it can take it in (L-10).
- **Q: I want to issue a leave-at-door shipping label with Yamato B2 Cloud.** A: This app cannot do it. It is a limitation on B2 Cloud's side.
- **Q: I want to require the pickup date and time when ordering from POS.** A: There is no feature and no plan (L-9).
- **Q: I want to use it on TikTok Shop too.** A: It cannot be used (L-8).
- **Q: I removed the product and chose again, but the previous delivery date and time remain.** A: Cart attributes remain by design (X-5). If the customer selects again it is overwritten. A setting for resetting is not confirmed, so do not assert.
- **Q: I placed it on the product page but the group settings do not work.** A: By design (L-4). It is applied to the products put in the cart.

## ESCALATE

| Situation | Information to request |
| --- | --- |
| After installing another app, products that cannot have a date/time can be given one | Order number, the values in the order's "Additional details", products in the cart, names of the other apps installed |
| Values are not taken in by the integration with another app | The integrated app's name, the keys and values in the order's "Additional details", the key name set on the destination |
| An unexpected delivery date and time is on an order | Order number, order date and time, whether the customer was logged in, whether there was a previous order, browser |
| A question about an out-of-scope other app | (Without answering) say that it is out of scope and draft an inquiry to the developer |

## SEE

- [Does it support dynamic checkout?](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/010/dynamic-checkout/)
- [Can it be shown on the checkout screen?](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/070/checkout/)
- [Can it be placed on the product page?](https://capital-castle.eastazy.com/en/cc-delivery-date-time/questions/030/products-page/)
- [Can the delivery date and time be shown on the thank-you page and order status page?](https://capital-castle.eastazy.com/cc-delivery-date-time/questions/130/thankyou-order/)
- [Can the delivery date and time widget be hidden according to customized conditions?](https://capital-castle.eastazy.com/cc-delivery-date-time/questions/080/display-settings/)
- [Can it integrate with All in Gift?](https://capital-castle.eastazy.com/cc-delivery-date-time/questions/050/All-in-Gift/)
- [Input Texts](https://capital-castle.eastazy.com/en/cc-delivery-date-time/normal/075/input-text/)
