Storeware Docs
Storefront GraphQL

Objects

Every object type the storefront graph returns, and its fields.

Collection

FieldTypeDescription
descriptionString
handleString!
idID!
titleString!

Metafield

A custom field this shop defined, and this product’s answer.

FieldTypeDescription
keyString!
labelString!The merchant’s own name for the field. What a page should print.
namespaceString!
typeString!One of single_line_text, multi_line_text, integer, decimal, boolean, date, url.
valueString!The value as text. Lists are joined; use values to get them apart.
values[String!]The entries, for a list field. Null when the field holds a single value.

Money

An amount in the minor unit of a currency.

FieldTypeDescription
amountMinorUnits!
compareAtAmountMinorUnitsWhat this used to cost, when the merchant has set one.
currencyCurrencyCode!
listAmountMinorUnitsThe shop's public price, when an agreement means this viewer pays less. Null for everybody else. Anything republishing a price should send this rather than amount, which is one buyer's negotiated figure.

PageInfo

FieldTypeDescription
endCursorString
hasNextPageBoolean!
hasPreviousPageBoolean!
startCursorString
truncatedBoolean!True when this listing holds products no cursor can reach, so a client can say so rather than ending the list in silence.

PriceBreak

What buying more costs, under this viewer's agreement.

FieldTypeDescription
amountMinorUnits!
minQuantityInt!The quantity at which this price starts applying.

Product

A product as a shopper sees it. Drafts and archived products are not reachable.

FieldTypeDescription
descriptionStringThe enriched copy where it exists, the merchant’s own where it does not. Enriched copy wins because it was written for a shopper.
faqs[ProductFaq!]!
fromPriceMoneyThe lowest live price across variants. Null when nothing is purchasable.
handleString!
idID!
images[ProductImage!]!
inStockBoolean!
metafields(keys)[Metafield!]!Custom fields, by name. Address one as "namespace.key", or by its flat key where the namespace is "custom".
productTypeString
seoDescriptionString
seoTitleString
summaryStringA short line that reads better on a card than a full description.
tags[String!]!
titleString!
variants[ProductVariant!]!
vendorString

metafields takes:

ArgumentTypeDescription
keys[String!]!Up to 25 field names. A name the shop has not defined is left out.

ProductFaq

A question shoppers ask about this product, and its answer.

FieldTypeDescription
answerString!
questionString!

ProductImage

FieldTypeDescription
altString
positionInt!
urlString!

ProductVariant

FieldTypeDescription
availableInt!Units that can be bought right now, net of what other baskets are holding.
idID!
imageVariantImageThe picture to show when this variant is picked. Its own where the merchant photographed it, and the product’s first otherwise, so a picker never goes blank. Null only for a product with no pictures at all.
inStockBoolean!
options[SelectedOption!]!The option values that identify this variant, for a picker.
orderIncrementIntThe step a quantity has to land on, counted from orderMinimum. Null for no rule.
orderMaximumIntThe most one buyer may take at once. Null for no rule.
orderMinimumIntThe fewest the shop will sell at once. Null for no rule.
priceMoneyThe live price, read from Postgres in this request. Null when this variant is not purchasable.
priceBreaks[PriceBreak!]!What buying more costs. Empty unless an agreement prices this viewer.
skuString
titleString!

SelectedOption

FieldTypeDescription
nameString!
valueString!

Shop

FieldTypeDescription
collection(handle)Collection
collections[Collection!]!
product(handle)ProductOne product by handle. Null for a draft, an archived one, or nothing at all.
products(after, before, collection, first, last)ShopProductsConnection!Published products, in a stable order that survives the catalogue changing.

collection takes:

ArgumentTypeDescription
handleString!

product takes:

ArgumentTypeDescription
handleString!

products takes:

ArgumentTypeDescription
afterString
beforeString
collectionStringLimit to one collection, by its handle.
firstInt
lastInt

ShopProductsConnection

FieldTypeDescription
edges[ShopProductsConnectionEdge!]!
pageInfoPageInfo!

ShopProductsConnectionEdge

FieldTypeDescription
cursorString!
nodeProduct!

VariantImage

FieldTypeDescription
altString
urlString!

On this page