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.
95 KiB
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, minted2026-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 == 1for every product, and total variant rows across the catalogue = 61. Every product without exception exposes a single option namedTitlewith 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 withisGiftCard: true. This is a genuine absence, not a scope error. - No subscription/selling plans in evidence:
requiresSellingPlanisfalsefor 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.subscriptionPolicyandShop.termsOfSaleexist 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:
- Discount codes / automatic discounts — no Storefront query exists
(
discountCodes,discountNodesare undefined fields onQueryRoot). Presence or absence is unverified. - Selling-plan groups —
Product.sellingPlanGroupsis ACCESS_DENIED with the minted token (unauthenticated_read_selling_plans). Only the negative signalrequiresSellingPlan: false× 61 is available. Unverified. - Real payment providers / gateways, UPI, COD — not exposed by the Storefront API at all. Unverified.
- Metafield keys outside the queried identifier list —
Product.metafieldscannot 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. - Pickup locations —
QueryRoot.locationsACCESS_DENIED (unauthenticated_read_product_pickup_locations). Unverified. - Whether negative inventory is an intentional "made to order" model — the
API shows
quantityAvailableof −1 to −20 withavailableForSale: trueon all 61 products. The API does not explain it. Not determinable. - Whether a second Shopify Market exists in admin — nothing on the Storefront API evidences it. Unverified.
acceptedCardBrands/supportedDigitalWalletsbeing empty — most likely a token-scope artifact, not a store setting. Unverified.- Static
SHOPIFY_STOREFRONT_ACCESS_TOKENtoken's scopes — this capture used the minted token; the static token may have a different (possibly wider) scope set. Unverified.