Files
mozimo.in/docs/shopify-catalog-inventory.md
tanshu de0553d0d4 Wayfinder: chart the Shopify headless commerce map
The route from "mozimo.in displays Shopify products" to "mozimo.in sells them",
as a plan with a phase spine and gates, plus the open decision tickets that
still shape it and the evidence they rest on.

- .scratch/shopify-headless-commerce/: plan.md (phases and gates), map.md (the
  wayfinder map), 10 open decision tickets
- CONTEXT.md: Storefront / Theme store / Cart / Parity vocabulary
- docs/adr/0001-0003: Checkout stays Shopify-hosted, one Variant per product,
  the checkout domain stays shop.mozimo.in
- docs/research/ and docs/shopify-catalog-inventory.md: verified store facts,
  the Cart API probe, and the catalogue inventory

Raw Shopify doc scrapes under .scratch/shopify-research/ are ignored: they are
working material, not record.
2026-10-14 09:00:42 +05:30

95 KiB
Raw Permalink Blame History

Live Shopify Catalog Inventory — mozimo.in

Read-only inventory of the live Shopify store behind mozimo.in, taken from the Storefront GraphQL API. Every value below is a raw API reading. No recommendations, no inferred intent.

Provenance

Item Value
Store domain e21i4d-0q.myshopify.com (public domain shop.mozimo.in)
API version requested 2026-10
API version served 2026-10 — every response carried X-Shopify-API-Version: 2026-10
Token mode minted — the cached minted token at .cache/shopify-token.json (32 hex) was reused; no new token was minted during this capture
Endpoint POST https://<domain>/api/2026-10/graphql.json with X-Shopify-Storefront-Access-Token
Response metadata extensions.cost present (requestedQueryCost only; no throttle-status object returned)

Version fall-through (verified by direct request)

Version requested X-Shopify-API-Version returned HTTP
2026-10 2026-10 200
2026-07 2026-07 200
2026-01 2026-01 200
2025-01 (the version pinned in src/lib/shopify.ts) 2025-10 200
2025-10 2025-10 200

publicApiVersions as reported by the API itself:

handle displayName supported
2025-10 2025-10 (Unsupported) false
2026-01 2026-01 true
2026-04 2026-04 true
2026-07 2026-07 true
2026-10 2026-10 (Latest) true
2027-01 2027-01 (Release candidate) false
unstable unstable false

So the repo's pinned 2025-01 is not falling forward to the oldest supported stable version (2026-01); Shopify currently answers it as 2025-10, a version the API itself flags as Unsupported. All data in this document was captured at 2026-10, where every field below was confirmed present.

Credential mode

Both modes are populated in .env, but src/lib/shopify.ts prefers the static token when set (if (STATIC_TOKEN) return STATIC_TOKEN;). This capture did the opposite: it used the cached minted token, because it was present and working.

  • SHOPIFY_STOREFRONT_ACCESS_TOKEN — present (static 32-hex token)
  • SHOPIFY_CLIENT_ID + SHOPIFY_CLIENT_SECRET — present
  • .cache/shopify-token.json — present, token 32 hex, minted 2026-09-06T05:38:21Z

Both tokens authenticate ({ shop { name } } → 200). The static token was not used for this report, so the scope findings below (e.g. the missing selling-plan scope) are the minted token's scopes and are unverified for the static token.

Scope-limited fields (access denied — not absent)

Query Error Required scope
Product.sellingPlanGroups ACCESS_DENIED unauthenticated_read_selling_plans
QueryRoot.locations ACCESS_DENIED unauthenticated_read_product_pickup_locations
Shop.shopPayInstallmentsPricing ACCESS_DENIED unauthenticated_read_shop_pay_installments_pricing

1. Store basics

Field Value
Shop name Mozimo Hand Crafted Chocolates
Shop GID gid://shopify/Shop/74467967222
Primary domain shop.mozimo.in → https://shop.mozimo.in (sslEnabled: true)
Storefront host e21i4d-0q.myshopify.com
Money format Rs. {{amount}}
Shop description empty string
Customer account URL null (legacy customer accounts are not exposed under the modern Customer Accounts API)
Contact information null
Legal notice null
Subscription policy null
Terms of sale null
Policies populated four of six: termsOfService, refundPolicy, privacyPolicy, shippingPolicy — each with title, URL and a full HTML body
Ships to countries 29 country codes (see below) — not just India
Brand brand.logo.image.url present (Mozimo_Logo.svg); shortDescription and slogan are null
Social login socialLoginProviders returns a list with no usable fields exposed
Shop-level metafield shop.metafield(namespace:"custom", key:"tagline") → null
Store policies note the shipping policy body states "This website currently ships to addresses within India only" and "We are currently delivering Pan India", while shipsToCountries lists 29 destinations — the two disagree

shipsToCountries in full (29):

AE, AT, AU, BE, CA, CH, CZ, DE, DK, ES, FI, FR, GB, HK, IE, IL, IN, IT, JP, KR, MY, NL, NO, NZ, PL, PT, SE, SG, US

Payment-related settings visible from the Storefront API (this is essentially the whole surface):

paymentSettings field Value
countryCode IN
currencyCode INR
enabledPresentmentCurrencies ["INR"]
acceptedCardBrands [] — empty
supportedDigitalWallets [] — empty
shopifyPaymentsAccountId null
cardVaultUrl https://checkout.pci.shopifyinc.com/sessions

There is no payment-provider/gateway disclosure on the Storefront API: no gateway names, no UPI/COD settings, no PaymentSettings beyond the table above. acceptedCardBrands and supportedDigitalWallets being empty lists is the default shape for a token without payment-detail scopes — treat "no card brands" as unverified, not as a real store configuration. The refund policy body does contain operational detail (24-hour claim window, refunds via "net banking, pay wallets") but it does not name a gateway.

Locale

Field Value
Country IN — India, currency INR (₹), unitSystem METRIC_SYSTEM
Language EN — English
availableCountries only IN (India)
availableLanguages only EN
shipsToCountries 29 codes (listed above)

Note the asymmetry that matters for reading this document: Localization offers only India (availableCountries = ["IN"]), while Shop.shipsToCountries lists 29 destinations. The three shop-level metafields probed (custom.tagline, custom.store_currency, facts.storage) all return null.


2. Full product catalogue

Total: 61 products. The catalogue is 4× larger than the hardcoded product set in src/data/catalog.ts, which amounts to 27 product(...) entries covering 15 unique handles (the bestsellers, gifting, pantry and giftingTabs exports overlap heavily).

There is no productsCount field on QueryRoot and no totalCount on ProductConnection at 2026-10 (Field 'productsCount' doesn't exist on type 'QueryRoot'; Field 'totalCount' doesn't exist on type 'ProductConnection'), so the count is a full pagination walk to pageInfo.hasNextPage: false, not an API-reported total. The last page returned hasNextPage: false, so 61 is exact.

Catalogue-wide observations (all 61 products):

Attribute Value
productType "" (empty string) for all 61 products — no type set anywhere
tags [] for all 61 products — no tags set anywhere
vendor Mozimo Hand Crafted Chocolates for 60; My Store for one: pistachio-dragees
availableForSale (product) true for all 61
availableForSale (variant) true for all 61
currentlyNotInStock false for all 61
totalInventory 0 or negative for all 61 (maximum value seen: 0)
quantityAvailable 0 for 16 products, negative for 45, positive for none
isGiftCard false for all 61
requiresSellingPlan false for all 61
compareAtPrice null on every variant; compareAtPriceRange.minVariantPrice.amount is 0 on every product — nothing is on sale
sku null or "" on every variant — no SKUs anywhere
barcode not populated (queried per variant; none returned)
images exactly 1 on 60 products, 2 on one (1-kg-bark-box); hasNextPage: false on a first: 250 images connection for every product
media every media node is IMAGE; no video, no 3D model
altText null on every image of every product (0 products have any alt text)
weight populated on every variant, always unit GRAMS (0–5500 g)
publishedAt non-null for all 61
createdAt range 2025-03-03T06:06:07Z → 2026-03-25T11:18:38Z
updatedAt range 2026-05-25T10:48:07Z → 2026-10-06T00:59:46Z
taxable / requiresShipping true for every variant

Inventory caveat. totalInventory and quantityAvailable are not access-denied here — they are returned, and they read 0 or negative (−1 to −20) on all 61 products while every product still reports availableForSale: true. Overselling past zero does not flip a product to unavailable in the Storefront API, so "availability" and "in stock" disagree across the whole catalogue. Whether fulfilment is actually possible is not determinable from the Storefront API.

Product query argument query: was tested and appears to be ignored by this store's Storefront API: products(first: 250, query: "available_for_sale:true") and products(first: 250, query: "gift_card:true") both returned the full unfiltered 61, identical to no query. Filter-based counts are therefore unverified; the isGiftCard field (all false) is the reliable gift-card signal.

Full catalogue (alphabetical by handle; qty = quantityAvailable from the variant, tInv = product totalInventory, imgs = image count):

# handle title vendor variant title selectedOptions price ₹ compareAt qtyAvail totalInv available imgs collections
1 1-kg-bark-box 1 kg Bark Box Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 5700.0 — 0 0 yes 2 gift-collection, diwali, hampers-boxes
2 200-gas-bark-box 200 gms Bark Box Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 1200.0 — 0 0 yes 1 best-sellers, gift-collection, diwali
3 4-pralines-box 4 Pralines Box Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 440.0 — -2 -2 yes 1 pralines
4 9-pralines-box 9 Pralines Box Mozimo Hand Crafted Chocolates 1 [{"name":"Title","value":"1"}] 990.0 — -3 -3 yes 1 gift-collection, pralines
5 bars-box Bars Box Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 1050.0 — 0 0 yes 1 gift-collection, diwali
6 cocoa-bean-shell Cocoa Bean Shell Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 220.0 — 0 0 yes 1 mozimo-delights
7 kunafa-chocolate-bar Kunafa Chocolate Bar Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 1600.0 — -6 -6 yes 1 best-sellers, diwali
8 matcha-hazelnut-dragees-100gm Matcha Hazelnut Dragees 100gm Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 550.0 — -1 -1 yes 1 dragees, best-sellers
9 matcha-strawberry-praline Matcha Strawberry Praline (Box of 4) Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 440.0 — -1 -1 yes 1 pralines
10 mozimo-almond-bark-45 Mozimo Almond Bark 45% Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -2 -2 yes 1 bark
11 mozimo-almond-bark-60 Mozimo Almond Bark 60% Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — 0 0 yes 1 bark
12 mozimo-almond-dragees-45 Mozimo Almond Dragees 45% Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 900.0 — -1 -1 yes 1 dragees
13 mozimo-almond-dragees-60 Mozimo Almond Dragees 60% Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 900.0 — -2 -2 yes 1 dragees
14 mozimo-almond-praline-bark Mozimo Almond Praline Bark Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 1200.0 — -2 -2 yes 1 bark, pralines-bark
15 mozimo-almond-slivers-rocks Mozimo Almond Slivers Rocks Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -3 -3 yes 1 rocks-orangettes
16 mozimo-assorted-bark-box Mozimo Assorted Bark Box Mozimo Hand Crafted Chocolates 1 [{"name":"Title","value":"1"}] 1200.0 — -1 -1 yes 1 bark
17 mozimo-carnival-celebration-l Mozimo Carnival Celebration (L) Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 3900.0 — 0 0 yes 1 gift-collection, diwali, hampers-boxes
18 mozimo-carnival-celebration-m Mozimo Carnival Celebration (M) Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 3000.0 — 0 0 yes 1 best-sellers, gift-collection, diwali, hampers-boxes
19 mozimo-carnival-celebration-s Mozimo Carnival Celebration (S) Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 2400.0 — -2 -2 yes 1 gift-collection, diwali, hampers-boxes
20 mozimo-celestial-l Mozimo Celestial Hamper Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 8500.0 — 0 0 yes 1 frontpage, best-sellers, new-arrivals, gift-collection, hampers-boxes
21 mozimo-celestial-s Mozimo Celestial (S) Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 4500.0 — -2 -2 yes 1 gift-collection, diwali, hampers-boxes
22 mozimo-chocolate-muesli-200gm Mozimo Chocolate Muesli 200gm Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 300.0 — -2 -2 yes 1 frontpage, new-arrivals
23 mozimo-chocolate-muesli-400gm Mozimo Chocolate Muesli 400gm Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 550.0 — -3 -3 yes 1 frontpage, best-sellers, new-arrivals
24 mozimo-crunchy-granola-bark-45 Mozimo Crunchy Granola Bark 45% Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -1 -1 yes 1 bark
25 mozimo-dark-chocolate-bar-60 Mozimo Dark Chocolate Bar 60% Mozimo Hand Crafted Chocolates 60gm [{"name":"Title","value":"60gm"}] 265.0 — -5 -5 yes 1 bars, best-sellers
26 mozimo-dark-chocolate-bar-72 Mozimo Dark Chocolate Bar 72% Mozimo Hand Crafted Chocolates 60gm [{"name":"Title","value":"60gm"}] 265.0 — -1 -1 yes 1 bars
27 mozimo-dark-chocolate-bar-85 Mozimo Dark Chocolate Bar 85% Mozimo Hand Crafted Chocolates 60gm [{"name":"Title","value":"60gm"}] 265.0 — -1 -1 yes 1 bars
28 mozimo-fruits-and-nuts-bark-60 Mozimo Fruits and Nuts Bark 60% Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -1 -1 yes 1 bark
29 mozimo-fruits-nuts-45 Mozimo Fruits & Nuts 45% Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -2 -2 yes 1 bark
30 mozimo-gems-bark Mozimo Gems Bark Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -1 -1 yes 1 bark
31 mozimo-hazelnut-bark-sugar-free-45 Mozimo Hazelnut Bark Sugar Free 45% Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 550.0 — -8 -8 yes 1 bark
32 mozimo-hazelnut-dragees-45 Mozimo Hazelnut Dragees 45% Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 900.0 — -1 -1 yes 1 dragees, best-sellers
33 mozimo-hazelnut-dragees-60 Mozimo Hazelnut Dragees 60% Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 900.0 — -2 -2 yes 1 dragees
34 mozimo-hazelnut-praline-bark Mozimo Hazelnut Praline Bark Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 1200.0 — -2 -2 yes 1 pralines-bark
35 mozimo-hazelnuts-spread Mozimo Single Origin 45% Hazelnut Spread Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 550.0 — -5 -5 yes 1 spreads, best-sellers
36 mozimo-honey-comb Mozimo Honey Comb Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 400.0 — -4 -4 yes 1 mozimo-delights
37 mozimo-hot-chocolate-premix Mozimo Hot Chocolate Premix Mozimo Hand Crafted Chocolates 250gm [{"name":"Title","value":"250gm"}] 825.0 — 0 0 yes 1 best-sellers, mozimo-delights
38 mozimo-matcha-bark Mozimo Matcha Bark Box 200gm Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 1600.0 — 0 0 yes 1 frontpage, best-sellers
39 mozimo-matcha-collection-box Mozimo Matcha Collection Box Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 3500.0 — 0 0 yes 1 frontpage, best-sellers, new-arrivals, gift-collection
40 mozimo-milk-45-tuilles Mozimo Milk 45% Tuilles Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -2 -2 yes 1 tuilles
41 mozimo-milk-chocolate-bar-45 Mozimo Milk Chocolate Bar 45% Mozimo Hand Crafted Chocolates 60gm [{"name":"Title","value":"60gm"}] 265.0 — -20 -20 yes 1 bars
42 mozimo-nutty-bar Mozimo Nutty Bar Mozimo Hand Crafted Chocolates 1 [{"name":"Title","value":"1"}] 500.0 — -3 -3 yes 1 bars, mozimo-delights
43 mozimo-orangettes Mozimo Orangettes Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -7 -7 yes 1 best-sellers, rocks-orangettes
44 mozimo-pecan-bark Mozimo Pecan Bark Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 1200.0 — -2 -2 yes 1 bark
45 mozimo-pistachio-dragees Mozimo Pistachio Dragees Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 900.0 — 0 0 yes 1 —
46 mozimo-praline-box-of-25 Mozimo Praline (Box of 25) Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 2700.0 — 0 0 yes 1 diwali
47 mozimo-praline-box-of-36 Mozimo Praline (Box of 36) Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 3700.0 — 0 0 yes 1 best-sellers, diwali
48 mozimo-praline-panetela Mozimo Praline Panetela Mozimo Hand Crafted Chocolates 12pc [{"name":"Title","value":"12pc"}] 1300.0 — -1 -1 yes 1 pralines
49 mozimo-praline-panetela-1 Mozimo Praline Panetela (Box of 12) Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 1300.0 — 0 0 yes 1 best-sellers, diwali
50 mozimo-raspberry-bark Mozimo Raspberry Bark Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -2 -2 yes 1 bark
51 mozimo-rice-crispy-bark Mozimo Rice crispy Bark Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 1200.0 — -1 -1 yes 1 bark
52 mozimo-salted-butter-crunch-bark-45 Mozimo Salted Butter Crunch Bark 45% Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -2 -2 yes 1 bark
53 mozimo-sugar-free-dark-72-chocolate-bar Mozimo Sugar Free Dark 72% Chocolate Bar Mozimo Hand Crafted Chocolates 60gm [{"name":"Title","value":"60gm"}] 330.0 — -6 -6 yes 1 bars, best-sellers, sugar-free-chocolate-bar
54 mozimo-sugar-free-milk-45-chocolate-bar Mozimo Sugar Free Milk 45% Chocolate Bar Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 330.0 — -1 -1 yes 1 bars
55 mozimo-white-chocolate-tuilles Mozimo White Chocolate Tuilles Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -1 -1 yes 1 tuilles
56 mozimo-whole-hazelnuts-bark-45 Mozimo Whole Hazelnuts Bark 45% Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -6 -6 yes 1 bark
57 mozimo-whole-hazelnuts-bark-60 Mozimo Whole Hazelnuts Bark 60% Mozimo Hand Crafted Chocolates 100gm [{"name":"Title","value":"100gm"}] 500.0 — -1 -1 yes 1 bark
58 pistachio-dragees Pistachio Dragees My Store Default Title [{"name":"Title","value":"Default Title"}] 900.0 — -1 -1 yes 1 dragees
59 pistachio-spread-60 Pistachio Spread 60% Mozimo Hand Crafted Chocolates 200gm [{"name":"Title","value":"200gm"}] 825.0 — -2 -2 yes 1 spreads, best-sellers
60 single-origin-coco-nibs Single Origin Coco Nibs Mozimo Hand Crafted Chocolates 150gm [{"name":"Title","value":"150gm"}] 440.0 — -2 -2 yes 1 mozimo-delights
61 spreads-box Spreads Box Mozimo Hand Crafted Chocolates Default Title [{"name":"Title","value":"Default Title"}] 1650.0 — 0 0 yes 1 diwali

3. Variant structure — the key question

Direct answer

No product in this store has more than one variant. All 61 of 61 products have exactly 1 variant; 0 products have 2 or more. variantsCount.count == 1 for every product, and total variant rows across the catalogue = 61. Every product without exception exposes a single option named Title with exactly one selected value.

How multi-size products are modelled: separate products, not variants

The option is literally Title (Shopify's default single-variant option), and selectedOptions always has exactly one entry:

selectedOptions value Products
[{"name":"Title","value":"Default Title"}] 22
[{"name":"Title","value":"100gm"}] 17
[{"name":"Title","value":"200gm"}] 11
[{"name":"Title","value":"60gm"}] 5
[{"name":"Title","value":"1"}] 3
[{"name":"Title","value":"250gm"}] 1
[{"name":"Title","value":"150gm"}] 1
[{"name":"Title","value":"12pc"}] 1

No product exposes an option named Size, Weight or Colour, and no product offers two selectable values. Where a weight appears anywhere, it lives in the variant title of a single-variant product (60gm, 100gm, 200gm, 250gm, 150gm, 12pc, or a bare 1), and the Title option carries it as its sole value.

Size-family products are separate products with separate handles. Actual titles, variant titles and prices, as evidence:

handle product title variant title price ₹ collections
mozimo-carnival-celebration-s Mozimo Carnival Celebration (S) Default Title 2400.0 gift-collection, diwali, hampers-boxes
mozimo-carnival-celebration-m Mozimo Carnival Celebration (M) Default Title 3000.0 best-sellers, gift-collection, diwali, hampers-boxes
mozimo-carnival-celebration-l Mozimo Carnival Celebration (L) Default Title 3900.0 gift-collection, diwali, hampers-boxes
mozimo-celestial-s Mozimo Celestial (S) Default Title 4500.0 gift-collection, diwali, hampers-boxes
mozimo-celestial-l Mozimo Celestial Hamper Default Title 8500.0 frontpage, best-sellers, new-arrivals, gift-collection, hampers-boxes

So Carnival S/M/L and Celestial S/L are 5 distinct products, each with one Default Title variant. The size marker is inconsistent in the titles: Celestial L's title is Mozimo Celestial Hamper with no (L), while its handle carries -l. Handles ending -s/-m/-l number exactly five: mozimo-carnival-celebration-{s,m,l}, mozimo-celestial-{s,l}.

Other size/dimension families are likewise separate products: mozimo-chocolate-muesli-200gm vs mozimo-chocolate-muesli-400gm, mozimo-praline-box-of-25 vs mozimo-praline-box-of-36, 1-kg-bark-box vs 200-gas-bark-box, and mozimo-dark-chocolate-bar-60 / -72 / -85 plus mozimo-milk-chocolate-bar-45.

Conclusion for both cases: separate products only — never variants. There is no product in this store that serves several sizes as selectable options.

Full variant list — all 61 variants

handle variant GID variant title selectedOptions price compareAtPrice availableForSale quantityAvailable
1-kg-bark-box gid://shopify/ProductVariant/49079272046838 Default Title [{"name":"Title","value":"Default Title"}] ₹5700.0 null true 0
200-gas-bark-box gid://shopify/ProductVariant/49079244456182 Default Title [{"name":"Title","value":"Default Title"}] ₹1200.0 null true 0
4-pralines-box gid://shopify/ProductVariant/47806947557622 Default Title [{"name":"Title","value":"Default Title"}] ₹440.0 null true -2
9-pralines-box gid://shopify/ProductVariant/47806947590390 1 [{"name":"Title","value":"1"}] ₹990.0 null true -3
bars-box gid://shopify/ProductVariant/49078921101558 Default Title [{"name":"Title","value":"Default Title"}] ₹1050.0 null true 0
cocoa-bean-shell gid://shopify/ProductVariant/47806947459318 100gm [{"name":"Title","value":"100gm"}] ₹220.0 null true 0
kunafa-chocolate-bar gid://shopify/ProductVariant/49079263101174 Default Title [{"name":"Title","value":"Default Title"}] ₹1600.0 null true -6
matcha-hazelnut-dragees-100gm gid://shopify/ProductVariant/50112861831414 Default Title [{"name":"Title","value":"Default Title"}] ₹550.0 null true -1
matcha-strawberry-praline gid://shopify/ProductVariant/49956310417654 Default Title [{"name":"Title","value":"Default Title"}] ₹440.0 null true -1
mozimo-almond-bark-45 gid://shopify/ProductVariant/47806946607350 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -2
mozimo-almond-bark-60 gid://shopify/ProductVariant/47806946574582 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true 0
mozimo-almond-dragees-45 gid://shopify/ProductVariant/47806946640118 200gm [{"name":"Title","value":"200gm"}] ₹900.0 null true -1
mozimo-almond-dragees-60 gid://shopify/ProductVariant/47806946869494 200gm [{"name":"Title","value":"200gm"}] ₹900.0 null true -2
mozimo-almond-praline-bark gid://shopify/ProductVariant/47806947197174 200gm [{"name":"Title","value":"200gm"}] ₹1200.0 null true -2
mozimo-almond-slivers-rocks gid://shopify/ProductVariant/47806946672886 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -3
mozimo-assorted-bark-box gid://shopify/ProductVariant/47806947623158 1 [{"name":"Title","value":"1"}] ₹1200.0 null true -1
mozimo-carnival-celebration-l gid://shopify/ProductVariant/49079154082038 Default Title [{"name":"Title","value":"Default Title"}] ₹3900.0 null true 0
mozimo-carnival-celebration-m gid://shopify/ProductVariant/49079147725046 Default Title [{"name":"Title","value":"Default Title"}] ₹3000.0 null true 0
mozimo-carnival-celebration-s gid://shopify/ProductVariant/49079145595126 Default Title [{"name":"Title","value":"Default Title"}] ₹2400.0 null true -2
mozimo-celestial-l gid://shopify/ProductVariant/49079213293814 Default Title [{"name":"Title","value":"Default Title"}] ₹8500.0 null true 0
mozimo-celestial-s gid://shopify/ProductVariant/49079192748278 Default Title [{"name":"Title","value":"Default Title"}] ₹4500.0 null true -2
mozimo-chocolate-muesli-200gm gid://shopify/ProductVariant/50137431736566 Default Title [{"name":"Title","value":"Default Title"}] ₹300.0 null true -2
mozimo-chocolate-muesli-400gm gid://shopify/ProductVariant/50137463685366 Default Title [{"name":"Title","value":"Default Title"}] ₹550.0 null true -3
mozimo-crunchy-granola-bark-45 gid://shopify/ProductVariant/47806946541814 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -1
mozimo-dark-chocolate-bar-60 gid://shopify/ProductVariant/47806947295478 60gm [{"name":"Title","value":"60gm"}] ₹265.0 null true -5
mozimo-dark-chocolate-bar-72 gid://shopify/ProductVariant/47806947098870 60gm [{"name":"Title","value":"60gm"}] ₹265.0 null true -1
mozimo-dark-chocolate-bar-85 gid://shopify/ProductVariant/47806947328246 60gm [{"name":"Title","value":"60gm"}] ₹265.0 null true -1
mozimo-fruits-and-nuts-bark-60 gid://shopify/ProductVariant/47806947852534 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -1
mozimo-fruits-nuts-45 gid://shopify/ProductVariant/47806946279670 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -2
mozimo-gems-bark gid://shopify/ProductVariant/47806946509046 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -1
mozimo-hazelnut-bark-sugar-free-45 gid://shopify/ProductVariant/47806947721462 100gm [{"name":"Title","value":"100gm"}] ₹550.0 null true -8
mozimo-hazelnut-dragees-45 gid://shopify/ProductVariant/47806946476278 200gm [{"name":"Title","value":"200gm"}] ₹900.0 null true -1
mozimo-hazelnut-dragees-60 gid://shopify/ProductVariant/47806946312438 200gm [{"name":"Title","value":"200gm"}] ₹900.0 null true -2
mozimo-hazelnut-praline-bark gid://shopify/ProductVariant/47806947000566 200gm [{"name":"Title","value":"200gm"}] ₹1200.0 null true -2
mozimo-hazelnuts-spread gid://shopify/ProductVariant/47806946771190 200gm [{"name":"Title","value":"200gm"}] ₹550.0 null true -5
mozimo-honey-comb gid://shopify/ProductVariant/47806947164406 100gm [{"name":"Title","value":"100gm"}] ₹400.0 null true -4
mozimo-hot-chocolate-premix gid://shopify/ProductVariant/47806946803958 250gm [{"name":"Title","value":"250gm"}] ₹825.0 null true 0
mozimo-matcha-bark gid://shopify/ProductVariant/50112483590390 Default Title [{"name":"Title","value":"Default Title"}] ₹1600.0 null true 0
mozimo-matcha-collection-box gid://shopify/ProductVariant/49947063976182 Default Title [{"name":"Title","value":"Default Title"}] ₹3500.0 null true 0
mozimo-milk-45-tuilles gid://shopify/ProductVariant/47806946935030 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -2
mozimo-milk-chocolate-bar-45 gid://shopify/ProductVariant/47806947361014 60gm [{"name":"Title","value":"60gm"}] ₹265.0 null true -20
mozimo-nutty-bar gid://shopify/ProductVariant/47806946738422 1 [{"name":"Title","value":"1"}] ₹500.0 null true -3
mozimo-orangettes gid://shopify/ProductVariant/47806947393782 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -7
mozimo-pecan-bark gid://shopify/ProductVariant/47806947033334 200gm [{"name":"Title","value":"200gm"}] ₹1200.0 null true -2
mozimo-pistachio-dragees gid://shopify/ProductVariant/47806946345206 200gm [{"name":"Title","value":"200gm"}] ₹900.0 null true 0
mozimo-praline-box-of-25 gid://shopify/ProductVariant/49079282696438 Default Title [{"name":"Title","value":"Default Title"}] ₹2700.0 null true 0
mozimo-praline-box-of-36 gid://shopify/ProductVariant/49079289741558 Default Title [{"name":"Title","value":"Default Title"}] ₹3700.0 null true 0
mozimo-praline-panetela gid://shopify/ProductVariant/47806947131638 12pc [{"name":"Title","value":"12pc"}] ₹1300.0 null true -1
mozimo-praline-panetela-1 gid://shopify/ProductVariant/49079278239990 Default Title [{"name":"Title","value":"Default Title"}] ₹1300.0 null true 0
mozimo-raspberry-bark gid://shopify/ProductVariant/47806946705654 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -2
mozimo-rice-crispy-bark gid://shopify/ProductVariant/47806947066102 200gm [{"name":"Title","value":"200gm"}] ₹1200.0 null true -1
mozimo-salted-butter-crunch-bark-45 gid://shopify/ProductVariant/47806947786998 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -2
mozimo-sugar-free-dark-72-chocolate-bar gid://shopify/ProductVariant/47806947655926 60gm [{"name":"Title","value":"60gm"}] ₹330.0 null true -6
mozimo-sugar-free-milk-45-chocolate-bar gid://shopify/ProductVariant/49080727372022 Default Title [{"name":"Title","value":"Default Title"}] ₹330.0 null true -1
mozimo-white-chocolate-tuilles gid://shopify/ProductVariant/47806946902262 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -1
mozimo-whole-hazelnuts-bark-45 gid://shopify/ProductVariant/47806946410742 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -6
mozimo-whole-hazelnuts-bark-60 gid://shopify/ProductVariant/47806946377974 100gm [{"name":"Title","value":"100gm"}] ₹500.0 null true -1
pistachio-dragees gid://shopify/ProductVariant/47801725092086 Default Title [{"name":"Title","value":"Default Title"}] ₹900.0 null true -1
pistachio-spread-60 gid://shopify/ProductVariant/47806947754230 200gm [{"name":"Title","value":"200gm"}] ₹825.0 null true -2
single-origin-coco-nibs gid://shopify/ProductVariant/47806947426550 150gm [{"name":"Title","value":"150gm"}] ₹440.0 null true -2
spreads-box gid://shopify/ProductVariant/49079091003638 Default Title [{"name":"Title","value":"Default Title"}] ₹1650.0 null true 0

sku is null/"" and barcode unset for every row above; weight is set (GRAMS) for every row; taxable and requiresShipping are true for every row.


4. Collections

16 collections, returned complete by collections(first: 50) with no next page. Every collection's product list was read separately and none was truncated (hasNextPage: false on a first: 250 products connection).

handle title products image description
bark Barks 15 — —
bars Bars 7 — Chocolate Bars
best-sellers Best Sellers 17 yes —
diwali Diwali 12 — Diwali Gifting Collection
dragees Dragees 6 — Dragees
frontpage Home page 5 — —
gift-collection Gift Collection 10 yes Discover the art of thoughtful gifting with Mozimo’s handcrafted chocolate gifting collect
hampers-boxes Hampers & Boxes 6 — —
mozimo-delights Mozimo Delights 5 — —
new-arrivals New Arrivals 4 yes —
pralines Pralines 4 — —
pralines-bark Pralines Bark 2 — —
rocks-orangettes Rocks / Orangettes 2 — —
spreads Spreads 2 — Spreads
sugar-free-chocolate-bar Sugar Free Chocolate Bar 1 — —
tuilles Tuilles 2 — —

Membership of the main collections

bark (Barks) — 15 mozimo-almond-bark-45, mozimo-almond-bark-60, mozimo-whole-hazelnuts-bark-45, mozimo-whole-hazelnuts-bark-60, mozimo-fruits-nuts-45, mozimo-fruits-and-nuts-bark-60, mozimo-gems-bark, mozimo-rice-crispy-bark, mozimo-raspberry-bark, mozimo-pecan-bark, mozimo-crunchy-granola-bark-45, mozimo-salted-butter-crunch-bark-45, mozimo-hazelnut-bark-sugar-free-45, mozimo-assorted-bark-box, mozimo-almond-praline-bark

bars (Bars) — 7 mozimo-dark-chocolate-bar-85, mozimo-dark-chocolate-bar-72, mozimo-dark-chocolate-bar-60, mozimo-milk-chocolate-bar-45, mozimo-sugar-free-dark-72-chocolate-bar, mozimo-sugar-free-milk-45-chocolate-bar, mozimo-nutty-bar

best-sellers (Best Sellers) — 17 mozimo-hot-chocolate-premix, 200-gas-bark-box, kunafa-chocolate-bar, mozimo-celestial-l, mozimo-carnival-celebration-m, mozimo-dark-chocolate-bar-60, mozimo-sugar-free-dark-72-chocolate-bar, mozimo-hazelnut-dragees-45, mozimo-orangettes, mozimo-praline-box-of-36, mozimo-praline-panetela-1, mozimo-hazelnuts-spread, pistachio-spread-60, mozimo-matcha-collection-box, mozimo-matcha-bark, matcha-hazelnut-dragees-100gm, mozimo-chocolate-muesli-400gm

diwali (Diwali) — 12 bars-box, spreads-box, mozimo-carnival-celebration-s, mozimo-carnival-celebration-m, mozimo-carnival-celebration-l, mozimo-celestial-s, 200-gas-bark-box, kunafa-chocolate-bar, 1-kg-bark-box, mozimo-praline-panetela-1, mozimo-praline-box-of-25, mozimo-praline-box-of-36

gift-collection (Gift Collection) — 10 mozimo-celestial-l, 1-kg-bark-box, mozimo-celestial-s, mozimo-carnival-celebration-l, mozimo-matcha-collection-box, mozimo-carnival-celebration-m, mozimo-carnival-celebration-s, 200-gas-bark-box, bars-box, 9-pralines-box

hampers-boxes (Hampers & Boxes) — 6 mozimo-celestial-s, mozimo-carnival-celebration-s, 1-kg-bark-box, mozimo-celestial-l, mozimo-carnival-celebration-l, mozimo-carnival-celebration-m

dragees (Dragees) — 6 mozimo-almond-dragees-60, mozimo-almond-dragees-45, mozimo-hazelnut-dragees-60, mozimo-hazelnut-dragees-45, pistachio-dragees, matcha-hazelnut-dragees-100gm

pralines (Pralines) — 4 9-pralines-box, matcha-strawberry-praline, 4-pralines-box, mozimo-praline-panetela

frontpage (Home page) — 5 mozimo-chocolate-muesli-400gm, mozimo-chocolate-muesli-200gm, mozimo-matcha-bark, mozimo-matcha-collection-box, mozimo-celestial-l

mozimo-delights (Mozimo Delights) — 5 mozimo-honey-comb, single-origin-coco-nibs, mozimo-nutty-bar, cocoa-bean-shell, mozimo-hot-chocolate-premix

new-arrivals (New Arrivals) — 4 mozimo-matcha-collection-box, mozimo-chocolate-muesli-200gm, mozimo-chocolate-muesli-400gm, mozimo-celestial-l

spreads (Spreads) — 2 mozimo-hazelnuts-spread, pistachio-spread-60

tuilles (Tuilles) — 2 mozimo-milk-45-tuilles, mozimo-white-chocolate-tuilles

rocks-orangettes (Rocks / Orangettes) — 2 mozimo-orangettes, mozimo-almond-slivers-rocks

pralines-bark (Pralines Bark) — 2 mozimo-almond-praline-bark, mozimo-hazelnut-praline-bark

sugar-free-chocolate-bar (Sugar Free Chocolate Bar) — 1 mozimo-sugar-free-dark-72-chocolate-bar

Products in no collection at all: mozimo-pistachio-dragees (published and availableForSale: true, yet in zero collections). mozimo-hazelnut-bark-sugar-free-45 sits in bark only and is not in sugar-free-chocolate-bar.

Divergence from src/data/catalog.ts

Hardcoded collection URLs found in catalog.ts (collections, signatures, giftingTabs, experienceTiles) versus live:

hardcoded url: live status live product count
/collections/bars exists 7
/collections/bark exists 15
/collections/pralines exists 4
/collections/spreads exists 2
/collections/dragees exists 6
/collections/tuilles exists 2
/collections/gift-collection exists 10
/collections/best-sellers exists 17
/collections/diwali exists 12
/collections/all not returned by collection(handle:"all") (null) — (Shopify's built-in "all" pseudo-collection is not exposed via this handle on the Storefront API)

Named-collection divergences:

catalog.ts collection name hardcoded url live collection with that name Divergence
Bars /collections/bars bars — "Bars" name matches; live count 7
Barks /collections/bark bark — "Barks" name matches; live count 15
Pralines /collections/pralines pralines — "Pralines" name matches; live count 4
Spreads /collections/spreads spreads — "Spreads" name matches; live count 2
Dragees /collections/dragees dragees — "Dragees" name matches; live count 6
Tuilles & Rocks /collections/tuilles tuilles — "Tuilles" and rocks-orangettes — "Rocks / Orangettes" merged in code, split in Shopify: mozimo-orangettes and mozimo-almond-slivers-rocks live in rocks-orangettes, not tuilles
Gifting /collections/gift-collection gift-collection — "Gift Collection" name matches; live count 10

signatures in catalog.ts points only at existing handles (gift-collection, pralines, bars, all) but its entries "The Signature Box", "The Praline Collection", "The Dark Collection", "The Festive Collection", "The Chocolate Bar" and "The Mozimo Gifts" have no corresponding collection objects in the store — they are editorial constructs, not Shopify collections. Seven Shopify collections have a live counterpart referenced from code: bars, bark, pralines, spreads, dragees, tuilles, plus gift-collection for the Gifting entry.

Collections that exist in Shopify but are absent from catalog.ts entirely (no hardcoded url references them):

best-sellers (17), diwali (12), hampers-boxes (6), frontpage (5), mozimo-delights (5), new-arrivals (4), pralines-bark (2), rocks-orangettes (2, but its products are miscategorised under tuilles in code), sugar-free-chocolate-bar (1). Only best-sellers and diwali appear in code at all, and only as CTA URLs inside giftingTabs, not as data.

giftingTabs in catalog.ts (7 tabs; 4 with product lists):

tab id name note hardcoded product handles all handles live?
signature Signature From ₹265 mozimo-dark-chocolate-bar-85, 9-pralines-box, bars-box yes
best-sellers Best Sellers From ₹825 pistachio-spread-60, mozimo-almond-dragees-60, kunafa-chocolate-bar, spreads-box yes
exquisite Exquisite From ₹2,400 mozimo-carnival-celebration-s, mozimo-carnival-celebration-m yes
premium Premium From ₹3,900 mozimo-carnival-celebration-l, mozimo-celestial-s yes
seasonal Seasonal Limited editions none (mode: "seasonal") n/a
corporate Corporate & Bulk At scale none (mode: "enquiry") n/a
bespoke Bespoke Gifting Made to order none (mode: "enquiry") n/a

Tab CTAs point to /collections/gift-collection (all but best-sellers, which points to /collections/best-sellers). Live best-sellers contains 17 products; the code's tab lists only 4 of them.

Hardcoded product handles in catalog.ts (bestsellers, gifting, pantry, giftingTabs, seasonal) versus live — all 15 resolve:

handle live title live price ₹ in code as
mozimo-dark-chocolate-bar-85 Mozimo Dark Chocolate Bar 85% 265.0 bestsellers, signature tab
9-pralines-box 9 Pralines Box 990.0 bestsellers, signature tab
pistachio-spread-60 Pistachio Spread 60% 825.0 bestsellers, best-sellers tab
mozimo-almond-dragees-60 Mozimo Almond Dragees 60% 900.0 bestsellers, best-sellers tab
kunafa-chocolate-bar Kunafa Chocolate Bar 1600.0 bestsellers, best-sellers tab
mozimo-carnival-celebration-s Mozimo Carnival Celebration (S) 2400.0 bestsellers, gifting, exquisite tab
mozimo-carnival-celebration-m Mozimo Carnival Celebration (M) 3000.0 gifting, exquisite tab
mozimo-carnival-celebration-l Mozimo Carnival Celebration (L) 3900.0 gifting, premium tab
mozimo-celestial-s Mozimo Celestial (S) 4500.0 gifting, premium tab
bars-box Bars Box 1050.0 gifting, signature tab
spreads-box Spreads Box 1650.0 gifting, best-sellers tab
single-origin-coco-nibs Single Origin Coco Nibs 440.0 pantry
cocoa-bean-shell Cocoa Bean Shell 220.0 pantry
mozimo-hot-chocolate-premix Mozimo Hot Chocolate Premix 825.0 pantry
mozimo-honey-comb Mozimo Honey Comb 400.0 pantry

Also referenced in code: rakhi-bark-box-200gm (as "/products/rakhi-bark-box-200gm") — this handle does not exist in the live catalogue. By contrast the live catalogue has 46 products that appear nowhere in catalog.ts, including whole families with no code representation: the entire matcha line (mozimo-matcha-bark, mozimo-matcha-collection-box, matcha-hazelnut-dragees-100gm, matcha-strawberry-praline), the muesli line (mozimo-chocolate-muesli-200gm / -400gm), the 1 kg and 200 g bark boxes, mozimo-celestial-l (₹8500, the most expensive product), the praline boxes of 25/36, the sugar-free bars and bark, and 15 of the 17 best-sellers entries.


5. Discounts, gift cards, selling plans

All of the following were queried explicitly against 2026-10.

Thing Query attempted Result
Discount codes (list) discountCodes(first: 5) on QueryRoot Field does not exist: Field 'discountCodes' doesn't exist on type 'QueryRoot'
Discount nodes (list) discountNodes(first: 5) on QueryRoot Field does not exist: Field 'discountNodes' doesn't exist on type 'QueryRoot'
Gift cards (list) giftCards(first: 5) on QueryRoot Field does not exist: Field 'giftCards' doesn't exist on type 'QueryRoot'
Gift card products Product.isGiftCard over all 61 products false × 61 — no gift-card product exists
Selling plans Product.sellingPlanGroups(first: 5) ACCESS_DENIED — requires unauthenticated_read_selling_plans (minted token lacks it)
Selling plans (indirect) Product.requiresSellingPlan over all 61 products false × 61 — no product requires a selling plan
Cart discount codes Cart.discountCodes (CartDiscountCode { code, applicable }) Field exists on Cart; only reachable with a live cart id. No code values are enumerable
Cart applied discounts Cart.discountApplications, Cart.appliedGiftCards Fields exist on Cart; only reachable with a live cart id
Empty cart probe cartCreate(input: { lines: [] }) Succeeded (id returned, no userErrors). Nothing configured can be read without adding lines

Findings, stated as absence where that is the evidence:

  • The Storefront API at 2026-10 exposes no queryable list of discount codes and no queryable list/type of automatic discounts. Discount data is only reachable per-cart (Cart.discountCodes / Cart.discountApplications). Whether the store has any discount configured is therefore unverified from the Storefront API — it cannot be enumerated.
  • No gift cards: no QueryRoot.giftCards, and no product with isGiftCard: true. This is a genuine absence, not a scope error.
  • No subscription/selling plans in evidence: requiresSellingPlan is false for all 61 products, and the one query that could confirm selling-plan groups is scope-blocked. The strongest honest statement is: no product requires a selling plan; selling-plan groups are unverified (access denied).
  • Shop.subscriptionPolicy and Shop.termsOfSale exist as policies, which only indicates the store has a subscription policy text configured, not that any selling plan exists.

6. Metafield coverage

Coverage was measured by querying product metafields with an explicit identifiers list (the Storefront API's Product.metafields requires identifiers and cannot be paginated — first: is rejected with "does not accept argument 'first'", and empty identifiers return []). The identifier list covered every key src/lib/shopify.ts queries, plus plausible variants. Any metafield key outside that list cannot be enumerated through the Storefront API and would show as absent here — flagged as unverified.

Keys queried: custom.tagline, custom.ingredients, custom.ingredients_list, custom.storage, custom.energy_kcal, custom.protein_g, custom.total_fat_g, custom.saturated_fat_g, custom.carbohydrate_g, custom.sugar_g, custom.added_sugar_g, custom.sodium_mg, custom.nutrition, custom.weight, custom.allergens, custom.shelf_life, facts.nutrition, facts.ingredients, facts.storage, facts.allergens, facts.tagline.

Which keys are actually populated (product level)

Key Type Products populated (of 61)
custom.ingredients multi_line_text_field 20
custom.energy_kcal number_decimal 20
custom.protein_g number_decimal 20
custom.total_fat_g number_decimal 20
custom.saturated_fat_g number_decimal 20
custom.sodium_mg number_decimal 20
custom.carbohydrate_g number_decimal 20
custom.sugar_g number_decimal 18
custom.added_sugar_g number_decimal 17
custom.tagline single_line_text_field 1
custom.storage — 0
custom.ingredients_list — 0
custom.nutrition — 0
custom.weight / custom.allergens / custom.shelf_life — 0
facts.nutrition — 0
facts.ingredients — 0
facts.storage — 0
facts.allergens / facts.tagline — 0

The facts.* namespace is completely empty across the catalogue. The compat path in shapeProduct (facts.nutrition JSON array, facts.ingredients, facts.storage) will never fire for any product.

No collection-level metafields were populated either (the same identifier list was queried on all 16 collections; every entry was null).

Products with NO metafields at all: 41 of 61

Products with zero populated metafields from the queried list, so both ingredients and nutrition are absent (those are the fields shown on product pages). All 41, alphabetical — this is the same list that appears as 0/8 in the per-product table at the end of this section:

1-kg-bark-box, 200-gas-bark-box, 9-pralines-box, bars-box, cocoa-bean-shell, kunafa-chocolate-bar, matcha-strawberry-praline, mozimo-almond-bark-45, mozimo-almond-bark-60, mozimo-almond-praline-bark, mozimo-assorted-bark-box, mozimo-carnival-celebration-l, mozimo-carnival-celebration-m, mozimo-carnival-celebration-s, mozimo-celestial-l, mozimo-celestial-s, mozimo-crunchy-granola-bark-45, mozimo-fruits-and-nuts-bark-60, mozimo-fruits-nuts-45, mozimo-gems-bark, mozimo-hazelnut-bark-sugar-free-45, mozimo-hazelnut-praline-bark, mozimo-honey-comb, mozimo-matcha-bark, mozimo-matcha-collection-box, mozimo-milk-45-tuilles, mozimo-nutty-bar, mozimo-pecan-bark, mozimo-praline-box-of-25, mozimo-praline-box-of-36, mozimo-praline-panetela, mozimo-praline-panetela-1, mozimo-raspberry-bark, mozimo-rice-crispy-bark, mozimo-salted-butter-crunch-bark-45, mozimo-white-chocolate-tuilles, mozimo-whole-hazelnuts-bark-45, mozimo-whole-hazelnuts-bark-60, pistachio-dragees, single-origin-coco-nibs, spreads-box

Products with ingredient + nutrition coverage: 20 of 61

All 20 carry custom.ingredients and a majority of the eight nutrient fields. custom.tagline is populated on exactly one product in the whole store: 4-pralines-box = "Roasted almonds coated in our 45% dark milk chocolate".

The 20 covered handles, alphabetical:

4-pralines-box, matcha-hazelnut-dragees-100gm, mozimo-almond-dragees-45, mozimo-almond-dragees-60, mozimo-almond-slivers-rocks, mozimo-chocolate-muesli-200gm, mozimo-chocolate-muesli-400gm, mozimo-dark-chocolate-bar-60, mozimo-dark-chocolate-bar-72, mozimo-dark-chocolate-bar-85, mozimo-hazelnut-dragees-45, mozimo-hazelnut-dragees-60, mozimo-hazelnuts-spread, mozimo-hot-chocolate-premix, mozimo-milk-chocolate-bar-45, mozimo-orangettes, mozimo-pistachio-dragees, mozimo-sugar-free-dark-72-chocolate-bar, mozimo-sugar-free-milk-45-chocolate-bar, pistachio-spread-60

Partial nutrition — fewer than 8 of 8 nutrient fields:

handle fields present missing
mozimo-sugar-free-dark-72-chocolate-bar 6/8 — energy_kcal, protein_g, total_fat_g, saturated_fat_g, carbohydrate_g, sodium_mg custom.sugar_g, custom.added_sugar_g
mozimo-sugar-free-milk-45-chocolate-bar 6/8 — same six custom.sugar_g, custom.added_sugar_g
pistachio-spread-60 7/8 — adds sugar_g custom.added_sugar_g

Full nutrition — 17 products carry all 8 nutrient fields.

Sample of a complete record (mozimo-dark-chocolate-bar-85):

custom.ingredients   = "Cocoa Mass\nCocoa Butter\nSugar Grain\nSalt White\n"
custom.energy_kcal   = 485.66   custom.protein_g       = 11.01
custom.total_fat_g   = 41.03    custom.saturated_fat_g = 24.57
custom.carbohydrate_g= 42.39    custom.sugar_g         = 14.9
custom.added_sugar_g = 14.9     custom.sodium_mg       = 38.76

Sample of a partial record (mozimo-sugar-free-dark-72-chocolate-bar):

custom.ingredients   = "Cocoa Mass\nCocoa Butter\nErythritol\nStevia\nSalt White\n"
custom.energy_kcal   = 374.37   custom.protein_g       = 9.15
custom.total_fat_g   = 35.46    custom.saturated_fat_g = 21.22
custom.carbohydrate_g= 50.72    custom.sodium_mg       = 38.76
custom.sugar_g       = (absent) custom.added_sugar_g   = (absent)

Per-product metafield table (all 61 products; tagline = custom.tagline, ingr = custom.ingredients, nutr = number of the 8 custom.* nutrient fields present, facts / other = any facts.* or other keys found):

handle tagline ingr nutr facts.* other keys
1-kg-bark-box — — 0/8 — —
200-gas-bark-box — — 0/8 — —
4-pralines-box yes yes 8/8 — custom.tagline
9-pralines-box — — 0/8 — —
bars-box — — 0/8 — —
cocoa-bean-shell — — 0/8 — —
kunafa-chocolate-bar — — 0/8 — —
matcha-hazelnut-dragees-100gm — yes 8/8 — —
matcha-strawberry-praline — — 0/8 — —
mozimo-almond-bark-45 — — 0/8 — —
mozimo-almond-bark-60 — — 0/8 — —
mozimo-almond-dragees-45 — yes 8/8 — —
mozimo-almond-dragees-60 — yes 8/8 — —
mozimo-almond-praline-bark — — 0/8 — —
mozimo-almond-slivers-rocks — yes 8/8 — —
mozimo-assorted-bark-box — — 0/8 — —
mozimo-carnival-celebration-l — — 0/8 — —
mozimo-carnival-celebration-m — — 0/8 — —
mozimo-carnival-celebration-s — — 0/8 — —
mozimo-celestial-l — — 0/8 — —
mozimo-celestial-s — — 0/8 — —
mozimo-chocolate-muesli-200gm — yes 8/8 — —
mozimo-chocolate-muesli-400gm — yes 8/8 — —
mozimo-crunchy-granola-bark-45 — — 0/8 — —
mozimo-dark-chocolate-bar-60 — yes 8/8 — —
mozimo-dark-chocolate-bar-72 — yes 8/8 — —
mozimo-dark-chocolate-bar-85 — yes 8/8 — —
mozimo-fruits-and-nuts-bark-60 — — 0/8 — —
mozimo-fruits-nuts-45 — — 0/8 — —
mozimo-gems-bark — — 0/8 — —
mozimo-hazelnut-bark-sugar-free-45 — — 0/8 — —
mozimo-hazelnut-dragees-45 — yes 8/8 — —
mozimo-hazelnut-dragees-60 — yes 8/8 — —
mozimo-hazelnut-praline-bark — — 0/8 — —
mozimo-hazelnuts-spread — yes 8/8 — —
mozimo-honey-comb — — 0/8 — —
mozimo-hot-chocolate-premix — yes 8/8 — —
mozimo-matcha-bark — — 0/8 — —
mozimo-matcha-collection-box — — 0/8 — —
mozimo-milk-45-tuilles — — 0/8 — —
mozimo-milk-chocolate-bar-45 — yes 8/8 — —
mozimo-nutty-bar — — 0/8 — —
mozimo-orangettes — yes 8/8 — —
mozimo-pecan-bark — — 0/8 — —
mozimo-pistachio-dragees — yes 8/8 — —
mozimo-praline-box-of-25 — — 0/8 — —
mozimo-praline-box-of-36 — — 0/8 — —
mozimo-praline-panetela — — 0/8 — —
mozimo-praline-panetela-1 — — 0/8 — —
mozimo-raspberry-bark — — 0/8 — —
mozimo-rice-crispy-bark — — 0/8 — —
mozimo-salted-butter-crunch-bark-45 — — 0/8 — —
mozimo-sugar-free-dark-72-chocolate-bar — yes 6/8 — —
mozimo-sugar-free-milk-45-chocolate-bar — yes 6/8 — —
mozimo-white-chocolate-tuilles — — 0/8 — —
mozimo-whole-hazelnuts-bark-45 — — 0/8 — —
mozimo-whole-hazelnuts-bark-60 — — 0/8 — —
pistachio-dragees — — 0/8 — —
pistachio-spread-60 — yes 7/8 — —
single-origin-coco-nibs — — 0/8 — —
spreads-box — — 0/8 — —

7. Currency and markets

Signal Value
Store currency INR (from paymentSettings.currencyCode)
Presentment currencies enabled ["INR"] — one
Shop.moneyFormat Rs. {{amount}}
Localization.country IN, currency INR (symbol ₹)
Localization.language EN
availableCountries only IN (India)
availableLanguages only EN
shipsToCountries 29 codes — AE, AT, AU, BE, CA, CH, CZ, DE, DK, ES, FI, FR, GB, HK, IE, IL, IN, IT, JP, KR, MY, NL, NO, NZ, PL, PT, SE, SG, US
Currency code seen on every money field INR on all 61 product prices, all 61 variant prices, and both price ranges — no second currency anywhere

The store returns a single currency (INR) at a single localization country (India). Shopify Markets is either not configured or not exposing any additional market through the Storefront API with this token: enabledPresentmentCurrencies has one entry, availableCountries has one entry, and no query returned a currency code other than INR.

There is one visible asymmetry: Shop.shipsToCountries lists 29 destinations including the US, GB, AU, SG, AE and most of the EU, while Localization.availableCountries exposes only IN and the shipping-policy body says the website "currently ships to addresses within India only" and "We are currently delivering Pan India". The Storefront API does not reconcile these. Whether a real multi-country market exists in admin is unverified; all the API will price or localize for is INR/IN.


Appendix — what could not be determined

Stated explicitly rather than guessed:

  1. Discount codes / automatic discounts — no Storefront query exists (discountCodes, discountNodes are undefined fields on QueryRoot). Presence or absence is unverified.
  2. Selling-plan groups — Product.sellingPlanGroups is ACCESS_DENIED with the minted token (unauthenticated_read_selling_plans). Only the negative signal requiresSellingPlan: false × 61 is available. Unverified.
  3. Real payment providers / gateways, UPI, COD — not exposed by the Storefront API at all. Unverified.
  4. Metafield keys outside the queried identifier list — Product.metafields cannot be paginated or enumerated at 2026-10; only known keys can be read. Any additional custom keys on products are invisible to this capture. Unverified.
  5. Pickup locations — QueryRoot.locations ACCESS_DENIED (unauthenticated_read_product_pickup_locations). Unverified.
  6. Whether negative inventory is an intentional "made to order" model — the API shows quantityAvailable of −1 to −20 with availableForSale: true on all 61 products. The API does not explain it. Not determinable.
  7. Whether a second Shopify Market exists in admin — nothing on the Storefront API evidences it. Unverified.
  8. acceptedCardBrands / supportedDigitalWallets being empty — most likely a token-scope artifact, not a store setting. Unverified.
  9. Static SHOPIFY_STOREFRONT_ACCESS_TOKEN token's scopes — this capture used the minted token; the static token may have a different (possibly wider) scope set. Unverified.