--- title: ProductVariant - GraphQL Admin description: >- The `ProductVariant` object represents a version of a [product](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product) that comes in more than one [option](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductOption), such as size or color. For example, if a merchant sells t-shirts with options for size and color, then a small, blue t-shirt would be one product variant and a large, blue t-shirt would be another. Use the `ProductVariant` object to manage the full lifecycle and configuration of a product's variants. Common use cases for using the `ProductVariant` object include: - Tracking inventory for each variant - Setting unique prices for each variant - Assigning barcodes and SKUs to connect variants to fulfillment services - Attaching variant-specific images and media - Setting delivery and tax requirements - Supporting product bundles, subscriptions, and selling plans A `ProductVariant` is associated with a parent [`Product`](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product) object. `ProductVariant` serves as the central link between a product's merchandising configuration, inventory, pricing, fulfillment, and sales channels within the GraphQL Admin API schema. Each variant can reference other GraphQL types such as: - [`InventoryItem`](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryItem): Used for inventory tracking - [`Image`](https://shopify.dev/docs/api/admin-graphql/latest/objects/Image): Used for variant-specific images - [`SellingPlanGroup`](https://shopify.dev/docs/api/admin-graphql/latest/objects/SellingPlanGroup): Used for subscriptions and selling plans Learn more about [Shopify's product model](https://shopify.dev/docs/apps/build/graphql/migrate/new-product-model/product-model-components). api_version: 2026-01 api_name: admin type: object api_type: graphql source_url: html: 'https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductVariant' md: 'https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductVariant.md' --- # Product​Variant object Requires `read_products` access scope. The `ProductVariant` object represents a version of a [product](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product) that comes in more than one [option](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductOption), such as size or color. For example, if a merchant sells t-shirts with options for size and color, then a small, blue t-shirt would be one product variant and a large, blue t-shirt would be another. Use the `ProductVariant` object to manage the full lifecycle and configuration of a product's variants. Common use cases for using the `ProductVariant` object include: * Tracking inventory for each variant * Setting unique prices for each variant * Assigning barcodes and SKUs to connect variants to fulfillment services * Attaching variant-specific images and media * Setting delivery and tax requirements * Supporting product bundles, subscriptions, and selling plans A `ProductVariant` is associated with a parent [`Product`](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product) object. `ProductVariant` serves as the central link between a product's merchandising configuration, inventory, pricing, fulfillment, and sales channels within the GraphQL Admin API schema. Each variant can reference other GraphQL types such as: * [`InventoryItem`](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryItem): Used for inventory tracking * [`Image`](https://shopify.dev/docs/api/admin-graphql/latest/objects/Image): Used for variant-specific images * [`SellingPlanGroup`](https://shopify.dev/docs/api/admin-graphql/latest/objects/SellingPlanGroup): Used for subscriptions and selling plans Learn more about [Shopify's product model](https://shopify.dev/docs/apps/build/graphql/migrate/new-product-model/product-model-components). ## Fields * availableForSale * barcode * compareAtPrice * contextualPricing * createdAt * defaultCursor * deliveryProfile * displayName * events * id * inventoryItem * inventoryPolicy * inventoryQuantity * legacyResourceId * media * metafield * metafields * position * price * product * productParents * productVariantComponents * requiresComponents * selectedOptions * sellableOnlineQuantity * sellingPlanGroups * sellingPlanGroupsCount * showUnitPrice * sku * taxable * title * translations * unitPrice * unitPriceMeasurement * updatedAt ### Deprecated fields * image: deprecated * metafieldDefinitions: deprecated * presentmentPrices: deprecated * sellingPlanGroupCount: deprecated * storefrontId: deprecated * taxCode: deprecated *** ## Map ### Fields and connections with this object * [AbandonedCheckoutLineItem.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/AbandonedCheckoutLineItem#field-AbandonedCheckoutLineItem.fields.variant) * [CalculatedDraftOrderLineItem.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/CalculatedDraftOrderLineItem#field-CalculatedDraftOrderLineItem.fields.variant) * [CalculatedExchangeLineItem.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/CalculatedExchangeLineItem#field-CalculatedExchangeLineItem.fields.variant) * [CalculatedLineItem.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/CalculatedLineItem#field-CalculatedLineItem.fields.variant) * [CombinedListingChild.parentVariant](https://shopify.dev/docs/api/admin-graphql/latest/objects/CombinedListingChild#field-CombinedListingChild.fields.parentVariant) * [CustomerVisitProductInfo.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/CustomerVisitProductInfo#field-CustomerVisitProductInfo.fields.variant) * [DeliveryProfileItem.variants](https://shopify.dev/docs/api/admin-graphql/latest/objects/DeliveryProfileItem#field-DeliveryProfileItem.fields.variants) * [DiscountProducts.productVariants](https://shopify.dev/docs/api/admin-graphql/latest/objects/DiscountProducts#field-DiscountProducts.fields.productVariants) * [DraftOrderLineItem.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/DraftOrderLineItem#field-DraftOrderLineItem.fields.variant) * [FulfillmentOrderLineItem.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrderLineItem#field-FulfillmentOrderLineItem.fields.variant) * [InventoryItem.variants](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryItem#field-InventoryItem.fields.variants) * [LineItem.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/LineItem#field-LineItem.fields.variant) * [OrderStagedChangeAddVariant.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/OrderStagedChangeAddVariant#field-OrderStagedChangeAddVariant.fields.variant) * [PriceListPrice.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/PriceListPrice#field-PriceListPrice.fields.variant) * [PriceRuleItemEntitlements.productVariants](https://shopify.dev/docs/api/admin-graphql/latest/objects/PriceRuleItemEntitlements#field-PriceRuleItemEntitlements.fields.productVariants) * [PriceRuleLineItemPrerequisites.productVariants](https://shopify.dev/docs/api/admin-graphql/latest/objects/PriceRuleLineItemPrerequisites#field-PriceRuleLineItemPrerequisites.fields.productVariants) * [Product.variants](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.variants) * [ProductBundleComponent.componentVariants](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductBundleComponent#field-ProductBundleComponent.fields.componentVariants) * [ProductComponentType.componentVariants](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductComponentType#field-ProductComponentType.fields.componentVariants) * [ProductComponentType.nonComponentVariants](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductComponentType#field-ProductComponentType.fields.nonComponentVariants) * [ProductVariantComponent.productVariant](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductVariantComponent#field-ProductVariantComponent.fields.productVariant) * [ProductVariantConnection.nodes](https://shopify.dev/docs/api/admin-graphql/latest/connections/ProductVariantConnection#returns-nodes) * [ProductVariantEdge.node](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductVariantEdge#field-ProductVariantEdge.fields.node) * [QuantityPriceBreak.variant](https://shopify.dev/docs/api/admin-graphql/latest/objects/QuantityPriceBreak#field-QuantityPriceBreak.fields.variant) * [QuantityRule.productVariant](https://shopify.dev/docs/api/admin-graphql/latest/objects/QuantityRule#field-QuantityRule.fields.productVariant) * [SellingPlanGroup.productVariants](https://shopify.dev/docs/api/admin-graphql/latest/objects/SellingPlanGroup#field-SellingPlanGroup.fields.productVariants) * [SubscriptionBillingAttemptInsufficientStockProductVariantsError.insufficientStockProductVariants](https://shopify.dev/docs/api/admin-graphql/latest/objects/SubscriptionBillingAttemptInsufficientStockProductVariantsError#field-SubscriptionBillingAttemptInsufficientStockProductVariantsError.fields.insufficientStockProductVariants) ### Possible type in * [Comment​Event​Embed](https://shopify.dev/docs/api/admin-graphql/latest/unions/CommentEventEmbed) * [Delivery​Promise​Participant​Owner](https://shopify.dev/docs/api/admin-graphql/latest/unions/DeliveryPromiseParticipantOwner) * [Metafield​Reference](https://shopify.dev/docs/api/admin-graphql/latest/unions/MetafieldReference) * [Metafield​Referencer](https://shopify.dev/docs/api/admin-graphql/latest/unions/MetafieldReferencer) *** ## Queries * productVariant * productVariantByIdentifier * productVariants *** ## ProductVariant Queries ### Queried by * [product​Variant](https://shopify.dev/docs/api/admin-graphql/latest/queries/productVariant) * [product​Variant​By​Identifier](https://shopify.dev/docs/api/admin-graphql/latest/queries/productVariantByIdentifier) * [product​Variants](https://shopify.dev/docs/api/admin-graphql/latest/queries/productVariants) *** ## Mutations * productVariantAppendMedia * productVariantDetachMedia * productVariantJoinSellingPlanGroups * productVariantLeaveSellingPlanGroups * productVariantRelationshipBulkUpdate * productVariantsBulkCreate * productVariantsBulkUpdate * quantityPricingByVariantUpdate *** ## ProductVariant Mutations ### Mutated by * [product​Variant​Append​Media](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productVariantAppendMedia) * [product​Variant​Detach​Media](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productVariantDetachMedia) * [product​Variant​Join​Selling​Plan​Groups](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productVariantJoinSellingPlanGroups) * [product​Variant​Leave​Selling​Plan​Groups](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productVariantLeaveSellingPlanGroups) * [product​Variant​Relationship​Bulk​Update](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productVariantRelationshipBulkUpdate) * [product​Variants​Bulk​Create](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productVariantsBulkCreate) * [product​Variants​Bulk​Update](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productVariantsBulkUpdate) * [quantity​Pricing​By​Variant​Update](https://shopify.dev/docs/api/admin-graphql/latest/mutations/quantityPricingByVariantUpdate) *** ## Interfaces * HasEvents * HasMetafieldDefinitions * HasMetafields * HasPublishedTranslations * LegacyInteroperability * Navigable * Node *** ## ProductVariant Implements ### Implements * [Has​Events](https://shopify.dev/docs/api/admin-graphql/latest/interfaces/HasEvents) * [Has​Metafield​Definitions](https://shopify.dev/docs/api/admin-graphql/latest/interfaces/HasMetafieldDefinitions) * [Has​Metafields](https://shopify.dev/docs/api/admin-graphql/latest/interfaces/HasMetafields) * [Has​Published​Translations](https://shopify.dev/docs/api/admin-graphql/latest/interfaces/HasPublishedTranslations) * [Legacy​Interoperability](https://shopify.dev/docs/api/admin-graphql/latest/interfaces/LegacyInteroperability) * [Navigable](https://shopify.dev/docs/api/admin-graphql/latest/interfaces/Navigable) * [Node](https://shopify.dev/docs/api/admin-graphql/latest/interfaces/Node)