# Learn more about configuring your checkout UI extension: # https://shopify.dev/docs/api/checkout-ui-extensions/latest/configuration # The version of APIs your extension will receive. Learn more: # https://shopify.dev/docs/api/usage/versioning api_version = "2026-07" [[extensions]] name = "Delivery Date & Time (Checkout)" handle = "checkout-datetime" type = "ui_extension" uid = "14165501-9e99-cb7d-e2bf-2e25f3028ca218bc5e8a" description = "Plus-only native picker in checkout, plus a Thank You page confirmation of the scheduled slot." # purchase.checkout.block.render: the native picker inside checkout itself # (Plus only — non-Plus checkout can't host a custom block; those stores # rely entirely on the storefront widget + Validation Function instead, per # IMPLEMENTATION_PLAN.md §9's "no checkout.liquid fallback" risk note). [[extensions.targeting]] module = "./src/Checkout.jsx" target = "purchase.checkout.block.render" # purchase.thank-you.block.render: read-only confirmation of the slot # selected above. NOTE: there is no purchase.order-status.block.render in # this API version — order-status-page display for ALL plans (not just # Plus) is handled separately, by a Theme App Extension block reading the # order's note_attributes (see extensions/datetime-widget/blocks/ # order-confirmation.liquid), since that works on every plan via Liquid, # not just where checkout extensibility is available. [[extensions.targeting]] module = "./src/ThankYou.jsx" target = "purchase.thank-you.block.render" [extensions.capabilities] # Gives your extension access to directly query Shopify's storefront API. # https://shopify.dev/docs/api/checkout-ui-extensions/latest/configuration#api-access api_access = true # Gives your extension access to make external network calls, using the # JavaScript `fetch()` API. Required — this extension calls our own # backend (checkout.scheduling.availability/hold) to share the same # capacity pool as every other surface. Shopify requires this capability # to be reviewed/approved before a version using it can be RELEASED (not # just created) — deploys will show "created, but not released" until # that approval is granted, which is fine for local dev/testing; it only # matters before public launch. (The embedded admin app failing to load # was a red herring here — the real cause was a missing shopify.web.toml, # see that file's comment.) network_access = true