Product
read_products access scope.read_products access scope.:Supported actions: create, update, delete
Subscribe to field-level changes on the Product GraphQL Admin API object.
Each topic corresponds to a commerce resource 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.
shopify.app.toml
Anchor to Supported triggersSupported triggers
Field-level triggers for Product subscriptions.
All triggers require the read_products access scope. Those triggers that require additional scopes are documented where relevant. Deprecated triggers are listed last.
Subscriptions can include multiple triggers. Use the shopify-webhook-id header for deduplication when handling 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.
product.* is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under product, including nested triggers. Use a more specific trigger to limit events to the fields you need.
Variables:
Fires when the field on the Product object changes.
is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under , including nested triggers. Use a more specific trigger to limit events to the fields you need.
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:
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:
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:
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:
Fires when the field on the Product object changes.
is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under , including nested triggers. Use a more specific trigger to limit events to the fields you need.
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:
Fires when the field on the object changes.
is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under , including nested triggers. Use a more specific trigger to limit events to the fields you need.
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 child products in the combined listing.
Variables:
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: ,
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:
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:
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:
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:
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: ,
Fires when the metafield field on the Product object changes.
product.metafield(namespace: String!, key: String!).* is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under product.metafield(namespace: String!, key: String!), including nested triggers. Use a more specific trigger to limit events to the fields you need.
Include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The metafield field represents a custom field, including its namespace and key, that's associated with a Shopify resource for the purposes of adding and storing additional information.
Variables: , ,
Fires when the metafield field on the Product object changes.
product.metafield(namespace: String!).* is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under product.metafield(namespace: String!), including nested triggers. Use a more specific trigger to limit events to the fields you need.
Include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
This subscription omits the optional argument metafield.key.
The metafield field represents a custom field, including its namespace and key, that's associated with a Shopify resource for the purposes of adding and storing additional information.
Variables: , ,
Fires when the value field on the Metafield 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 value field represents the data stored in the metafield.
Variables: , ,
Fires when the value field on the Metafield 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 .
This subscription omits the optional argument metafield.key.
The value field represents the data stored in the metafield.
Variables: , ,
Fires when the options field on the Product object changes.
product.options.* is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under product.options, including nested triggers. Use a more specific trigger to limit events to the fields you need.
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: ,
Fires when the field on the object changes.
is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under , including nested triggers. Use a more specific trigger to limit events to the fields you need.
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 metafield identifier linked to this option.
Variables: ,
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: ,
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: ,
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: ,
Fires when the field on the object changes.
is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under , including nested triggers. Use a more specific trigger to limit events to the fields you need.
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: , ,
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: , ,
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: , ,
Fires when the swatch field on the object changes.
is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under , including nested triggers. Use a more specific trigger to limit events to the fields you need.
Include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The swatch field represents the swatch associated with the product option value.
Variables: , ,
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: , ,
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: , ,
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: ,
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:
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:
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:
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:
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:
Fires when the variants field on the Product object changes.
product.variants.* is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under product.variants, including nested triggers. Use a more specific trigger to limit events to the fields you need.
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: ,
Fires when the barcodes 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 barcodes field represents the barcodes associated with the product variant.
Variables: ,
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: ,
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: ,
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: , ,
Fires when the metafield field on the object changes.
product.variants.metafield(namespace: String!, key: String!).* is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under product.variants.metafield(namespace: String!, key: String!), including nested triggers. Use a more specific trigger to limit events to the fields you need.
Include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
The metafield field represents a custom field, including its namespace and key, that's associated with a Shopify resource for the purposes of adding and storing additional information.
Variables: , , ,
Fires when the metafield field on the object changes.
product.variants.metafield(namespace: String!).* is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under product.variants.metafield(namespace: String!), including nested triggers. Use a more specific trigger to limit events to the fields you need.
Include the field in a custom query to retrieve updated data from the payload.
You can trace the field in subsequent requests using .
This subscription omits the optional argument metafield.key.
The metafield field represents a custom field, including its namespace and key, that's associated with a Shopify resource for the purposes of adding and storing additional information.
Variables: , , ,
Fires when the value field on the Metafield 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 value field represents the data stored in the metafield.
Variables: , , ,
Fires when the value field on the Metafield 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 .
This subscription omits the optional argument metafield.key.
The value field represents the data stored in the metafield.
Variables: , , ,
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: ,
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: ,
Fires when the field on the object changes.
is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under , including nested triggers. Use a more specific trigger to limit events to the fields you need.
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: ,
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: ,
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: ,
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: ,
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: ,
Fires when the title 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 title field represents the title of the product variant.
Variables: ,
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:
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: ,