# Product A product in the store, including details, variants, images, pricing, and reviews. ## Type Definition ```graphql type Product { handle: String seoDescription: String seoTitle: String seoKeywords: String id: Int combinedListing: CombinedListing firstAvailableVariant: ProductVariant hasOnlyDefaultVariant: Boolean variants: [ProductVariant] options: [String] optionsWithValues: [ProductOption] optionsByHandle: [ProductOption] defaultOrSelectedVariant: ProductVariant tags: [String] customFields: [CustomField] inPreview: Boolean isAvailable: Boolean isDirectlyBuyable: Boolean title: String manufacturer: Manufacturer shortDescription: String description: String images: [Image] videos: [Video] featuredImage: Image featuredVideo: Video compatible: [Product] similar: [Product] related: [Product] deliverer: Deliverer productGroups: [ProductGroup] returnPolicyTimeLimit: Int rating: Float reviewCount: Int maxRating: Int reviews: [Review] attachments: [Attachment] reviewsAreEnabled: Boolean reviewsRequireAccount: Boolean reviewsRequirePurchase: Boolean reviewsRequireApproval: Boolean taxonomy: ProductTaxonomy createdAt: String updatedAt: String rate: String inCustomersWishlist: String customerHasReviewed: String customerCanReview: String customerHasPurchased: String metafields: [Metafield]! metafield: Metafield } ``` ## Fields | Field | Type | Description | |-------|------|-------------| | handle | String | Returns the handle. | | seoDescription | String | Returns description for search engines. | | seoTitle | String | Returns title for search engines. | | seoKeywords | String | Returns keywords for search engines. | | id | Int | Returns the id. | | combinedListing | CombinedListing | Returns the combined listing. | | firstAvailableVariant | ProductVariant | Returns the first available variant. | | hasOnlyDefaultVariant | Boolean | Returns true if product has only default variant. | | variants | [ProductVariant] | Returns the variants. | | options | [String] | Returns the options handles. | | optionsWithValues | [ProductOption] | Returns array of options. | | optionsByHandle | [ProductOption] | Returns array of options indexed by handle. | | defaultOrSelectedVariant | ProductVariant | Return the selected variant or the default one if none is selected. | | tags | [String] | Returns product tags. | | customFields | [CustomField] | Returns product custom fields as CustomFieldDrop objects. | | inPreview | Boolean | Returns true if product is in preview. | | isAvailable | Boolean | Returns true if product is available for purchase. | | isDirectlyBuyable | Boolean | Returns true if product can be bought without selecting any attributes. | | title | String | Returns the title. | | manufacturer | Manufacturer | Returns the manufacturer. | | shortDescription | String | Returns the short description. | | description | String | Returns the description. | | images | [Image] | Returns the images. | | videos | [Video] | Returns the videos. | | featuredImage | Image | Returns product featured (first available) image. | | featuredVideo | Video | Returns the featured (first available) video. | | compatible | [Product] | Returns the compatible products. | | similar | [Product] | Returns the similar products. | | related | [Product] | Returns the related products. | | deliverer | Deliverer | Returns the deliverer. | | productGroups | [ProductGroup] | Returns the associated product groups. | | returnPolicyTimeLimit | Int | Returns the product return policy time limit in days. | | rating | Float | Returns the rating. | | reviewCount | Int | Returns the review count. | | maxRating | Int | Returns the maximum rating. | | reviews | [Review] | Returns the reviews. | | attachments | [Attachment] | Returns the product attachments as AttachmentDrop objects. | | reviewsAreEnabled | Boolean | Returns true if reviews are enabled for this product. | | reviewsRequireAccount | Boolean | Returns true if creating a review for this product requires an account. | | reviewsRequirePurchase | Boolean | Returns true if product must be purchased before review can be made. | | reviewsRequireApproval | Boolean | Returns true if reviews are approved before published. | | taxonomy | ProductTaxonomy | Returns the taxonomy. | | createdAt | String | Returns the creation date. | | updatedAt | String | Returns the last updated date. | | rate | String | Returns the tax rate. | | inCustomersWishlist | String | Returns true if product is in customer's wishlist. | | customerHasReviewed | String | Returns true if customer has reviewed the product. | | customerCanReview | String | Returns true if customer can review the product. | | customerHasPurchased | String | Returns true if customer has purchased the product. | | metafields | [Metafield]! | Metafields stored on this resource. | | metafield | Metafield | A single metafield by namespace and key. | ## Relationships The Product type represents a store product and maintains relationships with multiple other types in the schema. It references variants through the `variants` field and `firstAvailableVariant` field, which return `ProductVariant` objects. Product images and videos are accessible through the `images`, `videos`, `featuredImage`, and `featuredVideo` fields, which return `Image` and `Video` objects respectively. Products can be grouped through the `productGroups` field, returning `ProductGroup` objects. Product reviews are available through the `reviews` field, returning `Review` objects. Related products are accessible through `compatible`, `similar`, and `related` fields which return other `Product` objects. Additional relationships include `manufacturer` (`Manufacturer`), `deliverer` (`Deliverer`), and `taxonomy` (`ProductTaxonomy`). Product options are returned through `optionsWithValues` and `optionsByHandle` fields as `ProductOption` objects, and custom fields are accessible through the `customFields` field as `CustomField` objects. ## Example ```graphql { product(id: 12345) { id handle title seoTitle seoDescription description shortDescription rating reviewCount isAvailable isDirectlyBuyable featuredImage { src alt } variants { id title price } optionsWithValues { name values } manufacturer { name } reviews { title rating content } taxonomy { categoryHandle } } } ``` ## Implements This type does not implement any interfaces. ## Related Types - [CombinedListing](/reference/storefront/1.3.0/objects/combined-listing) - [ProductVariant](/reference/storefront/1.3.0/objects/product-variant) - [ProductOption](/reference/storefront/1.3.0/objects/product-option) - [CustomField](/reference/storefront/1.3.0/objects/custom-field) - [Manufacturer](/reference/storefront/1.3.0/objects/manufacturer) - [Image](/reference/storefront/1.3.0/objects/image) - [Video](/reference/storefront/1.3.0/objects/video) - [Deliverer](/reference/storefront/1.3.0/objects/deliverer) - [ProductGroup](/reference/storefront/1.3.0/objects/product-group) - [Review](/reference/storefront/1.3.0/objects/review) - [Attachment](/reference/storefront/1.3.0/objects/attachment) - [ProductTaxonomy](/reference/storefront/1.3.0/objects/product-taxonomy) - [Metafield](/reference/storefront/1.3.0/objects/metafield)