Product
read_products access scope.Subscribe to field-level changes on the Product GraphQL Admin API object. You can subscribe to created, deleted, and updated resources, as well as changes to specific fields.
Each topic corresponds to a commerce resource (for example, a product) that can exist independently within its domain. Child entities that depend on a parent within the same domain don't have their own topic. Instead, changes to child entities trigger a delivery on the parent topic. Calculated fields, derived fields, auto-updated timestamps, and cross-domain fields aren't available as triggers.
A subscription can combine multiple triggers. Your custom query can include any data available in the GraphQL Admin API, including fields unrelated to the subscribed topic, so each delivery contains exactly what your app needs.
Anchor to Supported triggersSupported triggers
Field-level triggers for Product subscriptions.
All triggers require the read_products access scope, and those triggers that require additional scopes are documented where relevant. Deprecated triggers are listed last.
Subscriptions can be made up of multiple triggers. When a merchant action impacts multiple triggers, the deliveries share the same shopify-event-id header. Each individually updated field has a unique composite key in the shopify-webhook-id header. Use this value to differentiate duplicate deliveries.
Custom queries aren't limited to Product. They can query the full GraphQL Admin API.
Fires when events involve the Product object, which lets you manage products in a merchant’s store.
The "create" and "delete" actions are only relevant within the context of this parent topic. Use to follow or replicate impacted data after a delete event. Define a custom query to retrieve specific fields from create events.
Collect details about changes to the object by subscribing to the trigger along with the "update" action, though it's recommended that you narrow your subscription to one of the other triggers below.
Variables:
Anchor to list-of-topics-product.bundleComponentsproduct .bundleComponents
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field contains a list of components
that are associated with a product in a bundle.
Variables:
Anchor to list-of-topics-product.bundleComponents.quantityproduct .bundleComponents .quantity
Fires when the quantity field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The quantity field represents the quantity of the component product set for this bundle line.
Variables:
Anchor to list-of-topics-product.bundleComponents.quantityOptionproduct .bundleComponents .quantityOption
Fires when the field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the quantity as option of the component product.
Variables:
Anchor to list-of-topics-product.categoryproduct .category
Fires when the category field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The category field represents the category of a product
from Shopify's Standard Product Taxonomy.
Variables:
Anchor to list-of-topics-product.combinedListingproduct .combinedListing
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents a special product type that combines separate products from a store into a single product listing.
Variables:
Anchor to list-of-topics-product.combinedListing.combinedListingChildren.parentVariantproduct .combinedListing .combinedListingChildren .parentVariant
Anchor to list-of-topics-product.combinedListing.combinedListingChildren.productproduct .combinedListing .combinedListingChildren .product
Fires when the product field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The product field represents the child product.
Variables: ,
Anchor to list-of-topics-product.combinedListingRoleproduct .combinedListingRole
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the role of the product
in a combined listing.
Variables:
Anchor to list-of-topics-product.descriptionHtmlproduct .descriptionHtml
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the description of the product, with
HTML tags.
Variables:
Anchor to list-of-topics-product.giftCardTemplateSuffixproduct .giftCardTemplateSuffix
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the theme template that's used when customers view the gift card in a store.
Variables:
Anchor to list-of-topics-product.handleproduct .handle
Fires when the handle field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The handle field represents a unique, human-readable string of the product's title.
Variables:
Anchor to list-of-topics-product.mediaproduct .media
Fires when the media field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The media field represents the media associated with the product.
Variables: ,
Anchor to list-of-topics-product.optionsproduct .options
Fires when the options field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The options field contains a list of product options.
Variables: ,
Anchor to list-of-topics-product.options.linkedMetafield.keyproduct .options .linkedMetafield .key
Fires when the key field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
Key of the metafield the option is linked to.
Variables: ,
Anchor to list-of-topics-product.options.linkedMetafield.namespaceproduct .options .linkedMetafield .namespace
Fires when the namespace field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
Namespace of the metafield the option is linked to.
Variables: ,
Anchor to list-of-topics-product.options.nameproduct .options .name
Fires when the name field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The name field represents the product option’s name.
Variables: ,
Anchor to list-of-topics-product.options.optionValuesproduct .options .optionValues
Fires when the field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
Similar to values, option_values returns all the corresponding option value objects to the product option, including values not assigned to any variants.
Variables: , ,
Anchor to list-of-topics-product.options.optionValues.linkedMetafieldValueproduct .options .optionValues .linkedMetafieldValue
Fires when the field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the value of the linked metafield.
Variables: , ,
Anchor to list-of-topics-product.options.optionValues.nameproduct .options .optionValues .name
Fires when the name field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The name field represents the name of the product option value.
Variables: , ,
Anchor to list-of-topics-product.options.optionValues.swatch.colorproduct .options .optionValues .swatch .color
Fires when the color field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The color field represents the color representation of the swatch.
Variables: , ,
Anchor to list-of-topics-product.options.optionValues.swatch.imageproduct .options .optionValues .swatch .image
Fires when the image field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The image field represents an image representation of the swatch.
Variables: , ,
Anchor to list-of-topics-product.options.positionproduct .options .position
Fires when the position field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The position field represents the product option's position.
Variables: ,
Anchor to list-of-topics-product.productTypeproduct .productType
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the product type
that merchants define.
Variables:
Anchor to list-of-topics-product.requiresSellingPlanproduct .requiresSellingPlan
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field indicates whether the product can only be purchased with
a selling plan.
Variables:
Anchor to list-of-topics-product.statusproduct .status
Fires when the status field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The status field represents the product status,
which controls visibility across all sales channels.
Variables:
Anchor to list-of-topics-product.templateSuffixproduct .templateSuffix
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the theme template that's used when customers view the product in a store.
Variables:
Anchor to list-of-topics-product.titleproduct .title
Fires when the title field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The title field represents the name for the product that displays to customers.
Variables:
Anchor to list-of-topics-product.variantsproduct .variants
Fires when the variants field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The variants field contains a list of variants associated with the product.
Variables: ,
Anchor to list-of-topics-product.variants.barcodeproduct .variants .barcode
Fires when the barcode field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The barcode field represents the value of the barcode associated with the product.
Variables: ,
Anchor to list-of-topics-product.variants.compareAtPriceproduct .variants .compareAtPrice
Fires when the field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the compare-at price of the variant in the default shop currency.
Variables: ,
Anchor to list-of-topics-product.variants.inventoryPolicyproduct .variants .inventoryPolicy
Fires when the field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field indicates whether customers are allowed to place an order for the product variant when it's out of stock.
Variables: ,
Anchor to list-of-topics-product.variants.mediaproduct .variants .media
Fires when the media field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The media field represents the media associated with the product variant.
Variables: , ,
Anchor to list-of-topics-product.variants.positionproduct .variants .position
Fires when the position field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The position field represents the order of the product variant in the list of product variants.
Variables: ,
Anchor to list-of-topics-product.variants.priceproduct .variants .price
Fires when the price field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The price field represents the price of the product variant in the default shop currency.
Variables: ,
Anchor to list-of-topics-product.variants.productVariantComponentsproduct .variants .productVariantComponents
Fires when the field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field contains a list of the product variant components.
Variables: ,
Anchor to list-of-topics-product.variants.productVariantComponents.quantityproduct .variants .productVariantComponents .quantity
Fires when the quantity field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The quantity field represents the required quantity of the component.
Variables: ,
Anchor to list-of-topics-product.variants.requiresComponentsproduct .variants .requiresComponents
Fires when the field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field indicates whether a product variant requires components.
Variables: ,
Anchor to list-of-topics-product.variants.showUnitPriceproduct .variants .showUnitPrice
Fires when the field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field indicates whether to show the unit price for this product variant.
Variables: ,
Anchor to list-of-topics-product.variants.taxableproduct .variants .taxable
Fires when the taxable field on the object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The taxable field indicates whether a tax is charged when the product variant is sold.
Variables: ,
Anchor to list-of-topics-product.vendorproduct .vendor
Fires when the vendor field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The vendor field represents the name of the product's vendor.
Variables:
Anchor to list-of-topics-product.bodyHtmlproduct .bodyHtml
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the description of the product, with
HTML tags.
Variables:
Anchor to list-of-topics-product.customProductTypeproduct .customProductType
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the custom product type specified by the merchant.
Variables:
Anchor to list-of-topics-product.imagesproduct .images
Fires when the images field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The images field represents the images associated with the product.
Variables: ,
Anchor to list-of-topics-product.productCategoryproduct .productCategory
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the product category specified by the merchant.
Variables:
Anchor to list-of-topics-product.standardizedProductTypeproduct .standardizedProductType
Fires when the field on the Product object changes.
Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The field represents the standardized product type in the Shopify product taxonomy.
Variables: