--- title: ProductSetOperation - GraphQL Admin description: >- An entity that represents details of an asynchronous [ProductSet](https://shopify.dev/api/admin-graphql/current/mutations/productSet) mutation. By querying this entity with the [productOperation](https://shopify.dev/api/admin-graphql/current/queries/productOperation) query using the ID that was returned [when the product was created or updated](https://shopify.dev/api/admin/migrate/new-product-model/sync-data#create-a-product-with-variants-and-options-asynchronously), this can be used to check the status of an operation. The `status` field indicates whether the operation is `CREATED`, `ACTIVE`, or `COMPLETE`. The `product` field provides the details of the created or updated product. The `userErrors` field provides mutation errors that occurred during the operation. api_version: unstable api_name: admin source_url: html: >- https://shopify.dev/docs/api/admin-graphql/unstable/objects/ProductSetOperation md: >- https://shopify.dev/docs/api/admin-graphql/unstable/objects/ProductSetOperation.md --- # Product​Set​Operation object Requires `read_products` access scope. An entity that represents details of an asynchronous [ProductSet](https://shopify.dev/api/admin-graphql/current/mutations/productSet) mutation. By querying this entity with the [productOperation](https://shopify.dev/api/admin-graphql/current/queries/productOperation) query using the ID that was returned [when the product was created or updated](https://shopify.dev/api/admin/migrate/new-product-model/sync-data#create-a-product-with-variants-and-options-asynchronously), this can be used to check the status of an operation. The `status` field indicates whether the operation is `CREATED`, `ACTIVE`, or `COMPLETE`. The `product` field provides the details of the created or updated product. The `userErrors` field provides mutation errors that occurred during the operation. ## Fields * id [ID!](https://shopify.dev/docs/api/admin-graphql/unstable/scalars/ID) non-null A globally-unique ID. * product [Product](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Product) The product on which the operation is being performed. * status [Product​Operation​Status!](https://shopify.dev/docs/api/admin-graphql/unstable/enums/ProductOperationStatus) non-null The status of this operation. * user​Errors [\[Product​Set​User​Error!\]!](https://shopify.dev/docs/api/admin-graphql/unstable/objects/ProductSetUserError) non-null Returns mutation errors occurred during background mutation processing. *** ## Map No referencing types *** ## Mutations * [product​Set](https://shopify.dev/docs/api/admin-graphql/unstable/mutations/productSet) mutation Performs multiple operations to create or update products in a single request. Use the `productSet` mutation to sync information from an external data source into Shopify, manage large product catalogs, and perform batch updates. The mutation is helpful for bulk product management, including price adjustments, inventory updates, and product lifecycle management. The behavior of `productSet` depends on the type of field it's modifying: * **For list fields**: Creates new entries, updates existing entries, and deletes existing entries that aren't included in the mutation's input. Common examples of list fields include [`collections`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productSet#arguments-input.fields.collections), [`metafields`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productSet#arguments-input.fields.metafields), and [`variants`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productSet#arguments-input.fields.variants). * **For all other field types**: Updates only the included fields. Any omitted fields will remain unchanged. *** Note By default, stores have a limit of 100 product variants for each product. You can create a development store and [enable the **Extended Variants** developer preview](https://shopify.dev/docs/apps/build/graphql/migrate/new-product-model/migrate-and-test#create-a-development-store-that-allows-2-048-variants-per-product) to create or update a maximum of 2,048 product variants in a single operation. *** You can run `productSet` in one of the following modes: * **Synchronously**: Returns the updated product in the response. * **Asynchronously**: Returns a [`ProductSetOperation`](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductSetOperation) object. Use the [`productOperation`](https://shopify.dev/api/admin-graphql/latest/queries/productOperation) query to check the status of the operation and retrieve details of the updated product and its product variants. If you need to only manage product variants, then use one of the following mutations: * [`productVariantsBulkCreate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productVariantsBulkCreate) * [`productVariantsBulkUpdate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productVariantsBulkUpdate) * [`productVariantsBulkDelete`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productVariantsBulkDelete) If you need to only manage product options, then use one of the following mutations: * [`productOptionsCreate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productOptionsCreate) * [`productOptionUpdate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productOptionUpdate) * [`productOptionsReorder`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productOptionsReorder) * [`productOptionsDelete`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productOptionsDelete) Learn more about [syncing product data from an external source](https://shopify.dev/docs/apps/build/graphql/migrate/new-product-model/sync-data). *** ## <\~> ProductSetOperation Mutations ### Mutated by * <\~>[product​Set](https://shopify.dev/docs/api/admin-graphql/unstable/mutations/productSet) *** ## Interfaces * * [Node](https://shopify.dev/docs/api/admin-graphql/unstable/interfaces/Node) interface * [Product​Operation](https://shopify.dev/docs/api/admin-graphql/unstable/interfaces/ProductOperation) interface *** ## ||-ProductSetOperation Implements ### Implements * ||-[Node](https://shopify.dev/docs/api/admin-graphql/unstable/interfaces/Node) * ||-[Product​Operation](https://shopify.dev/docs/api/admin-graphql/unstable/interfaces/ProductOperation)